<?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>36195</bug_id>
          
          <creation_ts>2010-03-16 14:52:01 -0700</creation_ts>
          <short_desc>Add layout test flakiness (diagnostics) dashboard to TestResultServer appengine</short_desc>
          <delta_ts>2010-03-26 11:14:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Victor Wang">victorw</reporter>
          <assigned_to name="Victor Wang">victorw</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>200454</commentid>
    <comment_count>0</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-16 14:52:01 -0700</bug_when>
    <thetext>Host layout test flakiness dashboard in TestResultServer appengine. Flakiness dashboard is a tool (used by chromium) to monitor layout test status and help diagnose layout test regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200475</commentid>
    <comment_count>1</comment_count>
      <attachid>50845</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-16 15:34:43 -0700</bug_when>
    <thetext>Created attachment 50845
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200476</commentid>
    <comment_count>2</comment_count>
      <attachid>50846</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-16 15:39:32 -0700</bug_when>
    <thetext>Created attachment 50846
Proposed patch - remove extra empty line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203273</commentid>
    <comment_count>3</comment_count>
      <attachid>51466</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-23 16:10:15 -0700</bug_when>
    <thetext>Created attachment 51466
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203351</commentid>
    <comment_count>4</comment_count>
      <attachid>51466</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-24 00:41:18 -0700</bug_when>
    <thetext>Comment on attachment 51466
Proposed Patch

+ self.response.out.write(files[0].data)

Mime type?  Character set?

+ self.response.out.write(&quot;\n&quot;.join(errors))

XSS?

+ DashboardFile.delete_file(file)

CSRF?  Public delete file URL?

+ http://src.chromium.org/

Wrong project?

+ url = SVN_PATH_DASHBOARD + name

URL encoding?

Tests???</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203610</commentid>
    <comment_count>5</comment_count>
      <attachid>51545</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-24 14:45:54 -0700</bug_when>
    <thetext>Created attachment 51545
Patch per comment #4

Thanks for your good inputs, see my comments inline.

(In reply to comment #4)
&gt; (From update of attachment 51466 [details])
&gt; + self.response.out.write(files[0].data)
&gt; 
&gt; Mime type?  Character set?
done

&gt; 
&gt; + self.response.out.write(&quot;\n&quot;.join(errors))
&gt; 
&gt; XSS?
ya, thanks for spotting this. Actually no need to write errors to response.out. The error messages is set in response.status. Removed.


&gt; 
&gt; + DashboardFile.delete_file(file)
&gt; 
&gt; CSRF?  Public delete file URL?
Added code to only allow AE admins to do this and only shows the &quot;delete&quot; links in file list for admin account.

&gt; 
&gt; + http://src.chromium.org/
&gt; 
&gt; Wrong project?
For now, the flakiness dashboard source code is still in chromium tree as it has code that are shared with other chromium tests. I think we will either move them upstream or have an upstream version so that non-chromium port can be benefit from this tool.


&gt; 
&gt; + url = SVN_PATH_DASHBOARD + name
&gt; 
&gt; URL encoding?
done

&gt; 
&gt; Tests???
There is a JAVA version of AE test framework but no python version yet (confirmed with Google AE team). I prefer waiting until a python version is released instead of making my own version for AE testing like datastore, blobstore, handler etc, thoughts? I could file a bug for adding test for AppEngine once it is ready if needed...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203613</commentid>
    <comment_count>6</comment_count>
      <attachid>51547</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-24 14:49:34 -0700</bug_when>
    <thetext>Created attachment 51547
Correct app name and remove a few unused lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204279</commentid>
    <comment_count>7</comment_count>
      <attachid>51547</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-25 16:06:09 -0700</bug_when>
    <thetext>Comment on attachment 51547
Correct app name and remove a few unused lines.

Thanks for addressing my feedback.  I&apos;m not super excited about the dependency on the chromium source server, but I don&apos;t see a better solution in the meantime.

We have another AppEngine app in QueueStatusServer, which also doesn&apos;t have any test coverage.  I&apos;m deathly afraid of touching it for that reason.  A testing framework would certainly be nice.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204338</commentid>
    <comment_count>8</comment_count>
      <attachid>51700</attachid>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-03-25 17:40:08 -0700</bug_when>
    <thetext>Created attachment 51700
Remove CRs in index.yaml

Looks like mac-ews does not like CRs in index.yaml (generated by AE while I am running on windows), remove CRs in index.yaml. Hope this will make mac-ews happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204687</commentid>
    <comment_count>9</comment_count>
      <attachid>51700</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-26 11:14:51 -0700</bug_when>
    <thetext>Comment on attachment 51700
Remove CRs in index.yaml

Clearing flags on attachment: 51700

Committed r56635: &lt;http://trac.webkit.org/changeset/56635&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204688</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-26 11:14:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50845</attachid>
            <date>2010-03-16 15:34:43 -0700</date>
            <delta_ts>2010-03-16 15:39:32 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>flakiness.patch</filename>
            <type>text/plain</type>
            <size>22615</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2MDc1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDMtMTYgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSG9zdCBsYXlvdXQgdGVzdCBmbGFraW5lc3MgZGFzaGJvYXJkIGluIFRlc3RS
ZXN1bHRTZXJ2ZXIgYXBwZW5naW5lLgorCisgICAgICAgIEZsYWtpbmVzcyBkYXNoYm9hcmQgaXMg
YSB0b29sIHRvIG1vbml0b3IgbGF5b3V0IHRlc3Qgc3RhdHVzIGFuZAorICAgICAgICBoZWxwIGxh
eW91dCB0ZXN0IHJlZ3Jlc3Npb24gZGlhZ25vc3RpY3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MTk1CisKKyAgICAgICAgKiBUZXN0UmVzdWx0
U2VydmVyL2hhbmRsZXJzL2Rhc2hib2FyZGhhbmRsZXIucHk6IEFkZGVkLgorICAgICAgICAgLSBO
ZXcgaGFuZGxlciB0byBoYW5kbGUgZGFzaGJvYXJkIHJlcXVlc3QKKyAgICAgICAgKiBUZXN0UmVz
dWx0U2VydmVyL2hhbmRsZXJzL21lbnUucHk6CisgICAgICAgICAtIEFkZCBuZXcgZGFzaGJvYXJk
IGxpbmtzCisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVycy90ZXN0ZmlsZWhhbmRs
ZXIucHk6CisgICAgICAgICAtIFJlcXVlc3Qgcm91dGVzIHJlZmFjdG9yeQorICAgICAgICAqIFRl
c3RSZXN1bHRTZXJ2ZXIvaW5kZXgueWFtbDoKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL21h
aW4ucHk6CisgICAgICAgICAtIEFkZCBuZXcgZGFzaGJvYXJkIHJlcXVlc3Qgcm91dGVzIGFuZCBy
ZWZhY3RvciB0ZXN0IHJlc3VsdCBmaWxlIHJvdW50ZXMuCisgICAgICAgICogVGVzdFJlc3VsdFNl
cnZlci9tb2RlbC9kYXNoYm9hcmRmaWxlLnB5OiBBZGRlZC4KKyAgICAgICAgIC0gTW9kZWwgdG8g
YWNjZXNzIGRhdGFzdG9yZSBmb3IgZGFzaGJvYXJkIGZpbGVzCisgICAgICAgICogVGVzdFJlc3Vs
dFNlcnZlci9tb2RlbC90ZXN0ZmlsZS5weToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0
eWxlc2hlZXRzL2Rhc2hib2FyZGZpbGUuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0UmVzdWx0
U2VydmVyL3RlbXBsYXRlcy9kYXNoYm9hcmRmaWxlbGlzdC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBUZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy9zaG93ZmlsZWxpc3QuaHRtbDoKKwogMjAxMC0w
My0xNiAgSm9hbm1hcmllIERpZ2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0
U2VydmVyL2luZGV4LnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9pbmRleC55YW1sCShyZXZpc2lvbiA1NjA3MykKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvaW5kZXgueWFtbAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMSw1MCBAQAotaW5k
ZXhlczoNCi0NCi0jIEFVVE9HRU5FUkFURUQNCi0NCi0jIFRoaXMgaW5kZXgueWFtbCBpcyBhdXRv
bWF0aWNhbGx5IHVwZGF0ZWQgd2hlbmV2ZXIgdGhlIGRldl9hcHBzZXJ2ZXINCi0jIGRldGVjdHMg
dGhhdCBhIG5ldyB0eXBlIG9mIHF1ZXJ5IGlzIHJ1bi4gIElmIHlvdSB3YW50IHRvIG1hbmFnZSB0
aGUNCi0jIGluZGV4LnlhbWwgZmlsZSBtYW51YWxseSwgcmVtb3ZlIHRoZSBhYm92ZSBtYXJrZXIg
bGluZSAodGhlIGxpbmUNCi0jIHNheWluZyAiIyBBVVRPR0VORVJBVEVEIikuICBJZiB5b3Ugd2Fu
dCB0byBtYW5hZ2Ugc29tZSBpbmRleGVzDQotIyBtYW51YWxseSwgbW92ZSB0aGVtIGFib3ZlIHRo
ZSBtYXJrZXIgbGluZS4gIFRoZSBpbmRleC55YW1sIGZpbGUgaXMNCi0jIGF1dG9tYXRpY2FsbHkg
dXBsb2FkZWQgdG8gdGhlIGFkbWluIGNvbnNvbGUgd2hlbiB5b3UgbmV4dCBkZXBsb3kNCi0jIHlv
dXIgYXBwbGljYXRpb24gdXNpbmcgYXBwY2ZnLnB5Lg0KLQ0KLS0ga2luZDogVGVzdEZpbGUNCi0g
IHByb3BlcnRpZXM6DQotICAtIG5hbWU6IGJ1aWxkZXINCi0gIC0gbmFtZTogZGF0ZQ0KLSAgICBk
aXJlY3Rpb246IGRlc2MNCi0NCi0tIGtpbmQ6IFRlc3RGaWxlDQotICBwcm9wZXJ0aWVzOg0KLSAg
LSBuYW1lOiBidWlsZGVyDQotICAtIG5hbWU6IG5hbWUNCi0gIC0gbmFtZTogZGF0ZQ0KLSAgICBk
aXJlY3Rpb246IGRlc2MNCi0NCi0tIGtpbmQ6IFRlc3RGaWxlDQotICBwcm9wZXJ0aWVzOg0KLSAg
LSBuYW1lOiBidWlsZGVyDQotICAtIG5hbWU6IG5hbWUNCi0gIC0gbmFtZTogdGVzdF90eXBlDQot
ICAtIG5hbWU6IGRhdGUNCi0gICAgZGlyZWN0aW9uOiBkZXNjDQotDQotLSBraW5kOiBUZXN0Rmls
ZQ0KLSAgcHJvcGVydGllczoNCi0gIC0gbmFtZTogYnVpbGRlcj0NCi0gIC0gbmFtZTogbmFtZT0N
Ci0gIC0gbmFtZTogZGF0ZQ0KLSAgICBkaXJlY3Rpb246IGRlc2MNCi0NCi0tIGtpbmQ6IFRlc3RG
aWxlDQotICBwcm9wZXJ0aWVzOg0KLSAgLSBuYW1lOiBuYW1lDQotICAtIG5hbWU6IGRhdGUNCi0g
ICAgZGlyZWN0aW9uOiBkZXNjDQotDQotLSBraW5kOiBUZXN0RmlsZQ0KLSAgcHJvcGVydGllczoN
Ci0gIC0gbmFtZTogdGVzdF90eXBlDQotICAtIG5hbWU6IGRhdGUNCi0gICAgZGlyZWN0aW9uOiBk
ZXNjDQoraW5kZXhlczoKKworIyBBVVRPR0VORVJBVEVECisKKyMgVGhpcyBpbmRleC55YW1sIGlz
IGF1dG9tYXRpY2FsbHkgdXBkYXRlZCB3aGVuZXZlciB0aGUgZGV2X2FwcHNlcnZlcgorIyBkZXRl
Y3RzIHRoYXQgYSBuZXcgdHlwZSBvZiBxdWVyeSBpcyBydW4uICBJZiB5b3Ugd2FudCB0byBtYW5h
Z2UgdGhlCisjIGluZGV4LnlhbWwgZmlsZSBtYW51YWxseSwgcmVtb3ZlIHRoZSBhYm92ZSBtYXJr
ZXIgbGluZSAodGhlIGxpbmUKKyMgc2F5aW5nICIjIEFVVE9HRU5FUkFURUQiKS4gIElmIHlvdSB3
YW50IHRvIG1hbmFnZSBzb21lIGluZGV4ZXMKKyMgbWFudWFsbHksIG1vdmUgdGhlbSBhYm92ZSB0
aGUgbWFya2VyIGxpbmUuICBUaGUgaW5kZXgueWFtbCBmaWxlIGlzCisjIGF1dG9tYXRpY2FsbHkg
dXBsb2FkZWQgdG8gdGhlIGFkbWluIGNvbnNvbGUgd2hlbiB5b3UgbmV4dCBkZXBsb3kKKyMgeW91
ciBhcHBsaWNhdGlvbiB1c2luZyBhcHBjZmcucHkuCisKKy0ga2luZDogRGFzaGJvYXJkRmlsZQor
ICBwcm9wZXJ0aWVzOgorICAtIG5hbWU6IG5hbWUKKyAgLSBuYW1lOiBkYXRlCisgICAgZGlyZWN0
aW9uOiBkZXNjCisKKy0ga2luZDogVGVzdEZpbGUKKyAgcHJvcGVydGllczoKKyAgLSBuYW1lOiBi
dWlsZGVyCisgIC0gbmFtZTogZGF0ZQorICAgIGRpcmVjdGlvbjogZGVzYworCistIGtpbmQ6IFRl
c3RGaWxlCisgIHByb3BlcnRpZXM6CisgIC0gbmFtZTogYnVpbGRlcgorICAtIG5hbWU6IG5hbWUK
KyAgLSBuYW1lOiBkYXRlCisgICAgZGlyZWN0aW9uOiBkZXNjCisKKy0ga2luZDogVGVzdEZpbGUK
KyAgcHJvcGVydGllczoKKyAgLSBuYW1lOiBidWlsZGVyCisgIC0gbmFtZTogbmFtZQorICAtIG5h
bWU6IHRlc3RfdHlwZQorICAtIG5hbWU6IGRhdGUKKyAgICBkaXJlY3Rpb246IGRlc2MKKworLSBr
aW5kOiBUZXN0RmlsZQorICBwcm9wZXJ0aWVzOgorICAtIG5hbWU6IG5hbWUKKyAgLSBuYW1lOiBk
YXRlCisgICAgZGlyZWN0aW9uOiBkZXNjCisKKy0ga2luZDogVGVzdEZpbGUKKyAgcHJvcGVydGll
czoKKyAgLSBuYW1lOiB0ZXN0X3R5cGUKKyAgLSBuYW1lOiBkYXRlCisgICAgZGlyZWN0aW9uOiBk
ZXNjCkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL21haW4ucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tYWluLnB5CShyZXZpc2lvbiA1NjA3
MykKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbWFpbi5weQkod29ya2luZyBjb3B5
KQpAQCAtMzMsMjMgKzMzLDIyIEBAIHVzZV9saWJyYXJ5KCdkamFuZ28nLCAnMS4xJykKIGZyb20g
Z29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAogZnJvbSBnb29nbGUuYXBwZW5naW5l
LmV4dC53ZWJhcHAudXRpbCBpbXBvcnQgcnVuX3dzZ2lfYXBwCiAKLWZyb20gaGFuZGxlcnMubWVu
dSBpbXBvcnQgTWVudQotZnJvbSBoYW5kbGVycy50ZXN0ZmlsZWhhbmRsZXIgaW1wb3J0IERlbGV0
ZUZpbGUKLWZyb20gaGFuZGxlcnMudGVzdGZpbGVoYW5kbGVyIGltcG9ydCBHZXRGaWxlCi1mcm9t
IGhhbmRsZXJzLnRlc3RmaWxlaGFuZGxlciBpbXBvcnQgR2V0VXBsb2FkVXJsCi1mcm9tIGhhbmRs
ZXJzLnRlc3RmaWxlaGFuZGxlciBpbXBvcnQgVXBsb2FkCi1mcm9tIGhhbmRsZXJzLnRlc3RmaWxl
aGFuZGxlciBpbXBvcnQgVXBsb2FkRm9ybQotZnJvbSBoYW5kbGVycy50ZXN0ZmlsZWhhbmRsZXIg
aW1wb3J0IFVwbG9hZFN0YXR1cworZnJvbSBoYW5kbGVycyBpbXBvcnQgbWVudQorZnJvbSBoYW5k
bGVycyBpbXBvcnQgZGFzaGJvYXJkaGFuZGxlcgorZnJvbSBoYW5kbGVycyBpbXBvcnQgdGVzdGZp
bGVoYW5kbGVyCiAKIHJvdXRlcyA9IFsKLSAgICAoJy9kZWxldGVmaWxlJywgRGVsZXRlRmlsZSks
Ci0gICAgKCcvZ2V0ZmlsZScsIEdldEZpbGUpLAotICAgICgnL2dldHVwbG9hZHVybCcsIEdldFVw
bG9hZFVybCksCi0gICAgKCcvdXBsb2FkJywgVXBsb2FkKSwKLSAgICAoJy91cGxvYWRmYWlsJywg
VXBsb2FkU3RhdHVzKSwKLSAgICAoJy91cGxvYWRmb3JtJywgVXBsb2FkRm9ybSksCi0gICAgKCcv
dXBsb2Fkc3VjY2VzcycsIFVwbG9hZFN0YXR1cyksCi0gICAgKCcvKnwvbWVudScsIE1lbnUpLAor
ICAgICgnL2Rhc2hib2FyZHMvZGVsZXRlJywgZGFzaGJvYXJkaGFuZGxlci5EZWxldGVEYXNoYm9h
cmRGaWxlKSwKKyAgICAoJy9kYXNoYm9hcmRzL3VwZGF0ZScsIGRhc2hib2FyZGhhbmRsZXIuVXBk
YXRlRGFzaGJvYXJkRmlsZSksCisgICAgKCcvZGFzaGJvYXJkcy8oW14/XSspPycsIGRhc2hib2Fy
ZGhhbmRsZXIuR2V0RGFzaGJvYXJkRmlsZSksCisgICAgKCcvdGVzdGZpbGUvZGVsZXRlJywgdGVz
dGZpbGVoYW5kbGVyLkRlbGV0ZUZpbGUpLAorICAgICgnL3Rlc3RmaWxlL3VwbG9hZHVybCcsIHRl
c3RmaWxlaGFuZGxlci5HZXRVcGxvYWRVcmwpLAorICAgICgnL3Rlc3RmaWxlL3VwbG9hZCcsIHRl
c3RmaWxlaGFuZGxlci5VcGxvYWQpLAorICAgICgnL3Rlc3RmaWxlL3VwbG9hZGZvcm0nLCB0ZXN0
ZmlsZWhhbmRsZXIuVXBsb2FkRm9ybSksCisgICAgKCcvdGVzdGZpbGUvPycsIHRlc3RmaWxlaGFu
ZGxlci5HZXRGaWxlKSwKKyAgICAoJy91cGxvYWRmYWlsJywgdGVzdGZpbGVoYW5kbGVyLlVwbG9h
ZFN0YXR1cyksCisgICAgKCcvdXBsb2Fkc3VjY2VzcycsIHRlc3RmaWxlaGFuZGxlci5VcGxvYWRT
dGF0dXMpLAorICAgICgnLyp8L21lbnUnLCBtZW51Lk1lbnUpLAogXQogCiBhcHBsaWNhdGlvbiA9
IHdlYmFwcC5XU0dJQXBwbGljYXRpb24ocm91dGVzLCBkZWJ1Zz1UcnVlKQpJbmRleDogV2ViS2l0
VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVycy9kYXNoYm9hcmRoYW5kbGVyLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvaGFuZGxlcnMvZGFzaGJvYXJk
aGFuZGxlci5weQkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
aGFuZGxlcnMvZGFzaGJvYXJkaGFuZGxlci5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTUg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0
aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgdXJsbGliMgor
Citmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJhcHAKK2Zyb20gZ29vZ2xlLmFw
cGVuZ2luZS5leHQud2ViYXBwIGltcG9ydCB0ZW1wbGF0ZQorCitmcm9tIG1vZGVsLmRhc2hib2Fy
ZGZpbGUgaW1wb3J0IERhc2hib2FyZEZpbGUKKworUEFSQU1fRklMRSA9ICJmaWxlIgorCitjbGFz
cyBHZXREYXNoYm9hcmRGaWxlKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CisgICAgUkVTT1VSQ0Vf
VE9fRklMRSA9IHsgImZsYWtpbmVzcyI6ICJmbGFraW5lc3NfZGFzaGJvYXJkLmh0bWwiIH0KKwor
ICAgIGRlZiBnZXQoc2VsZiwgcmVzb3VyY2UpOgorICAgICAgICBpZiBub3QgcmVzb3VyY2U6Cisg
ICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCJHZXR0aW5nIGRhc2hib2FyZCBmaWxlIGxpc3QuIikK
KyAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfZmlsZV9saXN0KCkKKworICAgICAgICBpZiBy
ZXNvdXJjZSBpbiBzZWxmLlJFU09VUkNFX1RPX0ZJTEU6CisgICAgICAgICAgICBmaWxlbmFtZSA9
IHNlbGYuUkVTT1VSQ0VfVE9fRklMRVtyZXNvdXJjZV0KKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGZpbGVuYW1lID0gc3RyKHVybGxpYjIudW5xdW90ZShyZXNvdXJjZSkpCisKKyAgICAgICAg
bG9nZ2luZy5pbmZvKCJHZXR0aW5nIGRhc2hib2FyZCBmaWxlOiAlcyIsIGZpbGVuYW1lKQorCisg
ICAgICAgIGZpbGVzID0gRGFzaGJvYXJkRmlsZS5nZXRfZmlsZXMoZmlsZW5hbWUpCisgICAgICAg
IGlmIG5vdCBmaWxlczoKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoIkZhaWxlZCB0byBmaW5k
IGRhc2hib2FyZCBmaWxlOiAlcywgcmVxdWVzdDogJXMiLAorICAgICAgICAgICAgICAgIGZpbGVu
YW1lLCBzZWxmLnJlcXVlc3QpCisgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLnNldF9zdGF0dXMo
NDA0KQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3Jp
dGUoZmlsZXNbMF0uZGF0YSkKKworICAgIGRlZiBfZ2V0X2ZpbGVfbGlzdChzZWxmKToKKyAgICAg
ICAgbG9nZ2luZy5pbmZvKCJnZXR0aW5nIGRhc2hib2FyZCBmaWxlIGxpc3QuIikKKworICAgICAg
ICBmaWxlcyA9IERhc2hib2FyZEZpbGUuZ2V0X2ZpbGVzKCIiLCAxMDApCisgICAgICAgIGlmIG5v
dCBmaWxlczoKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygiRmFpbGVkIHRvIGZpbmQgZGFzaGJv
YXJkIGZpbGVzLiIpCisgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLnNldF9zdGF0dXMoNDA0KQor
ICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgdGVtcGxhdGVfdmFsdWVzID0geworICAgICAg
ICAgICAgImZpbGVzIjogZmlsZXMsCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5yZXNwb25zZS5v
dXQud3JpdGUoCisgICAgICAgICAgICB0ZW1wbGF0ZS5yZW5kZXIoInRlbXBsYXRlcy9kYXNoYm9h
cmRmaWxlbGlzdC5odG1sIiwKKyAgICAgICAgICAgICAgICB0ZW1wbGF0ZV92YWx1ZXMpKQorCisK
K2NsYXNzIFVwZGF0ZURhc2hib2FyZEZpbGUod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKKyAgICBk
ZWYgZ2V0KHNlbGYpOgorICAgICAgICBmaWxlcyA9IHNlbGYucmVxdWVzdC5nZXRfYWxsKFBBUkFN
X0ZJTEUpCisgICAgICAgIGlmIG5vdCBmaWxlczoKKyAgICAgICAgICAgIGZpbGVzID0gWyJmbGFr
aW5lc3NfZGFzaGJvYXJkLmh0bWwiLAorICAgICAgICAgICAgICAgICAgICAgImRhc2hib2FyZF9i
YXNlLmpzIiwKKyAgICAgICAgICAgICAgICAgICAgICJhZ2dyZWdhdGVfcmVzdWx0cy5odG1sIl0K
KworICAgICAgICBlcnJvcnMgPSBbXQorICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAg
ICAgICAgIGlmIG5vdCBEYXNoYm9hcmRGaWxlLnVwZGF0ZV9maWxlKGZpbGUpOgorICAgICAgICAg
ICAgICAgIGVycm9ycy5hcHBlbmQoIkZhaWxlZCB0byB1cGRhdGUgZmlsZTogJXMiICUgZmlsZSkK
KworICAgICAgICBpZiBlcnJvcnM6CisgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoIlxuIi5q
b2luKGVycm9ycykpCisgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgiXG4iLmpv
aW4oZXJyb3JzKSkKKyAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uuc2V0X3N0YXR1cyg1MDApCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLnNldF9zdGF0dXMoMjAwKQor
ICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUoIk9LIikKKworCisKK2NsYXNzIERl
bGV0ZURhc2hib2FyZEZpbGUod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgZ2V0KHNl
bGYpOgorICAgICAgICBmaWxlcyA9IHNlbGYucmVxdWVzdC5nZXRfYWxsKFBBUkFNX0ZJTEUpCisg
ICAgICAgIGlmIG5vdCBmaWxlczoKKyAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygiTm8gZGFz
aGJvYXJkIGZpbGUgdG8gZGVsZXRlLiIpCisgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLnNldF9z
dGF0dXMoNDAwKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgZm9yIGZpbGUgaW4gZmls
ZXM6CisgICAgICAgICAgICBEYXNoYm9hcmRGaWxlLmRlbGV0ZV9maWxlKGZpbGUpCisKKyAgICAg
ICAgIyBEaXNwbGF5IGRhc2hib2FyZCBmaWxlIGxpc3QgYWZ0ZXIgZGVsZXRpbmcgdGhlIGZpbGUu
CisgICAgICAgIHNlbGYucmVkaXJlY3QoIi9kYXNoYm9hcmRzLyIpCkluZGV4OiBXZWJLaXRUb29s
cy9UZXN0UmVzdWx0U2VydmVyL2hhbmRsZXJzL21lbnUucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVycy9tZW51LnB5CShyZXZpc2lvbiA1NjA3MykK
KysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvaGFuZGxlcnMvbWVudS5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDEyIEBAIGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1w
b3J0IHdlYmFwcAogZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBs
YXRlCiAKIG1lbnUgPSBbCi0gICAgWyJMaXN0IG9mIGZpbGVzIiwgIi9nZXRmaWxlIl0sCi0gICAg
WyJMaXN0IG9mIHJlc3VsdHMuanNvbiBmaWxlcyIsICIvZ2V0ZmlsZT9uYW1lPXJlc3VsdHMuanNv
biJdLAotICAgIFsiTGlzdCBvZiBleHBlY3RhdGlvbnMuanNvbiBmaWxlcyIsICIvZ2V0ZmlsZT9u
YW1lPWV4cGVjdGF0aW9ucy5qc29uIl0sCi0gICAgWyJVcGxvYWQgZmlsZSIsICIvdXBsb2FkZm9y
bSJdLAorICAgIFsiTGlzdCBvZiB0ZXN0IGZpbGVzIiwgIi90ZXN0ZmlsZSJdLAorICAgIFsiTGlz
dCBvZiByZXN1bHRzLmpzb24gZmlsZXMiLCAiL3Rlc3RmaWxlP25hbWU9cmVzdWx0cy5qc29uIl0s
CisgICAgWyJMaXN0IG9mIGV4cGVjdGF0aW9ucy5qc29uIGZpbGVzIiwgIi90ZXN0ZmlsZT9uYW1l
PWV4cGVjdGF0aW9ucy5qc29uIl0sCisgICAgWyJVcGxvYWQgdGVzdCBmaWxlIiwgIi90ZXN0Zmls
ZS91cGxvYWRmb3JtIl0sCisgICAgWyJMaXN0IG9mIGRhc2hib2FyZCBmaWxlcyIsICIvZGFzaGJv
YXJkcy8iXSwKKyAgICBbIlVwZGF0ZSBkYXNoYm9hcmQgZmlsZXMiLCAiL2Rhc2hib2FyZHMvdXBk
YXRlIl0sCiBdCiAKIApJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVy
cy90ZXN0ZmlsZWhhbmRsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9oYW5kbGVycy90ZXN0ZmlsZWhhbmRsZXIucHkJKHJldmlzaW9uIDU2MDczKQorKysg
V2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVycy90ZXN0ZmlsZWhhbmRsZXIucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTYwLDE0ICs2MCwxNCBAQCBjbGFzcyBEZWxldGVGaWxlKHdlYmFw
cC5SZXF1ZXN0SGFuZGxlcik6CiAgICAgICAgIFRlc3RGaWxlLmRlbGV0ZV9maWxlKGtleSwgYnVp
bGRlciwgdGVzdF90eXBlLCBuYW1lLCAxMDApCiAKICAgICAgICAgIyBEaXNwbGF5IGZpbGUgbGlz
dCBhZnRlciBkZWxldGluZyB0aGUgZmlsZS4KLSAgICAgICAgc2VsZi5yZWRpcmVjdCgiL2dldGZp
bGU/YnVpbGRlcj0lcyZ0ZXN0dHlwZT0lcyZuYW1lPSVzIgorICAgICAgICBzZWxmLnJlZGlyZWN0
KCIvdGVzdGZpbGU/YnVpbGRlcj0lcyZ0ZXN0dHlwZT0lcyZuYW1lPSVzIgogICAgICAgICAgICAg
JSAoYnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKSkKIAogCiBjbGFzcyBHZXRGaWxlKGJsb2JzdG9y
ZV9oYW5kbGVycy5CbG9ic3RvcmVEb3dubG9hZEhhbmRsZXIpOgogICAgICIiIkdldCBmaWxlIGNv
bnRlbnQgb3IgbGlzdCBvZiBmaWxlcyBmb3IgZ2l2ZW4gYnVpbGRlciBhbmQgbmFtZS4iIiIKIAot
ICAgIGRlZiBnZXRfZmlsZV9saXN0KHNlbGYsIGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSk6Cisg
ICAgZGVmIF9nZXRfZmlsZV9saXN0KHNlbGYsIGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSk6CiAg
ICAgICAgICIiIkdldCBhbmQgZGlzcGxheSBhIGxpc3Qgb2YgZmlsZXMgdGhhdCBtYXRjaGVzIGJ1
aWxkZXIgYW5kIGZpbGUgbmFtZS4KIAogICAgICAgICBBcmdzOgpAQCAtOTIsNyArOTIsNyBAQCBj
bGFzcyBHZXRGaWxlKGJsb2JzdG9yZV9oYW5kbGVycy5CbG9ic3RvCiAgICAgICAgIHNlbGYucmVz
cG9uc2Uub3V0LndyaXRlKHRlbXBsYXRlLnJlbmRlcigidGVtcGxhdGVzL3Nob3dmaWxlbGlzdC5o
dG1sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
bXBsYXRlX3ZhbHVlcykpCiAKLSAgICBkZWYgZ2V0X2ZpbGVfY29udGVudChzZWxmLCBidWlsZGVy
LCB0ZXN0X3R5cGUsIG5hbWUpOgorICAgIGRlZiBfZ2V0X2ZpbGVfY29udGVudChzZWxmLCBidWls
ZGVyLCB0ZXN0X3R5cGUsIG5hbWUpOgogICAgICAgICAiIiJSZXR1cm4gY29udGVudCBvZiB0aGUg
ZmlsZSB0aGF0IG1hdGNoZXMgYnVpbGRlciBhbmQgZmlsZSBuYW1lLgogCiAgICAgICAgIEFyZ3M6
CkBAIC0xMjYsMTYgKzEyNiwxNiBAQCBjbGFzcyBHZXRGaWxlKGJsb2JzdG9yZV9oYW5kbGVycy5C
bG9ic3RvCiAgICAgICAgICMgc3BlY2lmaWVkIGluIHRoZSByZXF1ZXN0LCByZXR1cm4gbGlzdCBv
ZiBmaWxlcywgb3RoZXJ3aXNlLCByZXR1cm4KICAgICAgICAgIyBmaWxlIGNvbnRlbnQuCiAgICAg
ICAgIGlmIGRpciBvciBub3QgYnVpbGRlciBvciBub3QgbmFtZToKLSAgICAgICAgICAgIHJldHVy
biBzZWxmLmdldF9maWxlX2xpc3QoYnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKQorICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuX2dldF9maWxlX2xpc3QoYnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKQog
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2ZpbGVfY29udGVudChi
dWlsZGVyLCB0ZXN0X3R5cGUsIG5hbWUpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2Zp
bGVfY29udGVudChidWlsZGVyLCB0ZXN0X3R5cGUsIG5hbWUpCiAKIAogY2xhc3MgR2V0VXBsb2Fk
VXJsKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CiAgICAgIiIiR2V0IGFuIHVybCBmb3IgdXBsb2Fk
aW5nIGZpbGUgdG8gYmxvYnN0b3JlLiBBIHNwZWNpYWwgdXJsIGlzIHJlcXVpcmVkIGZvciBlYWNo
IGJsb2Jzb3RyZSB1cGxvYWQuIiIiCiAKICAgICBkZWYgZ2V0KHNlbGYpOgotICAgICAgICB1cGxv
YWRfdXJsID0gYmxvYnN0b3JlLmNyZWF0ZV91cGxvYWRfdXJsKCIvdXBsb2FkIikKKyAgICAgICAg
dXBsb2FkX3VybCA9IGJsb2JzdG9yZS5jcmVhdGVfdXBsb2FkX3VybCgiL3Rlc3RmaWxlL3VwbG9h
ZCIpCiAgICAgICAgIGxvZ2dpbmcuaW5mbygiR2V0dGluZyB1cGxvYWQgdXJsOiAlcy4iLCB1cGxv
YWRfdXJsKQogICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSh1cGxvYWRfdXJsKQogCkBA
IC0xOTQsNyArMTk0LDcgQEAgY2xhc3MgVXBsb2FkRm9ybSh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIp
OgogICAgICIiIlNob3cgYSBmb3JtIHNvIHVzZXIgY2FuIHN1Ym1pdCBhIGZpbGUgdG8gYmxvYnN0
b3JlLiIiIgogCiAgICAgZGVmIGdldChzZWxmKToKLSAgICAgICAgdXBsb2FkX3VybCA9IGJsb2Jz
dG9yZS5jcmVhdGVfdXBsb2FkX3VybCgiL3VwbG9hZCIpCisgICAgICAgIHVwbG9hZF91cmwgPSBi
bG9ic3RvcmUuY3JlYXRlX3VwbG9hZF91cmwoIi90ZXN0ZmlsZS91cGxvYWQiKQogICAgICAgICB0
ZW1wbGF0ZV92YWx1ZXMgPSB7CiAgICAgICAgICAgICAidXBsb2FkX3VybCI6IHVwbG9hZF91cmws
CiAgICAgICAgIH0KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbW9kZWwvZGFz
aGJvYXJkZmlsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVy
L21vZGVsL2Rhc2hib2FyZGZpbGUucHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0
UmVzdWx0U2VydmVyL21vZGVsL2Rhc2hib2FyZGZpbGUucHkJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTI0IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRp
c3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRl
dGltZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCB1cmxsaWIyCisKK2Zyb20gZ29vZ2xlLmFwcGVu
Z2luZS5leHQgaW1wb3J0IGRiCisKK1NWTl9QQVRIX0RBU0hCT0FSRCA9ICgiaHR0cDovL3NyYy5j
aHJvbWl1bS5vcmcvdmlld3ZjL2Nocm9tZS90cnVuay9zcmMiCisgICAgIi93ZWJraXQvdG9vbHMv
bGF5b3V0X3Rlc3RzLyIpCisKK2NsYXNzIERhc2hib2FyZEZpbGUoZGIuTW9kZWwpOgorICAgIG5h
bWUgPSBkYi5TdHJpbmdQcm9wZXJ0eSgpCisgICAgZGF0YSA9IGRiLkJsb2JQcm9wZXJ0eSgpCisg
ICAgZGF0ZSA9IGRiLkRhdGVUaW1lUHJvcGVydHkoYXV0b19ub3dfYWRkPVRydWUpCisKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgZ2V0X2ZpbGVzKGNscywgbmFtZSwgbGltaXQ9MSk6CisgICAg
ICAgIHF1ZXJ5ID0gRGFzaGJvYXJkRmlsZS5hbGwoKQorICAgICAgICBpZiBuYW1lOgorICAgICAg
ICAgICAgcXVlcnkgPSBxdWVyeS5maWx0ZXIoIm5hbWUgPSIsIG5hbWUpCisgICAgICAgIHJldHVy
biBxdWVyeS5vcmRlcigiLWRhdGUiKS5mZXRjaChsaW1pdCkKKworICAgIEBjbGFzc21ldGhvZAor
ICAgIGRlZiBhZGRfZmlsZShjbHMsIG5hbWUsIGRhdGEpOgorICAgICAgICBmaWxlID0gRGFzaGJv
YXJkRmlsZSgpCisgICAgICAgIGZpbGUubmFtZSA9IG5hbWUKKyAgICAgICAgZmlsZS5kYXRhID0g
ZGIuQmxvYihkYXRhKQorICAgICAgICBmaWxlLnB1dCgpCisKKyAgICAgICAgbG9nZ2luZy5kZWJ1
ZygiRGFzaGJvYXJkIGZpbGUgc2F2ZWQsIG5hbWU6ICVzLiIsIG5hbWUpCisKKyAgICAgICAgcmV0
dXJuIGZpbGUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBncmFiX2ZpbGVfZnJvbV9zdm4o
Y2xzLCBuYW1lKToKKyAgICAgICAgIyBGb3Igbm93LCBkYXNoYm9hcmRfYmFzZS5qcyBhbmQgYWdn
cmVnYXRlX3Jlc3VsdHMuaHRtbCBsaXZlIGluIHN1YgorICAgICAgICAjIGRpcmVjdG9yeSBpbiBT
Vk4gcmVwb3NpdG9yeS4gVGhlcmUgYXJlIHN0aWxsIG90aGVyIGZpbGVzIGxpbmsgdG8KKyAgICAg
ICAgIyB0aGVtLiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHNvbHV0aW9uIGJlZm9yZSB3ZSBtb3ZlIHRo
ZW0gdG8gc2FtZSBkaXIKKyAgICAgICAgIyBhcyBmbGFraW5lc3NfZGFzaGJvYXJkLmh0bWwgaW4g
U1ZOLgorICAgICAgICAjIFJlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBmbGFraW5lc3Mg
ZGFzaGJvYXJkCisgICAgICAgICMgaXMgZnVsbHkgbWlncmF0ZWQgdG8gQUUgYW5kIG90aGVyIGZp
bGVzIHdobyBsaW5rIHRvIHRoZW0gYXJlIHVwZGF0ZWQKKyAgICAgICAgIyB0byB1c2UgQUUuCisg
ICAgICAgIGxvZ2dpbmcuZGVidWcoIkdyYWIgZmlsZSBmcm9tIFNWTiwgbmFtZTogJXMuIiwgbmFt
ZSkKKyAgICAgICAgaWYgbmFtZSA9PSAiZGFzaGJvYXJkX2Jhc2UuanMiIG9yIG5hbWUgPT0gImFn
Z3JlZ2F0ZV9yZXN1bHRzLmh0bWwiOgorICAgICAgICAgICAgdXJsID0gU1ZOX1BBVEhfREFTSEJP
QVJEICsgImRhc2hib2FyZHMvIiArIG5hbWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHVy
bCA9IFNWTl9QQVRIX0RBU0hCT0FSRCArIG5hbWUKKworICAgICAgICBsb2dnaW5nLmRlYnVnKCJH
cmFiIGZpbGUgZnJvbSBTVk4sIHVybDogJXMuIiwgdXJsKQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBmaWxlID0gdXJsbGliMi51cmxvcGVuKHVybCkKKyAgICAgICAgICAgIGlmIG5vdCBmaWxl
OgorICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoIkZhaWxlZCB0byBncmFiIGRhc2hib2Fy
ZCBmaWxlOiAlcy4iLCB1cmwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAg
ICAgICAgcmV0dXJuIGZpbGUucmVhZCgpCisgICAgICAgIGV4Y2VwdCB1cmxsaWIyLkhUVFBFcnJv
ciwgZToKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoIkZhaWxlZCB0byBncmFiIGRhc2hib2Fy
ZCBmaWxlOiAlcyIsIHN0cihlKSkKKyAgICAgICAgZXhjZXB0IHVybGxpYjIuVVJMRXJyb3IsIGU6
CisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCJGYWlsZWQgdG8gZ3JhYiBkYXNoYm9hcmQgZmls
ZTogJXMiLCBzdHIoZSkpCisKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBjbGFzc21ldGhv
ZAorICAgIGRlZiB1cGRhdGVfZmlsZShjbHMsIG5hbWUpOgorICAgICAgICBkYXRhID0gY2xzLmdy
YWJfZmlsZV9mcm9tX3N2bihuYW1lKQorICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAg
IHJldHVybiBOb25lCisKKyAgICAgICAgbG9nZ2luZy5pbmZvKCJHb3QgZmlsZSBmcm9tIFNWTi4i
KQorCisgICAgICAgIGZpbGVzID0gY2xzLmdldF9maWxlcyhuYW1lKQorICAgICAgICBpZiBub3Qg
ZmlsZXM6CisgICAgICAgICAgICBsb2dnaW5nLmluZm8oIk5vIGV4aXN0aW5nIGZpbGUsIGFkZGVk
IGFzIG5ldyBmaWxlLiIpCisgICAgICAgICAgICByZXR1cm4gY2xzLmFkZF9maWxlKG5hbWUsIGRh
dGEpCisgICAgICAgIAorICAgICAgICBsb2dnaW5nLmRlYnVnKCJVcGRhdGluZyBleGlzdGluZyBm
aWxlLiIpCisgICAgICAgIGZpbGUgPSBmaWxlc1swXQorICAgICAgICBmaWxlLmRhdGEgPSBkYXRh
CisgICAgICAgIGZpbGUuZGF0ZSA9IGRhdGV0aW1lLm5vdygpCisgICAgICAgIGZpbGUucHV0KCkK
KworICAgICAgICBsb2dnaW5nLmluZm8oIkRhc2hib2FyZCBmaWxlIHJlcGxhY2VkLCBuYW1lOiAl
cy4iLCBuYW1lKQorCisgICAgICAgIHJldHVybiBmaWxlCisKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgZGVsZXRlX2ZpbGUoY2xzLCBuYW1lKToKKyAgICAgICAgZmlsZXMgPSBjbHMuZ2V0X2Zp
bGVzKG5hbWUpCisgICAgICAgIGlmIG5vdCBmaWxlczoKKyAgICAgICAgICAgIGxvZ2dpbmcud2Fy
bmluZygiRmlsZSBub3QgZm91bmQsIG5hbWU6ICVzLiIsIG5hbWUpCisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKKworICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgICAgICAgIGZpbGUu
ZGVsZXRlKCkKKworICAgICAgICByZXR1cm4gVHJ1ZQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJl
c3VsdFNlcnZlci9tb2RlbC90ZXN0ZmlsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9U
ZXN0UmVzdWx0U2VydmVyL21vZGVsL3Rlc3RmaWxlLnB5CShyZXZpc2lvbiA1NjA3MykKKysrIFdl
YktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbW9kZWwvdGVzdGZpbGUucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTg1LDcgKzg1LDcgQEAgY2xhc3MgVGVzdEZpbGUoZGIuTW9kZWwpOgogCiAgICAgICAg
IGxvZ2dpbmcuaW5mbygKICAgICAgICAgICAgICJGaWxlIHNhdmVkLCBidWlsZGVyOiAlcywgdGVz
dF90eXBlOiAlcywgbmFtZTogJXMsIGJsb2Iga2V5OiAlcy4iLAotICAgICAgICAgICAgYnVpbGRl
ciwgZmlsZS5uYW1lLCBmaWxlLmJsb2Jfa2V5KQorICAgICAgICAgICAgYnVpbGRlciwgdGVzdF90
eXBlLCBmaWxlLm5hbWUsIGZpbGUuYmxvYl9rZXkpCiAKICAgICAgICAgcmV0dXJuIGZpbGUKIApJ
bmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdHlsZXNoZWV0cy9kYXNoYm9hcmRm
aWxlLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0eWxl
c2hlZXRzL2Rhc2hib2FyZGZpbGUuY3NzCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVz
dFJlc3VsdFNlcnZlci9zdHlsZXNoZWV0cy9kYXNoYm9hcmRmaWxlLmNzcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzMCBAQAorYm9keSB7CisgIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBIZWx2ZXRp
Y2EsIHNhbnMtc2VyaWY7CisgIHBhZGRpbmc6IDBweDsKKyAgY29sb3I6ICM0NDQ7Cit9CitoMSB7
CisgIGNvbG9yOiAjNDQ0OworICBmb250LXNpemU6IDE0cHQ7CisgIGZvbnQtc3R5bGU6IGl0YWxp
YzsKKyAgbWFyZ2luOiAwcHg7CisgIHBhZGRpbmc6IDVweDsKK30KK3RhYmxlIHsKKyAgYm9yZGVy
LXNwYWNpbmc6IDBweDsKK30KK3RoIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI0FBQTsKKyAgY29s
b3I6IHdoaXRlOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBwYWRkaW5nOiA1cHg7CisgIGZvbnQt
c2l6ZTogMTJwdDsKK30KK3RkIHsKKyAgZm9udC1zaXplOiAxMXB0OworICBwYWRkaW5nOiAzcHg7
CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9Cit0cjpob3ZlciB7CisgIGJhY2tncm91bmQtY29sb3I6
ICNFRUU7Cit9CkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy9k
YXNoYm9hcmRmaWxlbGlzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvdGVtcGxhdGVzL2Rhc2hib2FyZGZpbGVsaXN0Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy9kYXNoYm9hcmRmaWxlbGlz
dC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+RGFzaGJvYXJkIEZpbGVzPC90aXRsZT4KKzxsaW5rIHR5cGU9
InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9zdHlsZXNoZWV0cy9kYXNoYm9hcmRm
aWxlLmNzcyIgLz4KKzwvaGVhZD4KKzxib2R5PgorPGgxPkRhc2hib2FyZCBGaWxlcworPC9oMT4K
KzxkaXY+CisgICAgPHRhYmxlPgorICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGg+RmlsZTwv
dGg+CisgICAgICAgICAgICA8dGg+RGF0ZTwvdGg+CisgICAgICAgICAgICA8dGg+PC90aD4KKyAg
ICAgICAgeyUgZm9yIGZpbGUgaW4gZmlsZXMgJX0KKyAgICAgICAgPHRyPnslIGlmIGZpbGUubmFt
ZSAlfQorICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii9kYXNoYm9hcmRzL3t7IGZpbGUubmFtZSB9
fSIgPgorICAgICAgICAgICAgICAgIHt7IGZpbGUubmFtZSB9fQorICAgICAgICAgICAgICAgIDwv
YT4KKyAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICA8dGQ+e3sgZmlsZS5kYXRlfGRhdGU6
ImQtTS1ZIEg6aTpzIiB9fQorICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgIDx0ZD48YSBo
cmVmPSIvZGFzaGJvYXJkcy9kZWxldGU/ZmlsZT17eyBmaWxlLm5hbWUgfX0iID4KKyAgICAgICAg
ICAgICAgICBEZWxldGUKKyAgICAgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8L3RkPgor
ICAgICAgICB7JSBlbmRpZiAlfQorICAgICAgICA8L3RyPgorICAgIHslIGVuZGZvciAlfQorICAg
IDwvdGFibGU+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFdlYktpdFRvb2xzL1Rl
c3RSZXN1bHRTZXJ2ZXIvdGVtcGxhdGVzL3Nob3dmaWxlbGlzdC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvdGVtcGxhdGVzL3Nob3dmaWxlbGlzdC5odG1s
CShyZXZpc2lvbiA1NjA3MykKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvdGVtcGxh
dGVzL3Nob3dmaWxlbGlzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwyMyArMjAsMjMgQEAK
ICAgICAgICAgICAgIDx0aD48L3RoPgogICAgICAgICB7JSBmb3IgZmlsZSBpbiBmaWxlcyAlfQog
ICAgICAgICA8dHI+eyUgaWYgZmlsZS5idWlsZGVyIGFuZCBmaWxlLm5hbWUgJX0KLSAgICAgICAg
ICAgIDx0ZD48YSBocmVmPSIvZ2V0ZmlsZT9idWlsZGVyPXt7IGZpbGUuYnVpbGRlciB9fSIgPgor
ICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii90ZXN0ZmlsZT9idWlsZGVyPXt7IGZpbGUuYnVpbGRl
ciB9fSIgPgogICAgICAgICAgICAgICAgIHt7IGZpbGUuYnVpbGRlciB9fQogICAgICAgICAgICAg
ICAgIDwvYT4KICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICA8dGQ+eyUgaWYgZmlsZS50
ZXN0X3R5cGUgJX0KLSAgICAgICAgICAgICAgICA8YSBocmVmPSIvZ2V0ZmlsZT90ZXN0dHlwZT17
eyBmaWxlLnRlc3RfdHlwZSB9fSIgPgorICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii90ZXN0Zmls
ZT90ZXN0dHlwZT17eyBmaWxlLnRlc3RfdHlwZSB9fSIgPgogICAgICAgICAgICAgICAgIHt7IGZp
bGUudGVzdF90eXBlIH19CiAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgIHsl
IGVuZGlmICV9CiAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii9n
ZXRmaWxlP2J1aWxkZXI9e3sgZmlsZS5idWlsZGVyIH19Jm5hbWU9e3sgZmlsZS5uYW1lIH19IiA+
CisgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iL3Rlc3RmaWxlP2J1aWxkZXI9e3sgZmlsZS5idWls
ZGVyIH19Jm5hbWU9e3sgZmlsZS5uYW1lIH19IiA+CiAgICAgICAgICAgICAgICAge3sgZmlsZS5u
YW1lIH19CiAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgPC90ZD4KICAgICAgICAg
ICAgIDx0ZD57eyBmaWxlLmRhdGV8ZGF0ZToiZC1NLVkgSDppOnMiIH19CiAgICAgICAgICAgICA8
L3RkPgotICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii9kZWxldGVmaWxlP2tleT17eyBmaWxlLmtl
eSB9fSZidWlsZGVyPXt7IGJ1aWxkZXIgfX0mbmFtZT17eyBuYW1lIH19IiA+CisgICAgICAgICAg
ICA8dGQ+PGEgaHJlZj0iL3Rlc3RmaWxlL2RlbGV0ZT9rZXk9e3sgZmlsZS5rZXkgfX0mYnVpbGRl
cj17eyBidWlsZGVyIH19Jm5hbWU9e3sgbmFtZSB9fSIgPgogICAgICAgICAgICAgICAgIERlbGV0
ZQogICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgIDwvdGQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50846</attachid>
            <date>2010-03-16 15:39:32 -0700</date>
            <delta_ts>2010-03-23 16:10:15 -0700</delta_ts>
            <desc>Proposed patch - remove extra empty line</desc>
            <filename>flakiness.patch</filename>
            <type>text/plain</type>
            <size>21078</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2MDc1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDMtMTYgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSG9zdCBsYXlvdXQgdGVzdCBmbGFraW5lc3MgZGFzaGJvYXJkIGluIFRlc3RS
ZXN1bHRTZXJ2ZXIgYXBwZW5naW5lLgorCisgICAgICAgIEZsYWtpbmVzcyBkYXNoYm9hcmQgaXMg
YSB0b29sIHRvIG1vbml0b3IgbGF5b3V0IHRlc3Qgc3RhdHVzIGFuZAorICAgICAgICBoZWxwIGxh
eW91dCB0ZXN0IHJlZ3Jlc3Npb24gZGlhZ25vc3RpY3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MTk1CisKKyAgICAgICAgKiBUZXN0UmVzdWx0
U2VydmVyL2hhbmRsZXJzL2Rhc2hib2FyZGhhbmRsZXIucHk6IEFkZGVkLgorICAgICAgICAgLSBO
ZXcgaGFuZGxlciB0byBoYW5kbGUgZGFzaGJvYXJkIHJlcXVlc3QKKyAgICAgICAgKiBUZXN0UmVz
dWx0U2VydmVyL2hhbmRsZXJzL21lbnUucHk6CisgICAgICAgICAtIEFkZCBuZXcgZGFzaGJvYXJk
IGxpbmtzCisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVycy90ZXN0ZmlsZWhhbmRs
ZXIucHk6CisgICAgICAgICAtIFJlcXVlc3Qgcm91dGVzIHJlZmFjdG9yeQorICAgICAgICAqIFRl
c3RSZXN1bHRTZXJ2ZXIvaW5kZXgueWFtbDoKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL21h
aW4ucHk6CisgICAgICAgICAtIEFkZCBuZXcgZGFzaGJvYXJkIHJlcXVlc3Qgcm91dGVzIGFuZCBy
ZWZhY3RvciB0ZXN0IHJlc3VsdCBmaWxlIHJvdW50ZXMuCisgICAgICAgICogVGVzdFJlc3VsdFNl
cnZlci9tb2RlbC9kYXNoYm9hcmRmaWxlLnB5OiBBZGRlZC4KKyAgICAgICAgIC0gTW9kZWwgdG8g
YWNjZXNzIGRhdGFzdG9yZSBmb3IgZGFzaGJvYXJkIGZpbGVzCisgICAgICAgICogVGVzdFJlc3Vs
dFNlcnZlci9tb2RlbC90ZXN0ZmlsZS5weToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0
eWxlc2hlZXRzL2Rhc2hib2FyZGZpbGUuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0UmVzdWx0
U2VydmVyL3RlbXBsYXRlcy9kYXNoYm9hcmRmaWxlbGlzdC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBUZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy9zaG93ZmlsZWxpc3QuaHRtbDoKKwogMjAxMC0w
My0xNiAgSm9hbm1hcmllIERpZ2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0
U2VydmVyL2luZGV4LnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9pbmRleC55YW1sCShyZXZpc2lvbiA1NjA3MykKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvaW5kZXgueWFtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsMTYgKzEwLDE1IEBAIGlu
ZGV4ZXM6DQogIyBhdXRvbWF0aWNhbGx5IHVwbG9hZGVkIHRvIHRoZSBhZG1pbiBjb25zb2xlIHdo
ZW4geW91IG5leHQgZGVwbG95DQogIyB5b3VyIGFwcGxpY2F0aW9uIHVzaW5nIGFwcGNmZy5weS4N
CiANCi0tIGtpbmQ6IFRlc3RGaWxlDQorLSBraW5kOiBEYXNoYm9hcmRGaWxlDQogICBwcm9wZXJ0
aWVzOg0KLSAgLSBuYW1lOiBidWlsZGVyDQorICAtIG5hbWU6IG5hbWUNCiAgIC0gbmFtZTogZGF0
ZQ0KICAgICBkaXJlY3Rpb246IGRlc2MNCiANCiAtIGtpbmQ6IFRlc3RGaWxlDQogICBwcm9wZXJ0
aWVzOg0KICAgLSBuYW1lOiBidWlsZGVyDQotICAtIG5hbWU6IG5hbWUNCiAgIC0gbmFtZTogZGF0
ZQ0KICAgICBkaXJlY3Rpb246IGRlc2MNCiANCkBAIC0yNywxNCArMjYsMTQgQEAgaW5kZXhlczoN
CiAgIHByb3BlcnRpZXM6DQogICAtIG5hbWU6IGJ1aWxkZXINCiAgIC0gbmFtZTogbmFtZQ0KLSAg
LSBuYW1lOiB0ZXN0X3R5cGUNCiAgIC0gbmFtZTogZGF0ZQ0KICAgICBkaXJlY3Rpb246IGRlc2MN
CiANCiAtIGtpbmQ6IFRlc3RGaWxlDQogICBwcm9wZXJ0aWVzOg0KLSAgLSBuYW1lOiBidWlsZGVy
PQ0KLSAgLSBuYW1lOiBuYW1lPQ0KKyAgLSBuYW1lOiBidWlsZGVyDQorICAtIG5hbWU6IG5hbWUN
CisgIC0gbmFtZTogdGVzdF90eXBlDQogICAtIG5hbWU6IGRhdGUNCiAgICAgZGlyZWN0aW9uOiBk
ZXNjDQogDQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tYWluLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbWFpbi5weQkocmV2aXNpb24g
NTYwNzMpCisrKyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL21haW4ucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDIzICszMywyMiBAQCB1c2VfbGlicmFyeSgnZGphbmdvJywgJzEuMScpCiBm
cm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJhcHAKIGZyb20gZ29vZ2xlLmFwcGVu
Z2luZS5leHQud2ViYXBwLnV0aWwgaW1wb3J0IHJ1bl93c2dpX2FwcAogCi1mcm9tIGhhbmRsZXJz
Lm1lbnUgaW1wb3J0IE1lbnUKLWZyb20gaGFuZGxlcnMudGVzdGZpbGVoYW5kbGVyIGltcG9ydCBE
ZWxldGVGaWxlCi1mcm9tIGhhbmRsZXJzLnRlc3RmaWxlaGFuZGxlciBpbXBvcnQgR2V0RmlsZQot
ZnJvbSBoYW5kbGVycy50ZXN0ZmlsZWhhbmRsZXIgaW1wb3J0IEdldFVwbG9hZFVybAotZnJvbSBo
YW5kbGVycy50ZXN0ZmlsZWhhbmRsZXIgaW1wb3J0IFVwbG9hZAotZnJvbSBoYW5kbGVycy50ZXN0
ZmlsZWhhbmRsZXIgaW1wb3J0IFVwbG9hZEZvcm0KLWZyb20gaGFuZGxlcnMudGVzdGZpbGVoYW5k
bGVyIGltcG9ydCBVcGxvYWRTdGF0dXMKK2Zyb20gaGFuZGxlcnMgaW1wb3J0IGRhc2hib2FyZGhh
bmRsZXIKK2Zyb20gaGFuZGxlcnMgaW1wb3J0IG1lbnUKK2Zyb20gaGFuZGxlcnMgaW1wb3J0IHRl
c3RmaWxlaGFuZGxlcgogCiByb3V0ZXMgPSBbCi0gICAgKCcvZGVsZXRlZmlsZScsIERlbGV0ZUZp
bGUpLAotICAgICgnL2dldGZpbGUnLCBHZXRGaWxlKSwKLSAgICAoJy9nZXR1cGxvYWR1cmwnLCBH
ZXRVcGxvYWRVcmwpLAotICAgICgnL3VwbG9hZCcsIFVwbG9hZCksCi0gICAgKCcvdXBsb2FkZmFp
bCcsIFVwbG9hZFN0YXR1cyksCi0gICAgKCcvdXBsb2FkZm9ybScsIFVwbG9hZEZvcm0pLAotICAg
ICgnL3VwbG9hZHN1Y2Nlc3MnLCBVcGxvYWRTdGF0dXMpLAotICAgICgnLyp8L21lbnUnLCBNZW51
KSwKKyAgICAoJy9kYXNoYm9hcmRzL2RlbGV0ZScsIGRhc2hib2FyZGhhbmRsZXIuRGVsZXRlRGFz
aGJvYXJkRmlsZSksCisgICAgKCcvZGFzaGJvYXJkcy91cGRhdGUnLCBkYXNoYm9hcmRoYW5kbGVy
LlVwZGF0ZURhc2hib2FyZEZpbGUpLAorICAgICgnL2Rhc2hib2FyZHMvKFteP10rKT8nLCBkYXNo
Ym9hcmRoYW5kbGVyLkdldERhc2hib2FyZEZpbGUpLAorICAgICgnL3Rlc3RmaWxlL2RlbGV0ZScs
IHRlc3RmaWxlaGFuZGxlci5EZWxldGVGaWxlKSwKKyAgICAoJy90ZXN0ZmlsZS91cGxvYWR1cmwn
LCB0ZXN0ZmlsZWhhbmRsZXIuR2V0VXBsb2FkVXJsKSwKKyAgICAoJy90ZXN0ZmlsZS91cGxvYWQn
LCB0ZXN0ZmlsZWhhbmRsZXIuVXBsb2FkKSwKKyAgICAoJy90ZXN0ZmlsZS91cGxvYWRmb3JtJywg
dGVzdGZpbGVoYW5kbGVyLlVwbG9hZEZvcm0pLAorICAgICgnL3Rlc3RmaWxlLz8nLCB0ZXN0Zmls
ZWhhbmRsZXIuR2V0RmlsZSksCisgICAgKCcvdXBsb2FkZmFpbCcsIHRlc3RmaWxlaGFuZGxlci5V
cGxvYWRTdGF0dXMpLAorICAgICgnL3VwbG9hZHN1Y2Nlc3MnLCB0ZXN0ZmlsZWhhbmRsZXIuVXBs
b2FkU3RhdHVzKSwKKyAgICAoJy8qfC9tZW51JywgbWVudS5NZW51KSwKIF0KIAogYXBwbGljYXRp
b24gPSB3ZWJhcHAuV1NHSUFwcGxpY2F0aW9uKHJvdXRlcywgZGVidWc9VHJ1ZSkKSW5kZXg6IFdl
YktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvaGFuZGxlcnMvZGFzaGJvYXJkaGFuZGxlci5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL2hhbmRsZXJzL2Rhc2hi
b2FyZGhhbmRsZXIucHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2Vy
dmVyL2hhbmRsZXJzL2Rhc2hib2FyZGhhbmRsZXIucHkJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTE0IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHVybGxp
YjIKKworZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwCitmcm9tIGdvb2ds
ZS5hcHBlbmdpbmUuZXh0LndlYmFwcCBpbXBvcnQgdGVtcGxhdGUKKworZnJvbSBtb2RlbC5kYXNo
Ym9hcmRmaWxlIGltcG9ydCBEYXNoYm9hcmRGaWxlCisKK1BBUkFNX0ZJTEUgPSAiZmlsZSIKKwor
Y2xhc3MgR2V0RGFzaGJvYXJkRmlsZSh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgorICAgIFJFU09V
UkNFX1RPX0ZJTEUgPSB7ICJmbGFraW5lc3MiOiAiZmxha2luZXNzX2Rhc2hib2FyZC5odG1sIiB9
CisKKyAgICBkZWYgZ2V0KHNlbGYsIHJlc291cmNlKToKKyAgICAgICAgaWYgbm90IHJlc291cmNl
OgorICAgICAgICAgICAgbG9nZ2luZy5kZWJ1ZygiR2V0dGluZyBkYXNoYm9hcmQgZmlsZSBsaXN0
LiIpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2ZpbGVfbGlzdCgpCisKKyAgICAgICAg
aWYgcmVzb3VyY2UgaW4gc2VsZi5SRVNPVVJDRV9UT19GSUxFOgorICAgICAgICAgICAgZmlsZW5h
bWUgPSBzZWxmLlJFU09VUkNFX1RPX0ZJTEVbcmVzb3VyY2VdCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBmaWxlbmFtZSA9IHN0cih1cmxsaWIyLnVucXVvdGUocmVzb3VyY2UpKQorCisgICAg
ICAgIGxvZ2dpbmcuaW5mbygiR2V0dGluZyBkYXNoYm9hcmQgZmlsZTogJXMiLCBmaWxlbmFtZSkK
KworICAgICAgICBmaWxlcyA9IERhc2hib2FyZEZpbGUuZ2V0X2ZpbGVzKGZpbGVuYW1lKQorICAg
ICAgICBpZiBub3QgZmlsZXM6CisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCJGYWlsZWQgdG8g
ZmluZCBkYXNoYm9hcmQgZmlsZTogJXMsIHJlcXVlc3Q6ICVzIiwKKyAgICAgICAgICAgICAgICBm
aWxlbmFtZSwgc2VsZi5yZXF1ZXN0KQorICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5zZXRfc3Rh
dHVzKDQwNCkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0
LndyaXRlKGZpbGVzWzBdLmRhdGEpCisKKyAgICBkZWYgX2dldF9maWxlX2xpc3Qoc2VsZik6Cisg
ICAgICAgIGxvZ2dpbmcuaW5mbygiZ2V0dGluZyBkYXNoYm9hcmQgZmlsZSBsaXN0LiIpCisKKyAg
ICAgICAgZmlsZXMgPSBEYXNoYm9hcmRGaWxlLmdldF9maWxlcygiIiwgMTAwKQorICAgICAgICBp
ZiBub3QgZmlsZXM6CisgICAgICAgICAgICBsb2dnaW5nLmluZm8oIkZhaWxlZCB0byBmaW5kIGRh
c2hib2FyZCBmaWxlcy4iKQorICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5zZXRfc3RhdHVzKDQw
NCkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRlbXBsYXRlX3ZhbHVlcyA9IHsKKyAg
ICAgICAgICAgICJmaWxlcyI6IGZpbGVzLAorICAgICAgICB9CisgICAgICAgIHNlbGYucmVzcG9u
c2Uub3V0LndyaXRlKAorICAgICAgICAgICAgdGVtcGxhdGUucmVuZGVyKCJ0ZW1wbGF0ZXMvZGFz
aGJvYXJkZmlsZWxpc3QuaHRtbCIsCisgICAgICAgICAgICAgICAgdGVtcGxhdGVfdmFsdWVzKSkK
KworCitjbGFzcyBVcGRhdGVEYXNoYm9hcmRGaWxlKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6Cisg
ICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgZmlsZXMgPSBzZWxmLnJlcXVlc3QuZ2V0X2FsbChQ
QVJBTV9GSUxFKQorICAgICAgICBpZiBub3QgZmlsZXM6CisgICAgICAgICAgICBmaWxlcyA9IFsi
Zmxha2luZXNzX2Rhc2hib2FyZC5odG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICJkYXNoYm9h
cmRfYmFzZS5qcyIsCisgICAgICAgICAgICAgICAgICAgICAiYWdncmVnYXRlX3Jlc3VsdHMuaHRt
bCJdCisKKyAgICAgICAgZXJyb3JzID0gW10KKyAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6Cisg
ICAgICAgICAgICBpZiBub3QgRGFzaGJvYXJkRmlsZS51cGRhdGVfZmlsZShmaWxlKToKKyAgICAg
ICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCJGYWlsZWQgdG8gdXBkYXRlIGZpbGU6ICVzIiAlIGZp
bGUpCisKKyAgICAgICAgaWYgZXJyb3JzOgorICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCJc
biIuam9pbihlcnJvcnMpKQorICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUoIlxu
Ii5qb2luKGVycm9ycykpCisgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLnNldF9zdGF0dXMoNTAw
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5zZXRfc3RhdHVzKDIw
MCkKKyAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKCJPSyIpCisKKworY2xhc3Mg
RGVsZXRlRGFzaGJvYXJkRmlsZSh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgorICAgIGRlZiBnZXQo
c2VsZik6CisgICAgICAgIGZpbGVzID0gc2VsZi5yZXF1ZXN0LmdldF9hbGwoUEFSQU1fRklMRSkK
KyAgICAgICAgaWYgbm90IGZpbGVzOgorICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCJObyBk
YXNoYm9hcmQgZmlsZSB0byBkZWxldGUuIikKKyAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uuc2V0
X3N0YXR1cyg0MDApCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBmb3IgZmlsZSBpbiBm
aWxlczoKKyAgICAgICAgICAgIERhc2hib2FyZEZpbGUuZGVsZXRlX2ZpbGUoZmlsZSkKKworICAg
ICAgICAjIERpc3BsYXkgZGFzaGJvYXJkIGZpbGUgbGlzdCBhZnRlciBkZWxldGluZyB0aGUgZmls
ZS4KKyAgICAgICAgc2VsZi5yZWRpcmVjdCgiL2Rhc2hib2FyZHMvIikKSW5kZXg6IFdlYktpdFRv
b2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvaGFuZGxlcnMvbWVudS5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9UZXN0UmVzdWx0U2VydmVyL2hhbmRsZXJzL21lbnUucHkJKHJldmlzaW9uIDU2MDcz
KQorKysgV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVycy9tZW51LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwxMCArMzAsMTIgQEAgZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBp
bXBvcnQgd2ViYXBwCiBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0LndlYmFwcCBpbXBvcnQgdGVt
cGxhdGUKIAogbWVudSA9IFsKLSAgICBbIkxpc3Qgb2YgZmlsZXMiLCAiL2dldGZpbGUiXSwKLSAg
ICBbIkxpc3Qgb2YgcmVzdWx0cy5qc29uIGZpbGVzIiwgIi9nZXRmaWxlP25hbWU9cmVzdWx0cy5q
c29uIl0sCi0gICAgWyJMaXN0IG9mIGV4cGVjdGF0aW9ucy5qc29uIGZpbGVzIiwgIi9nZXRmaWxl
P25hbWU9ZXhwZWN0YXRpb25zLmpzb24iXSwKLSAgICBbIlVwbG9hZCBmaWxlIiwgIi91cGxvYWRm
b3JtIl0sCisgICAgWyJMaXN0IG9mIHRlc3QgZmlsZXMiLCAiL3Rlc3RmaWxlIl0sCisgICAgWyJM
aXN0IG9mIHJlc3VsdHMuanNvbiBmaWxlcyIsICIvdGVzdGZpbGU/bmFtZT1yZXN1bHRzLmpzb24i
XSwKKyAgICBbIkxpc3Qgb2YgZXhwZWN0YXRpb25zLmpzb24gZmlsZXMiLCAiL3Rlc3RmaWxlP25h
bWU9ZXhwZWN0YXRpb25zLmpzb24iXSwKKyAgICBbIlVwbG9hZCB0ZXN0IGZpbGUiLCAiL3Rlc3Rm
aWxlL3VwbG9hZGZvcm0iXSwKKyAgICBbIkxpc3Qgb2YgZGFzaGJvYXJkIGZpbGVzIiwgIi9kYXNo
Ym9hcmRzLyJdLAorICAgIFsiVXBkYXRlIGRhc2hib2FyZCBmaWxlcyIsICIvZGFzaGJvYXJkcy91
cGRhdGUiXSwKIF0KIAogCkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL2hhbmRs
ZXJzL3Rlc3RmaWxlaGFuZGxlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVz
dWx0U2VydmVyL2hhbmRsZXJzL3Rlc3RmaWxlaGFuZGxlci5weQkocmV2aXNpb24gNTYwNzMpCisr
KyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL2hhbmRsZXJzL3Rlc3RmaWxlaGFuZGxlci5w
eQkod29ya2luZyBjb3B5KQpAQCAtNjAsMTQgKzYwLDE0IEBAIGNsYXNzIERlbGV0ZUZpbGUod2Vi
YXBwLlJlcXVlc3RIYW5kbGVyKToKICAgICAgICAgVGVzdEZpbGUuZGVsZXRlX2ZpbGUoa2V5LCBi
dWlsZGVyLCB0ZXN0X3R5cGUsIG5hbWUsIDEwMCkKIAogICAgICAgICAjIERpc3BsYXkgZmlsZSBs
aXN0IGFmdGVyIGRlbGV0aW5nIHRoZSBmaWxlLgotICAgICAgICBzZWxmLnJlZGlyZWN0KCIvZ2V0
ZmlsZT9idWlsZGVyPSVzJnRlc3R0eXBlPSVzJm5hbWU9JXMiCisgICAgICAgIHNlbGYucmVkaXJl
Y3QoIi90ZXN0ZmlsZT9idWlsZGVyPSVzJnRlc3R0eXBlPSVzJm5hbWU9JXMiCiAgICAgICAgICAg
ICAlIChidWlsZGVyLCB0ZXN0X3R5cGUsIG5hbWUpKQogCiAKIGNsYXNzIEdldEZpbGUoYmxvYnN0
b3JlX2hhbmRsZXJzLkJsb2JzdG9yZURvd25sb2FkSGFuZGxlcik6CiAgICAgIiIiR2V0IGZpbGUg
Y29udGVudCBvciBsaXN0IG9mIGZpbGVzIGZvciBnaXZlbiBidWlsZGVyIGFuZCBuYW1lLiIiIgog
Ci0gICAgZGVmIGdldF9maWxlX2xpc3Qoc2VsZiwgYnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKToK
KyAgICBkZWYgX2dldF9maWxlX2xpc3Qoc2VsZiwgYnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKToK
ICAgICAgICAgIiIiR2V0IGFuZCBkaXNwbGF5IGEgbGlzdCBvZiBmaWxlcyB0aGF0IG1hdGNoZXMg
YnVpbGRlciBhbmQgZmlsZSBuYW1lLgogCiAgICAgICAgIEFyZ3M6CkBAIC05Miw3ICs5Miw3IEBA
IGNsYXNzIEdldEZpbGUoYmxvYnN0b3JlX2hhbmRsZXJzLkJsb2JzdG8KICAgICAgICAgc2VsZi5y
ZXNwb25zZS5vdXQud3JpdGUodGVtcGxhdGUucmVuZGVyKCJ0ZW1wbGF0ZXMvc2hvd2ZpbGVsaXN0
Lmh0bWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVtcGxhdGVfdmFsdWVzKSkKIAotICAgIGRlZiBnZXRfZmlsZV9jb250ZW50KHNlbGYsIGJ1aWxk
ZXIsIHRlc3RfdHlwZSwgbmFtZSk6CisgICAgZGVmIF9nZXRfZmlsZV9jb250ZW50KHNlbGYsIGJ1
aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSk6CiAgICAgICAgICIiIlJldHVybiBjb250ZW50IG9mIHRo
ZSBmaWxlIHRoYXQgbWF0Y2hlcyBidWlsZGVyIGFuZCBmaWxlIG5hbWUuCiAKICAgICAgICAgQXJn
czoKQEAgLTEyNiwxNiArMTI2LDE2IEBAIGNsYXNzIEdldEZpbGUoYmxvYnN0b3JlX2hhbmRsZXJz
LkJsb2JzdG8KICAgICAgICAgIyBzcGVjaWZpZWQgaW4gdGhlIHJlcXVlc3QsIHJldHVybiBsaXN0
IG9mIGZpbGVzLCBvdGhlcndpc2UsIHJldHVybgogICAgICAgICAjIGZpbGUgY29udGVudC4KICAg
ICAgICAgaWYgZGlyIG9yIG5vdCBidWlsZGVyIG9yIG5vdCBuYW1lOgotICAgICAgICAgICAgcmV0
dXJuIHNlbGYuZ2V0X2ZpbGVfbGlzdChidWlsZGVyLCB0ZXN0X3R5cGUsIG5hbWUpCisgICAgICAg
ICAgICByZXR1cm4gc2VsZi5fZ2V0X2ZpbGVfbGlzdChidWlsZGVyLCB0ZXN0X3R5cGUsIG5hbWUp
CiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfZmlsZV9jb250ZW50
KGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRf
ZmlsZV9jb250ZW50KGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSkKIAogCiBjbGFzcyBHZXRVcGxv
YWRVcmwod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKICAgICAiIiJHZXQgYW4gdXJsIGZvciB1cGxv
YWRpbmcgZmlsZSB0byBibG9ic3RvcmUuIEEgc3BlY2lhbCB1cmwgaXMgcmVxdWlyZWQgZm9yIGVh
Y2ggYmxvYnNvdHJlIHVwbG9hZC4iIiIKIAogICAgIGRlZiBnZXQoc2VsZik6Ci0gICAgICAgIHVw
bG9hZF91cmwgPSBibG9ic3RvcmUuY3JlYXRlX3VwbG9hZF91cmwoIi91cGxvYWQiKQorICAgICAg
ICB1cGxvYWRfdXJsID0gYmxvYnN0b3JlLmNyZWF0ZV91cGxvYWRfdXJsKCIvdGVzdGZpbGUvdXBs
b2FkIikKICAgICAgICAgbG9nZ2luZy5pbmZvKCJHZXR0aW5nIHVwbG9hZCB1cmw6ICVzLiIsIHVw
bG9hZF91cmwpCiAgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKHVwbG9hZF91cmwpCiAK
QEAgLTE5NCw3ICsxOTQsNyBAQCBjbGFzcyBVcGxvYWRGb3JtKHdlYmFwcC5SZXF1ZXN0SGFuZGxl
cik6CiAgICAgIiIiU2hvdyBhIGZvcm0gc28gdXNlciBjYW4gc3VibWl0IGEgZmlsZSB0byBibG9i
c3RvcmUuIiIiCiAKICAgICBkZWYgZ2V0KHNlbGYpOgotICAgICAgICB1cGxvYWRfdXJsID0gYmxv
YnN0b3JlLmNyZWF0ZV91cGxvYWRfdXJsKCIvdXBsb2FkIikKKyAgICAgICAgdXBsb2FkX3VybCA9
IGJsb2JzdG9yZS5jcmVhdGVfdXBsb2FkX3VybCgiL3Rlc3RmaWxlL3VwbG9hZCIpCiAgICAgICAg
IHRlbXBsYXRlX3ZhbHVlcyA9IHsKICAgICAgICAgICAgICJ1cGxvYWRfdXJsIjogdXBsb2FkX3Vy
bCwKICAgICAgICAgfQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tb2RlbC9k
YXNoYm9hcmRmaWxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvbW9kZWwvZGFzaGJvYXJkZmlsZS5weQkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rl
c3RSZXN1bHRTZXJ2ZXIvbW9kZWwvZGFzaGJvYXJkZmlsZS5weQkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMjQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMg
ZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRh
dGV0aW1lCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHVybGxpYjIKKworZnJvbSBnb29nbGUuYXBw
ZW5naW5lLmV4dCBpbXBvcnQgZGIKKworU1ZOX1BBVEhfREFTSEJPQVJEID0gKCJodHRwOi8vc3Jj
LmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21lL3RydW5rL3NyYyIKKyAgICAiL3dlYmtpdC90b29s
cy9sYXlvdXRfdGVzdHMvIikKKworY2xhc3MgRGFzaGJvYXJkRmlsZShkYi5Nb2RlbCk6CisgICAg
bmFtZSA9IGRiLlN0cmluZ1Byb3BlcnR5KCkKKyAgICBkYXRhID0gZGIuQmxvYlByb3BlcnR5KCkK
KyAgICBkYXRlID0gZGIuRGF0ZVRpbWVQcm9wZXJ0eShhdXRvX25vd19hZGQ9VHJ1ZSkKKworICAg
IEBjbGFzc21ldGhvZAorICAgIGRlZiBnZXRfZmlsZXMoY2xzLCBuYW1lLCBsaW1pdD0xKToKKyAg
ICAgICAgcXVlcnkgPSBEYXNoYm9hcmRGaWxlLmFsbCgpCisgICAgICAgIGlmIG5hbWU6CisgICAg
ICAgICAgICBxdWVyeSA9IHF1ZXJ5LmZpbHRlcigibmFtZSA9IiwgbmFtZSkKKyAgICAgICAgcmV0
dXJuIHF1ZXJ5Lm9yZGVyKCItZGF0ZSIpLmZldGNoKGxpbWl0KQorCisgICAgQGNsYXNzbWV0aG9k
CisgICAgZGVmIGFkZF9maWxlKGNscywgbmFtZSwgZGF0YSk6CisgICAgICAgIGZpbGUgPSBEYXNo
Ym9hcmRGaWxlKCkKKyAgICAgICAgZmlsZS5uYW1lID0gbmFtZQorICAgICAgICBmaWxlLmRhdGEg
PSBkYi5CbG9iKGRhdGEpCisgICAgICAgIGZpbGUucHV0KCkKKworICAgICAgICBsb2dnaW5nLmRl
YnVnKCJEYXNoYm9hcmQgZmlsZSBzYXZlZCwgbmFtZTogJXMuIiwgbmFtZSkKKworICAgICAgICBy
ZXR1cm4gZmlsZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGdyYWJfZmlsZV9mcm9tX3N2
bihjbHMsIG5hbWUpOgorICAgICAgICAjIEZvciBub3csIGRhc2hib2FyZF9iYXNlLmpzIGFuZCBh
Z2dyZWdhdGVfcmVzdWx0cy5odG1sIGxpdmUgaW4gc3ViCisgICAgICAgICMgZGlyZWN0b3J5IGlu
IFNWTiByZXBvc2l0b3J5LiBUaGVyZSBhcmUgc3RpbGwgb3RoZXIgZmlsZXMgbGluayB0bworICAg
ICAgICAjIHRoZW0uIFRoaXMgaXMgYSB0ZW1wb3Jhcnkgc29sdXRpb24gYmVmb3JlIHdlIG1vdmUg
dGhlbSB0byBzYW1lIGRpcgorICAgICAgICAjIGFzIGZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbCBp
biBTVk4uCisgICAgICAgICMgUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIGZsYWtpbmVz
cyBkYXNoYm9hcmQKKyAgICAgICAgIyBpcyBmdWxseSBtaWdyYXRlZCB0byBBRSBhbmQgb3RoZXIg
ZmlsZXMgd2hvIGxpbmsgdG8gdGhlbSBhcmUgdXBkYXRlZAorICAgICAgICAjIHRvIHVzZSBBRS4K
KyAgICAgICAgbG9nZ2luZy5kZWJ1ZygiR3JhYiBmaWxlIGZyb20gU1ZOLCBuYW1lOiAlcy4iLCBu
YW1lKQorICAgICAgICBpZiBuYW1lID09ICJkYXNoYm9hcmRfYmFzZS5qcyIgb3IgbmFtZSA9PSAi
YWdncmVnYXRlX3Jlc3VsdHMuaHRtbCI6CisgICAgICAgICAgICB1cmwgPSBTVk5fUEFUSF9EQVNI
Qk9BUkQgKyAiZGFzaGJvYXJkcy8iICsgbmFtZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
dXJsID0gU1ZOX1BBVEhfREFTSEJPQVJEICsgbmFtZQorCisgICAgICAgIGxvZ2dpbmcuZGVidWco
IkdyYWIgZmlsZSBmcm9tIFNWTiwgdXJsOiAlcy4iLCB1cmwpCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIGZpbGUgPSB1cmxsaWIyLnVybG9wZW4odXJsKQorICAgICAgICAgICAgaWYgbm90IGZp
bGU6CisgICAgICAgICAgICAgICAgbG9nZ2luZy5lcnJvcigiRmFpbGVkIHRvIGdyYWIgZGFzaGJv
YXJkIGZpbGU6ICVzLiIsIHVybCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAg
ICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkKKyAgICAgICAgZXhjZXB0IHVybGxpYjIuSFRUUEVy
cm9yLCBlOgorICAgICAgICAgICAgbG9nZ2luZy5lcnJvcigiRmFpbGVkIHRvIGdyYWIgZGFzaGJv
YXJkIGZpbGU6ICVzIiwgc3RyKGUpKQorICAgICAgICBleGNlcHQgdXJsbGliMi5VUkxFcnJvciwg
ZToKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoIkZhaWxlZCB0byBncmFiIGRhc2hib2FyZCBm
aWxlOiAlcyIsIHN0cihlKSkKKworICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQGNsYXNzbWV0
aG9kCisgICAgZGVmIHVwZGF0ZV9maWxlKGNscywgbmFtZSk6CisgICAgICAgIGRhdGEgPSBjbHMu
Z3JhYl9maWxlX2Zyb21fc3ZuKG5hbWUpCisgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKworICAgICAgICBsb2dnaW5nLmluZm8oIkdvdCBmaWxlIGZyb20gU1ZO
LiIpCisKKyAgICAgICAgZmlsZXMgPSBjbHMuZ2V0X2ZpbGVzKG5hbWUpCisgICAgICAgIGlmIG5v
dCBmaWxlczoKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygiTm8gZXhpc3RpbmcgZmlsZSwgYWRk
ZWQgYXMgbmV3IGZpbGUuIikKKyAgICAgICAgICAgIHJldHVybiBjbHMuYWRkX2ZpbGUobmFtZSwg
ZGF0YSkKKyAgICAgICAgCisgICAgICAgIGxvZ2dpbmcuZGVidWcoIlVwZGF0aW5nIGV4aXN0aW5n
IGZpbGUuIikKKyAgICAgICAgZmlsZSA9IGZpbGVzWzBdCisgICAgICAgIGZpbGUuZGF0YSA9IGRh
dGEKKyAgICAgICAgZmlsZS5kYXRlID0gZGF0ZXRpbWUubm93KCkKKyAgICAgICAgZmlsZS5wdXQo
KQorCisgICAgICAgIGxvZ2dpbmcuaW5mbygiRGFzaGJvYXJkIGZpbGUgcmVwbGFjZWQsIG5hbWU6
ICVzLiIsIG5hbWUpCisKKyAgICAgICAgcmV0dXJuIGZpbGUKKworICAgIEBjbGFzc21ldGhvZAor
ICAgIGRlZiBkZWxldGVfZmlsZShjbHMsIG5hbWUpOgorICAgICAgICBmaWxlcyA9IGNscy5nZXRf
ZmlsZXMobmFtZSkKKyAgICAgICAgaWYgbm90IGZpbGVzOgorICAgICAgICAgICAgbG9nZ2luZy53
YXJuaW5nKCJGaWxlIG5vdCBmb3VuZCwgbmFtZTogJXMuIiwgbmFtZSkKKyAgICAgICAgICAgIHJl
dHVybiBGYWxzZQorCisgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgorICAgICAgICAgICAgZmls
ZS5kZWxldGUoKQorCisgICAgICAgIHJldHVybiBUcnVlCkluZGV4OiBXZWJLaXRUb29scy9UZXN0
UmVzdWx0U2VydmVyL21vZGVsL3Rlc3RmaWxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L1Rlc3RSZXN1bHRTZXJ2ZXIvbW9kZWwvdGVzdGZpbGUucHkJKHJldmlzaW9uIDU2MDczKQorKysg
V2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tb2RlbC90ZXN0ZmlsZS5weQkod29ya2luZyBj
b3B5KQpAQCAtODUsNyArODUsNyBAQCBjbGFzcyBUZXN0RmlsZShkYi5Nb2RlbCk6CiAKICAgICAg
ICAgbG9nZ2luZy5pbmZvKAogICAgICAgICAgICAgIkZpbGUgc2F2ZWQsIGJ1aWxkZXI6ICVzLCB0
ZXN0X3R5cGU6ICVzLCBuYW1lOiAlcywgYmxvYiBrZXk6ICVzLiIsCi0gICAgICAgICAgICBidWls
ZGVyLCBmaWxlLm5hbWUsIGZpbGUuYmxvYl9rZXkpCisgICAgICAgICAgICBidWlsZGVyLCB0ZXN0
X3R5cGUsIGZpbGUubmFtZSwgZmlsZS5ibG9iX2tleSkKIAogICAgICAgICByZXR1cm4gZmlsZQog
CkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0eWxlc2hlZXRzL2Rhc2hib2Fy
ZGZpbGUuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3R5
bGVzaGVldHMvZGFzaGJvYXJkZmlsZS5jc3MJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9U
ZXN0UmVzdWx0U2VydmVyL3N0eWxlc2hlZXRzL2Rhc2hib2FyZGZpbGUuY3NzCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMwIEBACitib2R5IHsKKyAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIEhlbHZl
dGljYSwgc2Fucy1zZXJpZjsKKyAgcGFkZGluZzogMHB4OworICBjb2xvcjogIzQ0NDsKK30KK2gx
IHsKKyAgY29sb3I6ICM0NDQ7CisgIGZvbnQtc2l6ZTogMTRwdDsKKyAgZm9udC1zdHlsZTogaXRh
bGljOworICBtYXJnaW46IDBweDsKKyAgcGFkZGluZzogNXB4OworfQordGFibGUgeworICBib3Jk
ZXItc3BhY2luZzogMHB4OworfQordGggeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUFBOworICBj
b2xvcjogd2hpdGU7CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHBhZGRpbmc6IDVweDsKKyAgZm9u
dC1zaXplOiAxMnB0OworfQordGQgeworICBmb250LXNpemU6IDExcHQ7CisgIHBhZGRpbmc6IDNw
eDsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KK3RyOmhvdmVyIHsKKyAgYmFja2dyb3VuZC1jb2xv
cjogI0VFRTsKK30KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvdGVtcGxhdGVz
L2Rhc2hib2FyZGZpbGVsaXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJl
c3VsdFNlcnZlci90ZW1wbGF0ZXMvZGFzaGJvYXJkZmlsZWxpc3QuaHRtbAkocmV2aXNpb24gMCkK
KysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvdGVtcGxhdGVzL2Rhc2hib2FyZGZpbGVs
aXN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5EYXNoYm9hcmQgRmlsZXM8L3RpdGxlPgorPGxpbmsgdHlw
ZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL3N0eWxlc2hlZXRzL2Rhc2hib2Fy
ZGZpbGUuY3NzIiAvPgorPC9oZWFkPgorPGJvZHk+Cis8aDE+RGFzaGJvYXJkIEZpbGVzCis8L2gx
PgorPGRpdj4KKyAgICA8dGFibGU+CisgICAgICAgIDx0cj4KKyAgICAgICAgICAgIDx0aD5GaWxl
PC90aD4KKyAgICAgICAgICAgIDx0aD5EYXRlPC90aD4KKyAgICAgICAgICAgIDx0aD48L3RoPgor
ICAgICAgICB7JSBmb3IgZmlsZSBpbiBmaWxlcyAlfQorICAgICAgICA8dHI+eyUgaWYgZmlsZS5u
YW1lICV9CisgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iL2Rhc2hib2FyZHMve3sgZmlsZS5uYW1l
IH19IiA+CisgICAgICAgICAgICAgICAge3sgZmlsZS5uYW1lIH19CisgICAgICAgICAgICAgICAg
PC9hPgorICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgIDx0ZD57eyBmaWxlLmRhdGV8ZGF0
ZToiZC1NLVkgSDppOnMiIH19CisgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgPHRkPjxh
IGhyZWY9Ii9kYXNoYm9hcmRzL2RlbGV0ZT9maWxlPXt7IGZpbGUubmFtZSB9fSIgPgorICAgICAg
ICAgICAgICAgIERlbGV0ZQorICAgICAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDwvdGQ+
CisgICAgICAgIHslIGVuZGlmICV9CisgICAgICAgIDwvdHI+CisgICAgeyUgZW5kZm9yICV9Cisg
ICAgPC90YWJsZT4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViS2l0VG9vbHMv
VGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0
bWwJKHJldmlzaW9uIDU2MDczKQorKysgV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1w
bGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDIzICsyMCwyMyBA
QAogICAgICAgICAgICAgPHRoPjwvdGg+CiAgICAgICAgIHslIGZvciBmaWxlIGluIGZpbGVzICV9
CiAgICAgICAgIDx0cj57JSBpZiBmaWxlLmJ1aWxkZXIgYW5kIGZpbGUubmFtZSAlfQotICAgICAg
ICAgICAgPHRkPjxhIGhyZWY9Ii9nZXRmaWxlP2J1aWxkZXI9e3sgZmlsZS5idWlsZGVyIH19IiA+
CisgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iL3Rlc3RmaWxlP2J1aWxkZXI9e3sgZmlsZS5idWls
ZGVyIH19IiA+CiAgICAgICAgICAgICAgICAge3sgZmlsZS5idWlsZGVyIH19CiAgICAgICAgICAg
ICAgICAgPC9hPgogICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgIDx0ZD57JSBpZiBmaWxl
LnRlc3RfdHlwZSAlfQotICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9nZXRmaWxlP3Rlc3R0eXBl
PXt7IGZpbGUudGVzdF90eXBlIH19IiA+CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Rlc3Rm
aWxlP3Rlc3R0eXBlPXt7IGZpbGUudGVzdF90eXBlIH19IiA+CiAgICAgICAgICAgICAgICAge3sg
ZmlsZS50ZXN0X3R5cGUgfX0KICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAg
eyUgZW5kaWYgJX0KICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+PGEgaHJlZj0i
L2dldGZpbGU/YnVpbGRlcj17eyBmaWxlLmJ1aWxkZXIgfX0mbmFtZT17eyBmaWxlLm5hbWUgfX0i
ID4KKyAgICAgICAgICAgIDx0ZD48YSBocmVmPSIvdGVzdGZpbGU/YnVpbGRlcj17eyBmaWxlLmJ1
aWxkZXIgfX0mbmFtZT17eyBmaWxlLm5hbWUgfX0iID4KICAgICAgICAgICAgICAgICB7eyBmaWxl
Lm5hbWUgfX0KICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICA8L3RkPgogICAgICAg
ICAgICAgPHRkPnt7IGZpbGUuZGF0ZXxkYXRlOiJkLU0tWSBIOmk6cyIgfX0KICAgICAgICAgICAg
IDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+PGEgaHJlZj0iL2RlbGV0ZWZpbGU/a2V5PXt7IGZpbGUu
a2V5IH19JmJ1aWxkZXI9e3sgYnVpbGRlciB9fSZuYW1lPXt7IG5hbWUgfX0iID4KKyAgICAgICAg
ICAgIDx0ZD48YSBocmVmPSIvdGVzdGZpbGUvZGVsZXRlP2tleT17eyBmaWxlLmtleSB9fSZidWls
ZGVyPXt7IGJ1aWxkZXIgfX0mbmFtZT17eyBuYW1lIH19IiA+CiAgICAgICAgICAgICAgICAgRGVs
ZXRlCiAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgPC90ZD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51466</attachid>
            <date>2010-03-23 16:10:15 -0700</date>
            <delta_ts>2010-03-24 14:45:54 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>test_results_server.patch</filename>
            <type>text/plain</type>
            <size>21703</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2MDc1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDMtMTYgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSG9zdCBsYXlvdXQgdGVzdCBmbGFraW5lc3MgZGFzaGJvYXJkIGluIFRlc3RS
ZXN1bHRTZXJ2ZXIgYXBwZW5naW5lLgorCisgICAgICAgIEZsYWtpbmVzcyBkYXNoYm9hcmQgaXMg
YSB0b29sIHRvIG1vbml0b3IgbGF5b3V0IHRlc3Qgc3RhdHVzIGFuZAorICAgICAgICBoZWxwIGxh
eW91dCB0ZXN0IHJlZ3Jlc3Npb24gZGlhZ25vc3RpY3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MTk1CisKKyAgICAgICAgKiBUZXN0UmVzdWx0
U2VydmVyL2hhbmRsZXJzL2Rhc2hib2FyZGhhbmRsZXIucHk6IEFkZGVkLgorICAgICAgICAgLSBO
ZXcgaGFuZGxlciB0byBoYW5kbGUgZGFzaGJvYXJkIHJlcXVlc3QKKyAgICAgICAgKiBUZXN0UmVz
dWx0U2VydmVyL2hhbmRsZXJzL21lbnUucHk6CisgICAgICAgICAtIEFkZCBuZXcgZGFzaGJvYXJk
IGxpbmtzCisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVycy90ZXN0ZmlsZWhhbmRs
ZXIucHk6CisgICAgICAgICAtIFJlcXVlc3Qgcm91dGVzIHJlZmFjdG9yeQorICAgICAgICAqIFRl
c3RSZXN1bHRTZXJ2ZXIvaW5kZXgueWFtbDoKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL21h
aW4ucHk6CisgICAgICAgICAtIEFkZCBuZXcgZGFzaGJvYXJkIHJlcXVlc3Qgcm91dGVzIGFuZCBy
ZWZhY3RvciB0ZXN0IHJlc3VsdCBmaWxlIHJvdW50ZXMuCisgICAgICAgICogVGVzdFJlc3VsdFNl
cnZlci9tb2RlbC9kYXNoYm9hcmRmaWxlLnB5OiBBZGRlZC4KKyAgICAgICAgIC0gTW9kZWwgdG8g
YWNjZXNzIGRhdGFzdG9yZSBmb3IgZGFzaGJvYXJkIGZpbGVzCisgICAgICAgICogVGVzdFJlc3Vs
dFNlcnZlci9tb2RlbC90ZXN0ZmlsZS5weToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0
eWxlc2hlZXRzL2Rhc2hib2FyZGZpbGUuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0UmVzdWx0
U2VydmVyL3RlbXBsYXRlcy9kYXNoYm9hcmRmaWxlbGlzdC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBUZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy9zaG93ZmlsZWxpc3QuaHRtbDoKKwogMjAxMC0w
My0xNiAgSm9hbm1hcmllIERpZ2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0
U2VydmVyL2luZGV4LnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9pbmRleC55YW1sCShyZXZpc2lvbiA1NjA3MykKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvaW5kZXgueWFtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsMTYgKzEwLDE1IEBAIGlu
ZGV4ZXM6DQogIyBhdXRvbWF0aWNhbGx5IHVwbG9hZGVkIHRvIHRoZSBhZG1pbiBjb25zb2xlIHdo
ZW4geW91IG5leHQgZGVwbG95DQogIyB5b3VyIGFwcGxpY2F0aW9uIHVzaW5nIGFwcGNmZy5weS4N
CiANCi0tIGtpbmQ6IFRlc3RGaWxlDQorLSBraW5kOiBEYXNoYm9hcmRGaWxlDQogICBwcm9wZXJ0
aWVzOg0KLSAgLSBuYW1lOiBidWlsZGVyDQorICAtIG5hbWU6IG5hbWUNCiAgIC0gbmFtZTogZGF0
ZQ0KICAgICBkaXJlY3Rpb246IGRlc2MNCiANCiAtIGtpbmQ6IFRlc3RGaWxlDQogICBwcm9wZXJ0
aWVzOg0KICAgLSBuYW1lOiBidWlsZGVyDQotICAtIG5hbWU6IG5hbWUNCiAgIC0gbmFtZTogZGF0
ZQ0KICAgICBkaXJlY3Rpb246IGRlc2MNCiANCkBAIC0yNywxNCArMjYsMTQgQEAgaW5kZXhlczoN
CiAgIHByb3BlcnRpZXM6DQogICAtIG5hbWU6IGJ1aWxkZXINCiAgIC0gbmFtZTogbmFtZQ0KLSAg
LSBuYW1lOiB0ZXN0X3R5cGUNCiAgIC0gbmFtZTogZGF0ZQ0KICAgICBkaXJlY3Rpb246IGRlc2MN
CiANCiAtIGtpbmQ6IFRlc3RGaWxlDQogICBwcm9wZXJ0aWVzOg0KLSAgLSBuYW1lOiBidWlsZGVy
PQ0KLSAgLSBuYW1lOiBuYW1lPQ0KKyAgLSBuYW1lOiBidWlsZGVyDQorICAtIG5hbWU6IG5hbWUN
CisgIC0gbmFtZTogdGVzdF90eXBlDQogICAtIG5hbWU6IGRhdGUNCiAgICAgZGlyZWN0aW9uOiBk
ZXNjDQogDQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tYWluLnB5Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbWFpbi5weQkocmV2aXNpb24g
NTYwNzMpCisrKyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL21haW4ucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDIzICszMywyMiBAQCB1c2VfbGlicmFyeSgnZGphbmdvJywgJzEuMScpCiBm
cm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJhcHAKIGZyb20gZ29vZ2xlLmFwcGVu
Z2luZS5leHQud2ViYXBwLnV0aWwgaW1wb3J0IHJ1bl93c2dpX2FwcAogCi1mcm9tIGhhbmRsZXJz
Lm1lbnUgaW1wb3J0IE1lbnUKLWZyb20gaGFuZGxlcnMudGVzdGZpbGVoYW5kbGVyIGltcG9ydCBE
ZWxldGVGaWxlCi1mcm9tIGhhbmRsZXJzLnRlc3RmaWxlaGFuZGxlciBpbXBvcnQgR2V0RmlsZQot
ZnJvbSBoYW5kbGVycy50ZXN0ZmlsZWhhbmRsZXIgaW1wb3J0IEdldFVwbG9hZFVybAotZnJvbSBo
YW5kbGVycy50ZXN0ZmlsZWhhbmRsZXIgaW1wb3J0IFVwbG9hZAotZnJvbSBoYW5kbGVycy50ZXN0
ZmlsZWhhbmRsZXIgaW1wb3J0IFVwbG9hZEZvcm0KLWZyb20gaGFuZGxlcnMudGVzdGZpbGVoYW5k
bGVyIGltcG9ydCBVcGxvYWRTdGF0dXMKK2Zyb20gaGFuZGxlcnMgaW1wb3J0IGRhc2hib2FyZGhh
bmRsZXIKK2Zyb20gaGFuZGxlcnMgaW1wb3J0IG1lbnUKK2Zyb20gaGFuZGxlcnMgaW1wb3J0IHRl
c3RmaWxlaGFuZGxlcgogCiByb3V0ZXMgPSBbCi0gICAgKCcvZGVsZXRlZmlsZScsIERlbGV0ZUZp
bGUpLAotICAgICgnL2dldGZpbGUnLCBHZXRGaWxlKSwKLSAgICAoJy9nZXR1cGxvYWR1cmwnLCBH
ZXRVcGxvYWRVcmwpLAotICAgICgnL3VwbG9hZCcsIFVwbG9hZCksCi0gICAgKCcvdXBsb2FkZmFp
bCcsIFVwbG9hZFN0YXR1cyksCi0gICAgKCcvdXBsb2FkZm9ybScsIFVwbG9hZEZvcm0pLAotICAg
ICgnL3VwbG9hZHN1Y2Nlc3MnLCBVcGxvYWRTdGF0dXMpLAotICAgICgnLyp8L21lbnUnLCBNZW51
KSwKKyAgICAoJy9kYXNoYm9hcmRzL2RlbGV0ZScsIGRhc2hib2FyZGhhbmRsZXIuRGVsZXRlRGFz
aGJvYXJkRmlsZSksCisgICAgKCcvZGFzaGJvYXJkcy91cGRhdGUnLCBkYXNoYm9hcmRoYW5kbGVy
LlVwZGF0ZURhc2hib2FyZEZpbGUpLAorICAgICgnL2Rhc2hib2FyZHMvKFteP10rKT8nLCBkYXNo
Ym9hcmRoYW5kbGVyLkdldERhc2hib2FyZEZpbGUpLAorICAgICgnL3Rlc3RmaWxlL2RlbGV0ZScs
IHRlc3RmaWxlaGFuZGxlci5EZWxldGVGaWxlKSwKKyAgICAoJy90ZXN0ZmlsZS91cGxvYWR1cmwn
LCB0ZXN0ZmlsZWhhbmRsZXIuR2V0VXBsb2FkVXJsKSwKKyAgICAoJy90ZXN0ZmlsZS91cGxvYWQn
LCB0ZXN0ZmlsZWhhbmRsZXIuVXBsb2FkKSwKKyAgICAoJy90ZXN0ZmlsZS91cGxvYWRmb3JtJywg
dGVzdGZpbGVoYW5kbGVyLlVwbG9hZEZvcm0pLAorICAgICgnL3Rlc3RmaWxlLz8nLCB0ZXN0Zmls
ZWhhbmRsZXIuR2V0RmlsZSksCisgICAgKCcvdXBsb2FkZmFpbCcsIHRlc3RmaWxlaGFuZGxlci5V
cGxvYWRTdGF0dXMpLAorICAgICgnL3VwbG9hZHN1Y2Nlc3MnLCB0ZXN0ZmlsZWhhbmRsZXIuVXBs
b2FkU3RhdHVzKSwKKyAgICAoJy8qfC9tZW51JywgbWVudS5NZW51KSwKIF0KIAogYXBwbGljYXRp
b24gPSB3ZWJhcHAuV1NHSUFwcGxpY2F0aW9uKHJvdXRlcywgZGVidWc9VHJ1ZSkKSW5kZXg6IFdl
YktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvaGFuZGxlcnMvZGFzaGJvYXJkaGFuZGxlci5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL2hhbmRsZXJzL2Rhc2hi
b2FyZGhhbmRsZXIucHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2Vy
dmVyL2hhbmRsZXJzL2Rhc2hib2FyZGhhbmRsZXIucHkJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTA5IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHVybGxp
YjIKKworZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwCitmcm9tIGdvb2ds
ZS5hcHBlbmdpbmUuZXh0LndlYmFwcCBpbXBvcnQgdGVtcGxhdGUKKworZnJvbSBtb2RlbC5kYXNo
Ym9hcmRmaWxlIGltcG9ydCBEYXNoYm9hcmRGaWxlCisKK1BBUkFNX0ZJTEUgPSAiZmlsZSIKKwor
Y2xhc3MgR2V0RGFzaGJvYXJkRmlsZSh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgorICAgIGRlZiBn
ZXQoc2VsZiwgcmVzb3VyY2UpOgorICAgICAgICBpZiBub3QgcmVzb3VyY2U6CisgICAgICAgICAg
ICBsb2dnaW5nLmRlYnVnKCJHZXR0aW5nIGRhc2hib2FyZCBmaWxlIGxpc3QuIikKKyAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9nZXRfZmlsZV9saXN0KCkKKworICAgICAgICBmaWxlbmFtZSA9IHN0
cih1cmxsaWIyLnVucXVvdGUocmVzb3VyY2UpKQorCisgICAgICAgIGxvZ2dpbmcuZGVidWcoIkdl
dHRpbmcgZGFzaGJvYXJkIGZpbGU6ICVzIiwgZmlsZW5hbWUpCisKKyAgICAgICAgZmlsZXMgPSBE
YXNoYm9hcmRGaWxlLmdldF9maWxlcyhmaWxlbmFtZSkKKyAgICAgICAgaWYgbm90IGZpbGVzOgor
ICAgICAgICAgICAgbG9nZ2luZy5lcnJvcigiRmFpbGVkIHRvIGZpbmQgZGFzaGJvYXJkIGZpbGU6
ICVzLCByZXF1ZXN0OiAlcyIsCisgICAgICAgICAgICAgICAgZmlsZW5hbWUsIHNlbGYucmVxdWVz
dCkKKyAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uuc2V0X3N0YXR1cyg0MDQpCisgICAgICAgICAg
ICByZXR1cm4KKworICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZShmaWxlc1swXS5kYXRh
KQorCisgICAgZGVmIF9nZXRfZmlsZV9saXN0KHNlbGYpOgorICAgICAgICBsb2dnaW5nLmluZm8o
ImdldHRpbmcgZGFzaGJvYXJkIGZpbGUgbGlzdC4iKQorCisgICAgICAgIGZpbGVzID0gRGFzaGJv
YXJkRmlsZS5nZXRfZmlsZXMoIiIsIDEwMCkKKyAgICAgICAgaWYgbm90IGZpbGVzOgorICAgICAg
ICAgICAgbG9nZ2luZy5pbmZvKCJGYWlsZWQgdG8gZmluZCBkYXNoYm9hcmQgZmlsZXMuIikKKyAg
ICAgICAgICAgIHNlbGYucmVzcG9uc2Uuc2V0X3N0YXR1cyg0MDQpCisgICAgICAgICAgICByZXR1
cm4KKworICAgICAgICB0ZW1wbGF0ZV92YWx1ZXMgPSB7CisgICAgICAgICAgICAiZmlsZXMiOiBm
aWxlcywKKyAgICAgICAgfQorICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgKKyAgICAg
ICAgICAgIHRlbXBsYXRlLnJlbmRlcigidGVtcGxhdGVzL2Rhc2hib2FyZGZpbGVsaXN0Lmh0bWwi
LAorICAgICAgICAgICAgICAgIHRlbXBsYXRlX3ZhbHVlcykpCisKKworY2xhc3MgVXBkYXRlRGFz
aGJvYXJkRmlsZSh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgorICAgIGRlZiBnZXQoc2VsZik6Cisg
ICAgICAgIGZpbGVzID0gc2VsZi5yZXF1ZXN0LmdldF9hbGwoUEFSQU1fRklMRSkKKyAgICAgICAg
aWYgbm90IGZpbGVzOgorICAgICAgICAgICAgZmlsZXMgPSBbImZsYWtpbmVzc19kYXNoYm9hcmQu
aHRtbCIsCisgICAgICAgICAgICAgICAgICAgICAiZGFzaGJvYXJkX2Jhc2UuanMiLAorICAgICAg
ICAgICAgICAgICAgICAgImFnZ3JlZ2F0ZV9yZXN1bHRzLmh0bWwiXQorCisgICAgICAgIGVycm9y
cyA9IFtdCisgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgorICAgICAgICAgICAgaWYgbm90IERh
c2hib2FyZEZpbGUudXBkYXRlX2ZpbGUoZmlsZSk6CisgICAgICAgICAgICAgICAgZXJyb3JzLmFw
cGVuZCgiRmFpbGVkIHRvIHVwZGF0ZSBmaWxlOiAlcyIgJSBmaWxlKQorCisgICAgICAgIGlmIGVy
cm9yczoKKyAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygiXG4iLmpvaW4oZXJyb3JzKSkKKyAg
ICAgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKCJcbiIuam9pbihlcnJvcnMpKQorICAg
ICAgICAgICAgc2VsZi5yZXNwb25zZS5zZXRfc3RhdHVzKDUwMCkKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHNlbGYucmVzcG9uc2Uuc2V0X3N0YXR1cygyMDApCisgICAgICAgICAgICBzZWxm
LnJlc3BvbnNlLm91dC53cml0ZSgiT0siKQorCisKK2NsYXNzIERlbGV0ZURhc2hib2FyZEZpbGUo
d2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICBmaWxl
cyA9IHNlbGYucmVxdWVzdC5nZXRfYWxsKFBBUkFNX0ZJTEUpCisgICAgICAgIGlmIG5vdCBmaWxl
czoKKyAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygiTm8gZGFzaGJvYXJkIGZpbGUgdG8gZGVs
ZXRlLiIpCisgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLnNldF9zdGF0dXMoNDAwKQorICAgICAg
ICAgICAgcmV0dXJuCisKKyAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICBE
YXNoYm9hcmRGaWxlLmRlbGV0ZV9maWxlKGZpbGUpCisKKyAgICAgICAgIyBEaXNwbGF5IGRhc2hi
b2FyZCBmaWxlIGxpc3QgYWZ0ZXIgZGVsZXRpbmcgdGhlIGZpbGUuCisgICAgICAgIHNlbGYucmVk
aXJlY3QoIi9kYXNoYm9hcmRzLyIpCkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVy
L2hhbmRsZXJzL21lbnUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9oYW5kbGVycy9tZW51LnB5CShyZXZpc2lvbiA1NjA3MykKKysrIFdlYktpdFRvb2xzL1Rl
c3RSZXN1bHRTZXJ2ZXIvaGFuZGxlcnMvbWVudS5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAg
KzMwLDEyIEBAIGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAogZnJvbSBn
b29nbGUuYXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCiAKIG1lbnUgPSBbCi0g
ICAgWyJMaXN0IG9mIGZpbGVzIiwgIi9nZXRmaWxlIl0sCi0gICAgWyJMaXN0IG9mIHJlc3VsdHMu
anNvbiBmaWxlcyIsICIvZ2V0ZmlsZT9uYW1lPXJlc3VsdHMuanNvbiJdLAotICAgIFsiTGlzdCBv
ZiBleHBlY3RhdGlvbnMuanNvbiBmaWxlcyIsICIvZ2V0ZmlsZT9uYW1lPWV4cGVjdGF0aW9ucy5q
c29uIl0sCi0gICAgWyJVcGxvYWQgZmlsZSIsICIvdXBsb2FkZm9ybSJdLAorICAgIFsiTGlzdCBv
ZiB0ZXN0IGZpbGVzIiwgIi90ZXN0ZmlsZSJdLAorICAgIFsiTGlzdCBvZiByZXN1bHRzLmpzb24g
ZmlsZXMiLCAiL3Rlc3RmaWxlP25hbWU9cmVzdWx0cy5qc29uIl0sCisgICAgWyJMaXN0IG9mIGV4
cGVjdGF0aW9ucy5qc29uIGZpbGVzIiwgIi90ZXN0ZmlsZT9uYW1lPWV4cGVjdGF0aW9ucy5qc29u
Il0sCisgICAgWyJVcGxvYWQgdGVzdCBmaWxlIiwgIi90ZXN0ZmlsZS91cGxvYWRmb3JtIl0sCisg
ICAgWyJMaXN0IG9mIGRhc2hib2FyZCBmaWxlcyIsICIvZGFzaGJvYXJkcy8iXSwKKyAgICBbIlVw
ZGF0ZSBkYXNoYm9hcmQgZmlsZXMiLCAiL2Rhc2hib2FyZHMvdXBkYXRlIl0sCiBdCiAKIApJbmRl
eDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVycy90ZXN0ZmlsZWhhbmRsZXIu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVycy90
ZXN0ZmlsZWhhbmRsZXIucHkJKHJldmlzaW9uIDU2MDczKQorKysgV2ViS2l0VG9vbHMvVGVzdFJl
c3VsdFNlcnZlci9oYW5kbGVycy90ZXN0ZmlsZWhhbmRsZXIucHkJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDE0ICs2MCwxNCBAQCBjbGFzcyBEZWxldGVGaWxlKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6
CiAgICAgICAgIFRlc3RGaWxlLmRlbGV0ZV9maWxlKGtleSwgYnVpbGRlciwgdGVzdF90eXBlLCBu
YW1lLCAxMDApCiAKICAgICAgICAgIyBEaXNwbGF5IGZpbGUgbGlzdCBhZnRlciBkZWxldGluZyB0
aGUgZmlsZS4KLSAgICAgICAgc2VsZi5yZWRpcmVjdCgiL2dldGZpbGU/YnVpbGRlcj0lcyZ0ZXN0
dHlwZT0lcyZuYW1lPSVzIgorICAgICAgICBzZWxmLnJlZGlyZWN0KCIvdGVzdGZpbGU/YnVpbGRl
cj0lcyZ0ZXN0dHlwZT0lcyZuYW1lPSVzIgogICAgICAgICAgICAgJSAoYnVpbGRlciwgdGVzdF90
eXBlLCBuYW1lKSkKIAogCiBjbGFzcyBHZXRGaWxlKGJsb2JzdG9yZV9oYW5kbGVycy5CbG9ic3Rv
cmVEb3dubG9hZEhhbmRsZXIpOgogICAgICIiIkdldCBmaWxlIGNvbnRlbnQgb3IgbGlzdCBvZiBm
aWxlcyBmb3IgZ2l2ZW4gYnVpbGRlciBhbmQgbmFtZS4iIiIKIAotICAgIGRlZiBnZXRfZmlsZV9s
aXN0KHNlbGYsIGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSk6CisgICAgZGVmIF9nZXRfZmlsZV9s
aXN0KHNlbGYsIGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSk6CiAgICAgICAgICIiIkdldCBhbmQg
ZGlzcGxheSBhIGxpc3Qgb2YgZmlsZXMgdGhhdCBtYXRjaGVzIGJ1aWxkZXIgYW5kIGZpbGUgbmFt
ZS4KIAogICAgICAgICBBcmdzOgpAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBHZXRGaWxlKGJsb2Jz
dG9yZV9oYW5kbGVycy5CbG9ic3RvCiAgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKHRl
bXBsYXRlLnJlbmRlcigidGVtcGxhdGVzL3Nob3dmaWxlbGlzdC5odG1sIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlX3ZhbHVlcykpCiAK
LSAgICBkZWYgZ2V0X2ZpbGVfY29udGVudChzZWxmLCBidWlsZGVyLCB0ZXN0X3R5cGUsIG5hbWUp
OgorICAgIGRlZiBfZ2V0X2ZpbGVfY29udGVudChzZWxmLCBidWlsZGVyLCB0ZXN0X3R5cGUsIG5h
bWUpOgogICAgICAgICAiIiJSZXR1cm4gY29udGVudCBvZiB0aGUgZmlsZSB0aGF0IG1hdGNoZXMg
YnVpbGRlciBhbmQgZmlsZSBuYW1lLgogCiAgICAgICAgIEFyZ3M6CkBAIC0xMjYsMTYgKzEyNiwx
NiBAQCBjbGFzcyBHZXRGaWxlKGJsb2JzdG9yZV9oYW5kbGVycy5CbG9ic3RvCiAgICAgICAgICMg
c3BlY2lmaWVkIGluIHRoZSByZXF1ZXN0LCByZXR1cm4gbGlzdCBvZiBmaWxlcywgb3RoZXJ3aXNl
LCByZXR1cm4KICAgICAgICAgIyBmaWxlIGNvbnRlbnQuCiAgICAgICAgIGlmIGRpciBvciBub3Qg
YnVpbGRlciBvciBub3QgbmFtZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9maWxlX2xp
c3QoYnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dl
dF9maWxlX2xpc3QoYnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKQogICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2ZpbGVfY29udGVudChidWlsZGVyLCB0ZXN0X3R5cGUs
IG5hbWUpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2ZpbGVfY29udGVudChidWlsZGVy
LCB0ZXN0X3R5cGUsIG5hbWUpCiAKIAogY2xhc3MgR2V0VXBsb2FkVXJsKHdlYmFwcC5SZXF1ZXN0
SGFuZGxlcik6CiAgICAgIiIiR2V0IGFuIHVybCBmb3IgdXBsb2FkaW5nIGZpbGUgdG8gYmxvYnN0
b3JlLiBBIHNwZWNpYWwgdXJsIGlzIHJlcXVpcmVkIGZvciBlYWNoIGJsb2Jzb3RyZSB1cGxvYWQu
IiIiCiAKICAgICBkZWYgZ2V0KHNlbGYpOgotICAgICAgICB1cGxvYWRfdXJsID0gYmxvYnN0b3Jl
LmNyZWF0ZV91cGxvYWRfdXJsKCIvdXBsb2FkIikKKyAgICAgICAgdXBsb2FkX3VybCA9IGJsb2Jz
dG9yZS5jcmVhdGVfdXBsb2FkX3VybCgiL3Rlc3RmaWxlL3VwbG9hZCIpCiAgICAgICAgIGxvZ2dp
bmcuaW5mbygiR2V0dGluZyB1cGxvYWQgdXJsOiAlcy4iLCB1cGxvYWRfdXJsKQogICAgICAgICBz
ZWxmLnJlc3BvbnNlLm91dC53cml0ZSh1cGxvYWRfdXJsKQogCkBAIC0xOTQsNyArMTk0LDcgQEAg
Y2xhc3MgVXBsb2FkRm9ybSh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgogICAgICIiIlNob3cgYSBm
b3JtIHNvIHVzZXIgY2FuIHN1Ym1pdCBhIGZpbGUgdG8gYmxvYnN0b3JlLiIiIgogCiAgICAgZGVm
IGdldChzZWxmKToKLSAgICAgICAgdXBsb2FkX3VybCA9IGJsb2JzdG9yZS5jcmVhdGVfdXBsb2Fk
X3VybCgiL3VwbG9hZCIpCisgICAgICAgIHVwbG9hZF91cmwgPSBibG9ic3RvcmUuY3JlYXRlX3Vw
bG9hZF91cmwoIi90ZXN0ZmlsZS91cGxvYWQiKQogICAgICAgICB0ZW1wbGF0ZV92YWx1ZXMgPSB7
CiAgICAgICAgICAgICAidXBsb2FkX3VybCI6IHVwbG9hZF91cmwsCiAgICAgICAgIH0KQEAgLTIw
NSw2ICsyMDUsOCBAQCBjbGFzcyBVcGxvYWRTdGF0dXMod2ViYXBwLlJlcXVlc3RIYW5kbGVyCiAg
ICAgIiIiUmV0dXJuIHN0YXR1cyBvZiBmaWxlIHVwbG9hZGluZyIiIgogCiAgICAgZGVmIGdldChz
ZWxmKToKKyAgICAgICAgbG9nZ2luZy5kZWJ1ZygiVXBkYXRlIHN0YXR1cyIpCisKICAgICAgICAg
aWYgc2VsZi5yZXF1ZXN0LnBhdGggPT0gIi91cGxvYWRzdWNjZXNzIjoKICAgICAgICAgICAgIHNl
bGYucmVzcG9uc2Uuc2V0X3N0YXR1cygyMDApCiAgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLm91
dC53cml0ZSgiT0siKQpAQCAtMjE0LDQgKzIxNiw0IEBAIGNsYXNzIFVwbG9hZFN0YXR1cyh3ZWJh
cHAuUmVxdWVzdEhhbmRsZXIKICAgICAgICAgICAgICAgICBtZXNzYWdlcyA9ICJGQUlMOiAiICsg
IlxuIi5qb2luKGVycm9ycykKICAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcobWVzc2Fn
ZXMpCiAgICAgICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUobWVzc2FnZXMpCi0g
ICAgICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5zZXRfc3RhdHVzKDUwMCkKKyAgICAgICAgICAg
ICAgICBzZWxmLnJlc3BvbnNlLnNldF9zdGF0dXMoNTAwLCAiOyAiLmpvaW4oZXJyb3JzKSkKSW5k
ZXg6IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbW9kZWwvZGFzaGJvYXJkZmlsZS5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL21vZGVsL2Rhc2hib2Fy
ZGZpbGUucHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL21v
ZGVsL2Rhc2hib2FyZGZpbGUucHkJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE0IEBACisjIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQoraW1wb3J0IGxv
Z2dpbmcKK2ltcG9ydCB1cmxsaWIyCisKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0
IGRiCisKK1NWTl9QQVRIX0RBU0hCT0FSRCA9ICgiaHR0cDovL3NyYy5jaHJvbWl1bS5vcmcvdmll
d3ZjL2Nocm9tZS90cnVuay90b29scy8iCisgICAgImRhc2hib2FyZHMvIikKKworY2xhc3MgRGFz
aGJvYXJkRmlsZShkYi5Nb2RlbCk6CisgICAgbmFtZSA9IGRiLlN0cmluZ1Byb3BlcnR5KCkKKyAg
ICBkYXRhID0gZGIuQmxvYlByb3BlcnR5KCkKKyAgICBkYXRlID0gZGIuRGF0ZVRpbWVQcm9wZXJ0
eShhdXRvX25vd19hZGQ9VHJ1ZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnZXRfZmls
ZXMoY2xzLCBuYW1lLCBsaW1pdD0xKToKKyAgICAgICAgcXVlcnkgPSBEYXNoYm9hcmRGaWxlLmFs
bCgpCisgICAgICAgIGlmIG5hbWU6CisgICAgICAgICAgICBxdWVyeSA9IHF1ZXJ5LmZpbHRlcigi
bmFtZSA9IiwgbmFtZSkKKyAgICAgICAgcmV0dXJuIHF1ZXJ5Lm9yZGVyKCItZGF0ZSIpLmZldGNo
KGxpbWl0KQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGFkZF9maWxlKGNscywgbmFtZSwg
ZGF0YSk6CisgICAgICAgIGZpbGUgPSBEYXNoYm9hcmRGaWxlKCkKKyAgICAgICAgZmlsZS5uYW1l
ID0gbmFtZQorICAgICAgICBmaWxlLmRhdGEgPSBkYi5CbG9iKGRhdGEpCisgICAgICAgIGZpbGUu
cHV0KCkKKworICAgICAgICBsb2dnaW5nLmRlYnVnKCJEYXNoYm9hcmQgZmlsZSBzYXZlZCwgbmFt
ZTogJXMuIiwgbmFtZSkKKworICAgICAgICByZXR1cm4gZmlsZQorCisgICAgQGNsYXNzbWV0aG9k
CisgICAgZGVmIGdyYWJfZmlsZV9mcm9tX3N2bihjbHMsIG5hbWUpOgorICAgICAgICBsb2dnaW5n
LmRlYnVnKCJHcmFiIGZpbGUgZnJvbSBTVk4sIG5hbWU6ICVzLiIsIG5hbWUpCisgICAgICAgIHVy
bCA9IFNWTl9QQVRIX0RBU0hCT0FSRCArIG5hbWUKKworICAgICAgICBsb2dnaW5nLmRlYnVnKCJH
cmFiIGZpbGUgZnJvbSBTVk4sIHVybDogJXMuIiwgdXJsKQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBmaWxlID0gdXJsbGliMi51cmxvcGVuKHVybCkKKyAgICAgICAgICAgIGlmIG5vdCBmaWxl
OgorICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoIkZhaWxlZCB0byBncmFiIGRhc2hib2Fy
ZCBmaWxlOiAlcy4iLCB1cmwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAg
ICAgICAgcmV0dXJuIGZpbGUucmVhZCgpCisgICAgICAgIGV4Y2VwdCB1cmxsaWIyLkhUVFBFcnJv
ciwgZToKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoIkZhaWxlZCB0byBncmFiIGRhc2hib2Fy
ZCBmaWxlOiAlcyIsIHN0cihlKSkKKyAgICAgICAgZXhjZXB0IHVybGxpYjIuVVJMRXJyb3IsIGU6
CisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCJGYWlsZWQgdG8gZ3JhYiBkYXNoYm9hcmQgZmls
ZTogJXMiLCBzdHIoZSkpCisKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBjbGFzc21ldGhv
ZAorICAgIGRlZiB1cGRhdGVfZmlsZShjbHMsIG5hbWUpOgorICAgICAgICBkYXRhID0gY2xzLmdy
YWJfZmlsZV9mcm9tX3N2bihuYW1lKQorICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAg
IHJldHVybiBOb25lCisKKyAgICAgICAgbG9nZ2luZy5pbmZvKCJHb3QgZmlsZSBmcm9tIFNWTi4i
KQorCisgICAgICAgIGZpbGVzID0gY2xzLmdldF9maWxlcyhuYW1lKQorICAgICAgICBpZiBub3Qg
ZmlsZXM6CisgICAgICAgICAgICBsb2dnaW5nLmluZm8oIk5vIGV4aXN0aW5nIGZpbGUsIGFkZGVk
IGFzIG5ldyBmaWxlLiIpCisgICAgICAgICAgICByZXR1cm4gY2xzLmFkZF9maWxlKG5hbWUsIGRh
dGEpCisgICAgICAgIAorICAgICAgICBsb2dnaW5nLmRlYnVnKCJVcGRhdGluZyBleGlzdGluZyBm
aWxlLiIpCisgICAgICAgIGZpbGUgPSBmaWxlc1swXQorICAgICAgICBmaWxlLmRhdGEgPSBkYXRh
CisgICAgICAgIGZpbGUuZGF0ZSA9IGRhdGV0aW1lLm5vdygpCisgICAgICAgIGZpbGUucHV0KCkK
KworICAgICAgICBsb2dnaW5nLmluZm8oIkRhc2hib2FyZCBmaWxlIHJlcGxhY2VkLCBuYW1lOiAl
cy4iLCBuYW1lKQorCisgICAgICAgIHJldHVybiBmaWxlCisKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgZGVsZXRlX2ZpbGUoY2xzLCBuYW1lKToKKyAgICAgICAgZmlsZXMgPSBjbHMuZ2V0X2Zp
bGVzKG5hbWUpCisgICAgICAgIGlmIG5vdCBmaWxlczoKKyAgICAgICAgICAgIGxvZ2dpbmcud2Fy
bmluZygiRmlsZSBub3QgZm91bmQsIG5hbWU6ICVzLiIsIG5hbWUpCisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKKworICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgICAgICAgIGZpbGUu
ZGVsZXRlKCkKKworICAgICAgICByZXR1cm4gVHJ1ZQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJl
c3VsdFNlcnZlci9tb2RlbC90ZXN0ZmlsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9U
ZXN0UmVzdWx0U2VydmVyL21vZGVsL3Rlc3RmaWxlLnB5CShyZXZpc2lvbiA1NjA3MykKKysrIFdl
YktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbW9kZWwvdGVzdGZpbGUucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTg1LDcgKzg1LDcgQEAgY2xhc3MgVGVzdEZpbGUoZGIuTW9kZWwpOgogCiAgICAgICAg
IGxvZ2dpbmcuaW5mbygKICAgICAgICAgICAgICJGaWxlIHNhdmVkLCBidWlsZGVyOiAlcywgdGVz
dF90eXBlOiAlcywgbmFtZTogJXMsIGJsb2Iga2V5OiAlcy4iLAotICAgICAgICAgICAgYnVpbGRl
ciwgZmlsZS5uYW1lLCBmaWxlLmJsb2Jfa2V5KQorICAgICAgICAgICAgYnVpbGRlciwgdGVzdF90
eXBlLCBmaWxlLm5hbWUsIGZpbGUuYmxvYl9rZXkpCiAKICAgICAgICAgcmV0dXJuIGZpbGUKIApJ
bmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdHlsZXNoZWV0cy9kYXNoYm9hcmRm
aWxlLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3N0eWxl
c2hlZXRzL2Rhc2hib2FyZGZpbGUuY3NzCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVz
dFJlc3VsdFNlcnZlci9zdHlsZXNoZWV0cy9kYXNoYm9hcmRmaWxlLmNzcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzMCBAQAorYm9keSB7CisgIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBIZWx2ZXRp
Y2EsIHNhbnMtc2VyaWY7CisgIHBhZGRpbmc6IDBweDsKKyAgY29sb3I6ICM0NDQ7Cit9CitoMSB7
CisgIGNvbG9yOiAjNDQ0OworICBmb250LXNpemU6IDE0cHQ7CisgIGZvbnQtc3R5bGU6IGl0YWxp
YzsKKyAgbWFyZ2luOiAwcHg7CisgIHBhZGRpbmc6IDVweDsKK30KK3RhYmxlIHsKKyAgYm9yZGVy
LXNwYWNpbmc6IDBweDsKK30KK3RoIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI0FBQTsKKyAgY29s
b3I6IHdoaXRlOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBwYWRkaW5nOiA1cHg7CisgIGZvbnQt
c2l6ZTogMTJwdDsKK30KK3RkIHsKKyAgZm9udC1zaXplOiAxMXB0OworICBwYWRkaW5nOiAzcHg7
CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9Cit0cjpob3ZlciB7CisgIGJhY2tncm91bmQtY29sb3I6
ICNFRUU7Cit9CkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy9k
YXNoYm9hcmRmaWxlbGlzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvdGVtcGxhdGVzL2Rhc2hib2FyZGZpbGVsaXN0Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy9kYXNoYm9hcmRmaWxlbGlz
dC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+RGFzaGJvYXJkIEZpbGVzPC90aXRsZT4KKzxsaW5rIHR5cGU9
InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9zdHlsZXNoZWV0cy9kYXNoYm9hcmRm
aWxlLmNzcyIgLz4KKzwvaGVhZD4KKzxib2R5PgorPGgxPkRhc2hib2FyZCBGaWxlcworPC9oMT4K
KzxkaXY+CisgICAgPHRhYmxlPgorICAgICAgICA8dHI+CisgICAgICAgICAgICA8dGg+RmlsZTwv
dGg+CisgICAgICAgICAgICA8dGg+RGF0ZTwvdGg+CisgICAgICAgIHslIGZvciBmaWxlIGluIGZp
bGVzICV9CisgICAgICAgIDx0cj57JSBpZiBmaWxlLm5hbWUgJX0KKyAgICAgICAgICAgIDx0ZD48
YSBocmVmPSIvZGFzaGJvYXJkcy97eyBmaWxlLm5hbWUgfX0iID4KKyAgICAgICAgICAgICAgICB7
eyBmaWxlLm5hbWUgfX0KKyAgICAgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8L3RkPgor
ICAgICAgICAgICAgPHRkPnt7IGZpbGUuZGF0ZXxkYXRlOiJkLU0tWSBIOmk6cyIgfX0KKyAgICAg
ICAgICAgIDwvdGQ+CisgICAgICAgIHslIGVuZGlmICV9CisgICAgICAgIDwvdHI+CisgICAgeyUg
ZW5kZm9yICV9CisgICAgPC90YWJsZT4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
V2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvc2hv
d2ZpbGVsaXN0Lmh0bWwJKHJldmlzaW9uIDU2MDczKQorKysgV2ViS2l0VG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci90ZW1wbGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDIzICsyMCwyMyBAQAogICAgICAgICAgICAgPHRoPjwvdGg+CiAgICAgICAgIHslIGZvciBmaWxl
IGluIGZpbGVzICV9CiAgICAgICAgIDx0cj57JSBpZiBmaWxlLmJ1aWxkZXIgYW5kIGZpbGUubmFt
ZSAlfQotICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii9nZXRmaWxlP2J1aWxkZXI9e3sgZmlsZS5i
dWlsZGVyIH19IiA+CisgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iL3Rlc3RmaWxlP2J1aWxkZXI9
e3sgZmlsZS5idWlsZGVyIH19IiA+CiAgICAgICAgICAgICAgICAge3sgZmlsZS5idWlsZGVyIH19
CiAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgIDx0
ZD57JSBpZiBmaWxlLnRlc3RfdHlwZSAlfQotICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9nZXRm
aWxlP3Rlc3R0eXBlPXt7IGZpbGUudGVzdF90eXBlIH19IiA+CisgICAgICAgICAgICAgICAgPGEg
aHJlZj0iL3Rlc3RmaWxlP3Rlc3R0eXBlPXt7IGZpbGUudGVzdF90eXBlIH19IiA+CiAgICAgICAg
ICAgICAgICAge3sgZmlsZS50ZXN0X3R5cGUgfX0KICAgICAgICAgICAgICAgICA8L2E+CiAgICAg
ICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8
dGQ+PGEgaHJlZj0iL2dldGZpbGU/YnVpbGRlcj17eyBmaWxlLmJ1aWxkZXIgfX0mbmFtZT17eyBm
aWxlLm5hbWUgfX0iID4KKyAgICAgICAgICAgIDx0ZD48YSBocmVmPSIvdGVzdGZpbGU/YnVpbGRl
cj17eyBmaWxlLmJ1aWxkZXIgfX0mbmFtZT17eyBmaWxlLm5hbWUgfX0iID4KICAgICAgICAgICAg
ICAgICB7eyBmaWxlLm5hbWUgfX0KICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICA8
L3RkPgogICAgICAgICAgICAgPHRkPnt7IGZpbGUuZGF0ZXxkYXRlOiJkLU0tWSBIOmk6cyIgfX0K
ICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+PGEgaHJlZj0iL2RlbGV0ZWZpbGU/
a2V5PXt7IGZpbGUua2V5IH19JmJ1aWxkZXI9e3sgYnVpbGRlciB9fSZuYW1lPXt7IG5hbWUgfX0i
ID4KKyAgICAgICAgICAgIDx0ZD48YSBocmVmPSIvdGVzdGZpbGUvZGVsZXRlP2tleT17eyBmaWxl
LmtleSB9fSZidWlsZGVyPXt7IGJ1aWxkZXIgfX0mbmFtZT17eyBuYW1lIH19IiA+CiAgICAgICAg
ICAgICAgICAgRGVsZXRlCiAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgPC90ZD4K
SW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvdGVtcGxhdGVzL3VwbG9hZGZvcm0u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRl
cy91cGxvYWRmb3JtLmh0bWwJKHJldmlzaW9uIDU2MDczKQorKysgV2ViS2l0VG9vbHMvVGVzdFJl
c3VsdFNlcnZlci90ZW1wbGF0ZXMvdXBsb2FkZm9ybS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02
LDcgKzYsNyBAQAogPC9oZWFkPgogPGJvZHk+CiA8aDE+VXBsb2FkIFRlc3QgUmVzdWx0IEZpbGU8
L2gxPgotPGZvcm0gYWNjZXB0PSJ0ZXh0L2h0bWwiIGFjdGlvbj0ie3sgdXBsb2FkX3VybCB9fSIg
ZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJwb3N0Ij4KKzxmb3JtIGlkPSJ1
cGxvYWRGb3JtIiBuYW1lPSJ0ZXN0X3Jlc3VsdF91cGxvYWQiIGFjY2VwdD0idGV4dC9odG1sIiBh
Y3Rpb249Int7IHVwbG9hZF91cmwgfX0iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG1l
dGhvZD0icG9zdCI+CiAgICAgPGJyPgogICAgIDx0YWJsZT4KICAgICA8dHI+CkBAIC0xOCw3ICsx
OCw3IEBACiAgICAgICAgIDx0ZD48aW5wdXQgY2xhc3M9aW5wdXR0ZXh0IHR5cGU9InRleHQiIG5h
bWU9InRlc3R0eXBlIiB2YWx1ZT0iIi8+PC90ZD4KICAgICA8L3RyPgogICAgIDwvdGFibGU+Ci0g
ICAgPGRpdj48aW5wdXQgY2xhc3M9YnV0dG9uIHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiPjwvZGl2
PgorICAgIDxkaXY+PGlucHV0IGNsYXNzPWJ1dHRvbiB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiBt
dWx0aXBsZT48L2Rpdj4KICAgICA8YnI+CiAgICAgPGRpdj48aW5wdXQgY2xhc3M9YnV0dG9uIHR5
cGU9InN1Ym1pdCIgdmFsdWU9IlVwbG9hZCI+PC9kaXY+CiA8L2Zvcm0+Cg==
</data>
<flag name="review"
          id="34718"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51545</attachid>
            <date>2010-03-24 14:45:54 -0700</date>
            <delta_ts>2010-03-24 14:49:34 -0700</delta_ts>
            <desc>Patch per comment #4</desc>
            <filename>test_results_server.patch</filename>
            <type>text/plain</type>
            <size>24025</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2MDc1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDMtMTYgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSG9zdCBsYXlvdXQgdGVzdCBmbGFraW5lc3MgZGFzaGJvYXJkIGluIFRlc3RS
ZXN1bHRTZXJ2ZXIgYXBwZW5naW5lLgorCisgICAgICAgIEZsYWtpbmVzcyBkYXNoYm9hcmQgaXMg
YSB0b29sIHRvIG1vbml0b3IgbGF5b3V0IHRlc3Qgc3RhdHVzIGFuZAorICAgICAgICBoZWxwIGxh
eW91dCB0ZXN0IHJlZ3Jlc3Npb24gZGlhZ25vc3RpY3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MTk1CisKKyAgICAgICAgKiBUZXN0UmVzdWx0
U2VydmVyL2hhbmRsZXJzL2Rhc2hib2FyZGhhbmRsZXIucHk6IEFkZGVkLgorICAgICAgICAgLSBO
ZXcgaGFuZGxlciB0byBoYW5kbGUgZGFzaGJvYXJkIHJlcXVlc3QKKyAgICAgICAgKiBUZXN0UmVz
dWx0U2VydmVyL2hhbmRsZXJzL21lbnUucHk6CisgICAgICAgICAtIEFkZCBuZXcgZGFzaGJvYXJk
IGxpbmtzCisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVycy90ZXN0ZmlsZWhhbmRs
ZXIucHk6CisgICAgICAgICAtIFJlcXVlc3Qgcm91dGVzIHJlZmFjdG9yeQorICAgICAgICAqIFRl
c3RSZXN1bHRTZXJ2ZXIvaW5kZXgueWFtbDoKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL21h
aW4ucHk6CisgICAgICAgICAtIEFkZCBuZXcgZGFzaGJvYXJkIHJlcXVlc3Qgcm91dGVzIGFuZCBy
ZWZhY3RvciB0ZXN0IHJlc3VsdCBmaWxlIHJvdW50ZXMuCisgICAgICAgICogVGVzdFJlc3VsdFNl
cnZlci9tb2RlbC9kYXNoYm9hcmRmaWxlLnB5OiBBZGRlZC4KKyAgICAgICAgIC0gTW9kZWwgdG8g
YWNjZXNzIGRhdGFzdG9yZSBmb3IgZGFzaGJvYXJkIGZpbGVzCisgICAgICAgICogVGVzdFJlc3Vs
dFNlcnZlci9tb2RlbC90ZXN0ZmlsZS5weToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0
eWxlc2hlZXRzL2Rhc2hib2FyZGZpbGUuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0UmVzdWx0
U2VydmVyL3RlbXBsYXRlcy9kYXNoYm9hcmRmaWxlbGlzdC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBUZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy9zaG93ZmlsZWxpc3QuaHRtbDoKKwogMjAxMC0w
My0xNiAgSm9hbm1hcmllIERpZ2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0
U2VydmVyL2FwcC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvYXBwLnlhbWwJKHJldmlzaW9uIDU2MDczKQorKysgV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9hcHAueWFtbAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLWFwcGxpY2F0aW9u
OiB0ZXN0LXJlc3VsdHMKK2FwcGxpY2F0aW9uOiB0ZXN0LXJlc3VsdHMtdGVzdAogdmVyc2lvbjog
MQogcnVudGltZTogcHl0aG9uCiBhcGlfdmVyc2lvbjogMQpAQCAtNyw1ICs3LDEzIEBAIGhhbmRs
ZXJzOgogLSB1cmw6IC9zdHlsZXNoZWV0cwogICBzdGF0aWNfZGlyOiBzdHlsZXNoZWV0cwogCist
IHVybDogL3Rlc3RmaWxlL2RlbGV0ZQorICBzY3JpcHQ6IG1haW4ucHkKKyAgbG9naW46IGFkbWlu
CisKKy0gdXJsOiAvZGFzaGJvYXJkcy9kZWxldGUKKyAgc2NyaXB0OiBtYWluLnB5CisgIGxvZ2lu
OiBhZG1pbgorCiAtIHVybDogLy4qCiAgIHNjcmlwdDogbWFpbi5weQpJbmRleDogV2ViS2l0VG9v
bHMvVGVzdFJlc3VsdFNlcnZlci9pbmRleC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L1Rlc3RSZXN1bHRTZXJ2ZXIvaW5kZXgueWFtbAkocmV2aXNpb24gNTYwNzMpCisrKyBXZWJLaXRU
b29scy9UZXN0UmVzdWx0U2VydmVyL2luZGV4LnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDE2
ICsxMCwxNSBAQCBpbmRleGVzOg0KICMgYXV0b21hdGljYWxseSB1cGxvYWRlZCB0byB0aGUgYWRt
aW4gY29uc29sZSB3aGVuIHlvdSBuZXh0IGRlcGxveQ0KICMgeW91ciBhcHBsaWNhdGlvbiB1c2lu
ZyBhcHBjZmcucHkuDQogDQotLSBraW5kOiBUZXN0RmlsZQ0KKy0ga2luZDogRGFzaGJvYXJkRmls
ZQ0KICAgcHJvcGVydGllczoNCi0gIC0gbmFtZTogYnVpbGRlcg0KKyAgLSBuYW1lOiBuYW1lDQog
ICAtIG5hbWU6IGRhdGUNCiAgICAgZGlyZWN0aW9uOiBkZXNjDQogDQogLSBraW5kOiBUZXN0Rmls
ZQ0KICAgcHJvcGVydGllczoNCiAgIC0gbmFtZTogYnVpbGRlcg0KLSAgLSBuYW1lOiBuYW1lDQog
ICAtIG5hbWU6IGRhdGUNCiAgICAgZGlyZWN0aW9uOiBkZXNjDQogDQpAQCAtMjcsMTQgKzI2LDE0
IEBAIGluZGV4ZXM6DQogICBwcm9wZXJ0aWVzOg0KICAgLSBuYW1lOiBidWlsZGVyDQogICAtIG5h
bWU6IG5hbWUNCi0gIC0gbmFtZTogdGVzdF90eXBlDQogICAtIG5hbWU6IGRhdGUNCiAgICAgZGly
ZWN0aW9uOiBkZXNjDQogDQogLSBraW5kOiBUZXN0RmlsZQ0KICAgcHJvcGVydGllczoNCi0gIC0g
bmFtZTogYnVpbGRlcj0NCi0gIC0gbmFtZTogbmFtZT0NCisgIC0gbmFtZTogYnVpbGRlcg0KKyAg
LSBuYW1lOiBuYW1lDQorICAtIG5hbWU6IHRlc3RfdHlwZQ0KICAgLSBuYW1lOiBkYXRlDQogICAg
IGRpcmVjdGlvbjogZGVzYw0KIA0KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
bWFpbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL21haW4u
cHkJKHJldmlzaW9uIDU2MDczKQorKysgV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tYWlu
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMywyMyArMzMsMjIgQEAgdXNlX2xpYnJhcnkoJ2RqYW5n
bycsICcxLjEnKQogZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwCiBmcm9t
IGdvb2dsZS5hcHBlbmdpbmUuZXh0LndlYmFwcC51dGlsIGltcG9ydCBydW5fd3NnaV9hcHAKIAot
ZnJvbSBoYW5kbGVycy5tZW51IGltcG9ydCBNZW51Ci1mcm9tIGhhbmRsZXJzLnRlc3RmaWxlaGFu
ZGxlciBpbXBvcnQgRGVsZXRlRmlsZQotZnJvbSBoYW5kbGVycy50ZXN0ZmlsZWhhbmRsZXIgaW1w
b3J0IEdldEZpbGUKLWZyb20gaGFuZGxlcnMudGVzdGZpbGVoYW5kbGVyIGltcG9ydCBHZXRVcGxv
YWRVcmwKLWZyb20gaGFuZGxlcnMudGVzdGZpbGVoYW5kbGVyIGltcG9ydCBVcGxvYWQKLWZyb20g
aGFuZGxlcnMudGVzdGZpbGVoYW5kbGVyIGltcG9ydCBVcGxvYWRGb3JtCi1mcm9tIGhhbmRsZXJz
LnRlc3RmaWxlaGFuZGxlciBpbXBvcnQgVXBsb2FkU3RhdHVzCitmcm9tIGhhbmRsZXJzIGltcG9y
dCBkYXNoYm9hcmRoYW5kbGVyCitmcm9tIGhhbmRsZXJzIGltcG9ydCBtZW51Citmcm9tIGhhbmRs
ZXJzIGltcG9ydCB0ZXN0ZmlsZWhhbmRsZXIKIAogcm91dGVzID0gWwotICAgICgnL2RlbGV0ZWZp
bGUnLCBEZWxldGVGaWxlKSwKLSAgICAoJy9nZXRmaWxlJywgR2V0RmlsZSksCi0gICAgKCcvZ2V0
dXBsb2FkdXJsJywgR2V0VXBsb2FkVXJsKSwKLSAgICAoJy91cGxvYWQnLCBVcGxvYWQpLAotICAg
ICgnL3VwbG9hZGZhaWwnLCBVcGxvYWRTdGF0dXMpLAotICAgICgnL3VwbG9hZGZvcm0nLCBVcGxv
YWRGb3JtKSwKLSAgICAoJy91cGxvYWRzdWNjZXNzJywgVXBsb2FkU3RhdHVzKSwKLSAgICAoJy8q
fC9tZW51JywgTWVudSksCisgICAgKCcvZGFzaGJvYXJkcy9kZWxldGUnLCBkYXNoYm9hcmRoYW5k
bGVyLkRlbGV0ZURhc2hib2FyZEZpbGUpLAorICAgICgnL2Rhc2hib2FyZHMvdXBkYXRlJywgZGFz
aGJvYXJkaGFuZGxlci5VcGRhdGVEYXNoYm9hcmRGaWxlKSwKKyAgICAoJy9kYXNoYm9hcmRzLyhb
Xj9dKyk/JywgZGFzaGJvYXJkaGFuZGxlci5HZXREYXNoYm9hcmRGaWxlKSwKKyAgICAoJy90ZXN0
ZmlsZS9kZWxldGUnLCB0ZXN0ZmlsZWhhbmRsZXIuRGVsZXRlRmlsZSksCisgICAgKCcvdGVzdGZp
bGUvdXBsb2FkdXJsJywgdGVzdGZpbGVoYW5kbGVyLkdldFVwbG9hZFVybCksCisgICAgKCcvdGVz
dGZpbGUvdXBsb2FkJywgdGVzdGZpbGVoYW5kbGVyLlVwbG9hZCksCisgICAgKCcvdGVzdGZpbGUv
dXBsb2FkZm9ybScsIHRlc3RmaWxlaGFuZGxlci5VcGxvYWRGb3JtKSwKKyAgICAoJy90ZXN0Zmls
ZS8/JywgdGVzdGZpbGVoYW5kbGVyLkdldEZpbGUpLAorICAgICgnL3VwbG9hZGZhaWwnLCB0ZXN0
ZmlsZWhhbmRsZXIuVXBsb2FkU3RhdHVzKSwKKyAgICAoJy91cGxvYWRzdWNjZXNzJywgdGVzdGZp
bGVoYW5kbGVyLlVwbG9hZFN0YXR1cyksCisgICAgKCcvKnwvbWVudScsIG1lbnUuTWVudSksCiBd
CiAKIGFwcGxpY2F0aW9uID0gd2ViYXBwLldTR0lBcHBsaWNhdGlvbihyb3V0ZXMsIGRlYnVnPVRy
dWUpCkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL2hhbmRsZXJzL2Rhc2hib2Fy
ZGhhbmRsZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9o
YW5kbGVycy9kYXNoYm9hcmRoYW5kbGVyLnB5CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMv
VGVzdFJlc3VsdFNlcnZlci9oYW5kbGVycy9kYXNoYm9hcmRoYW5kbGVyLnB5CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCBtaW1ldHlwZXMKK2ltcG9ydCB1cmxsaWIyCisKK2Zyb20gZ29vZ2xlLmFwcGVuZ2lu
ZS5hcGkgaW1wb3J0IHVzZXJzCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJh
cHAKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQud2ViYXBwIGltcG9ydCB0ZW1wbGF0ZQorCitm
cm9tIG1vZGVsLmRhc2hib2FyZGZpbGUgaW1wb3J0IERhc2hib2FyZEZpbGUKKworUEFSQU1fRklM
RSA9ICJmaWxlIgorCisKK2RlZiBnZXRfY29udGVudF90eXBlKGZpbGVuYW1lKToKKyAgICByZXR1
cm4gbWltZXR5cGVzLmd1ZXNzX3R5cGUoZmlsZW5hbWUpWzBdIG9yICJhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0iCisKKworY2xhc3MgR2V0RGFzaGJvYXJkRmlsZSh3ZWJhcHAuUmVxdWVzdEhhbmRs
ZXIpOgorICAgIGRlZiBnZXQoc2VsZiwgcmVzb3VyY2UpOgorICAgICAgICBpZiBub3QgcmVzb3Vy
Y2U6CisgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCJHZXR0aW5nIGRhc2hib2FyZCBmaWxlIGxp
c3QuIikKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfZmlsZV9saXN0KCkKKworICAgICAg
ICBmaWxlbmFtZSA9IHN0cih1cmxsaWIyLnVucXVvdGUocmVzb3VyY2UpKQorCisgICAgICAgIGxv
Z2dpbmcuZGVidWcoIkdldHRpbmcgZGFzaGJvYXJkIGZpbGU6ICVzIiwgZmlsZW5hbWUpCisKKyAg
ICAgICAgZmlsZXMgPSBEYXNoYm9hcmRGaWxlLmdldF9maWxlcyhmaWxlbmFtZSkKKyAgICAgICAg
aWYgbm90IGZpbGVzOgorICAgICAgICAgICAgbG9nZ2luZy5lcnJvcigiRmFpbGVkIHRvIGZpbmQg
ZGFzaGJvYXJkIGZpbGU6ICVzLCByZXF1ZXN0OiAlcyIsCisgICAgICAgICAgICAgICAgZmlsZW5h
bWUsIHNlbGYucmVxdWVzdCkKKyAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uuc2V0X3N0YXR1cyg0
MDQpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBjb250ZW50X3R5cGUgPSAiJXM7IGNo
YXJzZXQ9dXRmLTgiICUgZ2V0X2NvbnRlbnRfdHlwZShmaWxlbmFtZSkKKyAgICAgICAgbG9nZ2lu
Zy5pbmZvKCJjb250ZW50IHR5cGU6ICVzIiwgY29udGVudF90eXBlKQorICAgICAgICBzZWxmLnJl
c3BvbnNlLmhlYWRlcnNbIkNvbnRlbnQtVHlwZSJdID0gY29udGVudF90eXBlCisgICAgICAgIHNl
bGYucmVzcG9uc2Uub3V0LndyaXRlKGZpbGVzWzBdLmRhdGEpCisKKyAgICBkZWYgX2dldF9maWxl
X2xpc3Qoc2VsZik6CisgICAgICAgIGxvZ2dpbmcuaW5mbygiZ2V0dGluZyBkYXNoYm9hcmQgZmls
ZSBsaXN0LiIpCisKKyAgICAgICAgZmlsZXMgPSBEYXNoYm9hcmRGaWxlLmdldF9maWxlcygiIiwg
MTAwKQorICAgICAgICBpZiBub3QgZmlsZXM6CisgICAgICAgICAgICBsb2dnaW5nLmluZm8oIkZh
aWxlZCB0byBmaW5kIGRhc2hib2FyZCBmaWxlcy4iKQorICAgICAgICAgICAgc2VsZi5yZXNwb25z
ZS5zZXRfc3RhdHVzKDQwNCkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRlbXBsYXRl
X3ZhbHVlcyA9IHsKKyAgICAgICAgICAgICJhZG1pbiI6IHVzZXJzLmlzX2N1cnJlbnRfdXNlcl9h
ZG1pbigpLAorICAgICAgICAgICAgImZpbGVzIjogZmlsZXMsCisgICAgICAgIH0KKyAgICAgICAg
c2VsZi5yZXNwb25zZS5vdXQud3JpdGUoCisgICAgICAgICAgICB0ZW1wbGF0ZS5yZW5kZXIoInRl
bXBsYXRlcy9kYXNoYm9hcmRmaWxlbGlzdC5odG1sIiwKKyAgICAgICAgICAgICAgICB0ZW1wbGF0
ZV92YWx1ZXMpKQorCisKK2NsYXNzIFVwZGF0ZURhc2hib2FyZEZpbGUod2ViYXBwLlJlcXVlc3RI
YW5kbGVyKToKKyAgICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICBmaWxlcyA9IHNlbGYucmVxdWVz
dC5nZXRfYWxsKFBBUkFNX0ZJTEUpCisgICAgICAgIGlmIG5vdCBmaWxlczoKKyAgICAgICAgICAg
IGZpbGVzID0gWyJmbGFraW5lc3NfZGFzaGJvYXJkLmh0bWwiLAorICAgICAgICAgICAgICAgICAg
ICAgImRhc2hib2FyZF9iYXNlLmpzIiwKKyAgICAgICAgICAgICAgICAgICAgICJhZ2dyZWdhdGVf
cmVzdWx0cy5odG1sIl0KKworICAgICAgICBlcnJvcnMgPSBbXQorICAgICAgICBmb3IgZmlsZSBp
biBmaWxlczoKKyAgICAgICAgICAgIGlmIG5vdCBEYXNoYm9hcmRGaWxlLnVwZGF0ZV9maWxlKGZp
bGUpOgorICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoIkZhaWxlZCB0byB1cGRhdGUgZmls
ZTogJXMiICUgZmlsZSkKKworICAgICAgICBpZiBlcnJvcnM6CisgICAgICAgICAgICBtZXNzYWdl
cyA9ICI7ICIuam9pbihlcnJvcnMpCisgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcobWVzc2Fn
ZXMpCisgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLnNldF9zdGF0dXMoNTAwLCBtZXNzYWdlcykK
KyAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKCJGQUlMIikKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uuc2V0X3N0YXR1cygyMDApCisgICAgICAgICAg
ICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgiT0siKQorCisKK2NsYXNzIERlbGV0ZURhc2hib2Fy
ZEZpbGUod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgZ2V0KHNlbGYpOgorIyAgICAg
ICAgaWYgbm90IHVzZXJzLmlzX2N1cnJlbnRfdXNlcl9hZG1pbigpOgorIyAgICAgICAgICAgIHNl
bGYucmVzcG9uc2Uuc2V0X3N0YXR1cyg0MDEpCisjICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgZmlsZXMgPSBzZWxmLnJlcXVlc3QuZ2V0X2FsbChQQVJBTV9GSUxFKQorICAgICAgICBpZiBu
b3QgZmlsZXM6CisgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoIk5vIGRhc2hib2FyZCBmaWxl
IHRvIGRlbGV0ZS4iKQorICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5zZXRfc3RhdHVzKDQwMCkK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgorICAgICAg
ICAgICAgRGFzaGJvYXJkRmlsZS5kZWxldGVfZmlsZShmaWxlKQorCisgICAgICAgICMgRGlzcGxh
eSBkYXNoYm9hcmQgZmlsZSBsaXN0IGFmdGVyIGRlbGV0aW5nIHRoZSBmaWxlLgorICAgICAgICBz
ZWxmLnJlZGlyZWN0KCIvZGFzaGJvYXJkcy8iKQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9oYW5kbGVycy9tZW51LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RS
ZXN1bHRTZXJ2ZXIvaGFuZGxlcnMvbWVudS5weQkocmV2aXNpb24gNTYwNzMpCisrKyBXZWJLaXRU
b29scy9UZXN0UmVzdWx0U2VydmVyL2hhbmRsZXJzL21lbnUucHkJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDEwICszMCwxMiBAQCBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJhcHAK
IGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQud2ViYXBwIGltcG9ydCB0ZW1wbGF0ZQogCiBtZW51
ID0gWwotICAgIFsiTGlzdCBvZiBmaWxlcyIsICIvZ2V0ZmlsZSJdLAotICAgIFsiTGlzdCBvZiBy
ZXN1bHRzLmpzb24gZmlsZXMiLCAiL2dldGZpbGU/bmFtZT1yZXN1bHRzLmpzb24iXSwKLSAgICBb
Ikxpc3Qgb2YgZXhwZWN0YXRpb25zLmpzb24gZmlsZXMiLCAiL2dldGZpbGU/bmFtZT1leHBlY3Rh
dGlvbnMuanNvbiJdLAotICAgIFsiVXBsb2FkIGZpbGUiLCAiL3VwbG9hZGZvcm0iXSwKKyAgICBb
Ikxpc3Qgb2YgdGVzdCBmaWxlcyIsICIvdGVzdGZpbGUiXSwKKyAgICBbIkxpc3Qgb2YgcmVzdWx0
cy5qc29uIGZpbGVzIiwgIi90ZXN0ZmlsZT9uYW1lPXJlc3VsdHMuanNvbiJdLAorICAgIFsiTGlz
dCBvZiBleHBlY3RhdGlvbnMuanNvbiBmaWxlcyIsICIvdGVzdGZpbGU/bmFtZT1leHBlY3RhdGlv
bnMuanNvbiJdLAorICAgIFsiVXBsb2FkIHRlc3QgZmlsZSIsICIvdGVzdGZpbGUvdXBsb2FkZm9y
bSJdLAorICAgIFsiTGlzdCBvZiBkYXNoYm9hcmQgZmlsZXMiLCAiL2Rhc2hib2FyZHMvIl0sCisg
ICAgWyJVcGRhdGUgZGFzaGJvYXJkIGZpbGVzIiwgIi9kYXNoYm9hcmRzL3VwZGF0ZSJdLAogXQog
CiAKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvaGFuZGxlcnMvdGVzdGZpbGVo
YW5kbGVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvaGFu
ZGxlcnMvdGVzdGZpbGVoYW5kbGVyLnB5CShyZXZpc2lvbiA1NjA3MykKKysrIFdlYktpdFRvb2xz
L1Rlc3RSZXN1bHRTZXJ2ZXIvaGFuZGxlcnMvdGVzdGZpbGVoYW5kbGVyLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw3IEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHVybGxpYgogCitm
cm9tIGdvb2dsZS5hcHBlbmdpbmUuYXBpIGltcG9ydCB1c2VycwogZnJvbSBnb29nbGUuYXBwZW5n
aW5lLmV4dCBpbXBvcnQgYmxvYnN0b3JlCiBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9y
dCB3ZWJhcHAKIGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQud2ViYXBwIGltcG9ydCBibG9ic3Rv
cmVfaGFuZGxlcnMKQEAgLTYwLDE0ICs2MSwxNCBAQCBjbGFzcyBEZWxldGVGaWxlKHdlYmFwcC5S
ZXF1ZXN0SGFuZGxlcik6CiAgICAgICAgIFRlc3RGaWxlLmRlbGV0ZV9maWxlKGtleSwgYnVpbGRl
ciwgdGVzdF90eXBlLCBuYW1lLCAxMDApCiAKICAgICAgICAgIyBEaXNwbGF5IGZpbGUgbGlzdCBh
ZnRlciBkZWxldGluZyB0aGUgZmlsZS4KLSAgICAgICAgc2VsZi5yZWRpcmVjdCgiL2dldGZpbGU/
YnVpbGRlcj0lcyZ0ZXN0dHlwZT0lcyZuYW1lPSVzIgorICAgICAgICBzZWxmLnJlZGlyZWN0KCIv
dGVzdGZpbGU/YnVpbGRlcj0lcyZ0ZXN0dHlwZT0lcyZuYW1lPSVzIgogICAgICAgICAgICAgJSAo
YnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKSkKIAogCiBjbGFzcyBHZXRGaWxlKGJsb2JzdG9yZV9o
YW5kbGVycy5CbG9ic3RvcmVEb3dubG9hZEhhbmRsZXIpOgogICAgICIiIkdldCBmaWxlIGNvbnRl
bnQgb3IgbGlzdCBvZiBmaWxlcyBmb3IgZ2l2ZW4gYnVpbGRlciBhbmQgbmFtZS4iIiIKIAotICAg
IGRlZiBnZXRfZmlsZV9saXN0KHNlbGYsIGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSk6CisgICAg
ZGVmIF9nZXRfZmlsZV9saXN0KHNlbGYsIGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSk6CiAgICAg
ICAgICIiIkdldCBhbmQgZGlzcGxheSBhIGxpc3Qgb2YgZmlsZXMgdGhhdCBtYXRjaGVzIGJ1aWxk
ZXIgYW5kIGZpbGUgbmFtZS4KIAogICAgICAgICBBcmdzOgpAQCAtODQsNiArODUsNyBAQCBjbGFz
cyBHZXRGaWxlKGJsb2JzdG9yZV9oYW5kbGVycy5CbG9ic3RvCiAgICAgICAgICAgICByZXR1cm4K
IAogICAgICAgICB0ZW1wbGF0ZV92YWx1ZXMgPSB7CisgICAgICAgICAgICAiYWRtaW4iOiB1c2Vy
cy5pc19jdXJyZW50X3VzZXJfYWRtaW4oKSwKICAgICAgICAgICAgICJidWlsZGVyIjogYnVpbGRl
ciwKICAgICAgICAgICAgICJ0ZXN0X3R5cGUiOiB0ZXN0X3R5cGUsCiAgICAgICAgICAgICAibmFt
ZSI6IG5hbWUsCkBAIC05Miw3ICs5NCw3IEBAIGNsYXNzIEdldEZpbGUoYmxvYnN0b3JlX2hhbmRs
ZXJzLkJsb2JzdG8KICAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUodGVtcGxhdGUucmVu
ZGVyKCJ0ZW1wbGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0bWwiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVfdmFsdWVzKSkKIAotICAgIGRlZiBn
ZXRfZmlsZV9jb250ZW50KHNlbGYsIGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSk6CisgICAgZGVm
IF9nZXRfZmlsZV9jb250ZW50KHNlbGYsIGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSk6CiAgICAg
ICAgICIiIlJldHVybiBjb250ZW50IG9mIHRoZSBmaWxlIHRoYXQgbWF0Y2hlcyBidWlsZGVyIGFu
ZCBmaWxlIG5hbWUuCiAKICAgICAgICAgQXJnczoKQEAgLTEyNiwxNiArMTI4LDE2IEBAIGNsYXNz
IEdldEZpbGUoYmxvYnN0b3JlX2hhbmRsZXJzLkJsb2JzdG8KICAgICAgICAgIyBzcGVjaWZpZWQg
aW4gdGhlIHJlcXVlc3QsIHJldHVybiBsaXN0IG9mIGZpbGVzLCBvdGhlcndpc2UsIHJldHVybgog
ICAgICAgICAjIGZpbGUgY29udGVudC4KICAgICAgICAgaWYgZGlyIG9yIG5vdCBidWlsZGVyIG9y
IG5vdCBuYW1lOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2ZpbGVfbGlzdChidWlsZGVy
LCB0ZXN0X3R5cGUsIG5hbWUpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2ZpbGVfbGlz
dChidWlsZGVyLCB0ZXN0X3R5cGUsIG5hbWUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBy
ZXR1cm4gc2VsZi5nZXRfZmlsZV9jb250ZW50KGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSkKKyAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfZmlsZV9jb250ZW50KGJ1aWxkZXIsIHRlc3RfdHlw
ZSwgbmFtZSkKIAogCiBjbGFzcyBHZXRVcGxvYWRVcmwod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToK
ICAgICAiIiJHZXQgYW4gdXJsIGZvciB1cGxvYWRpbmcgZmlsZSB0byBibG9ic3RvcmUuIEEgc3Bl
Y2lhbCB1cmwgaXMgcmVxdWlyZWQgZm9yIGVhY2ggYmxvYnNvdHJlIHVwbG9hZC4iIiIKIAogICAg
IGRlZiBnZXQoc2VsZik6Ci0gICAgICAgIHVwbG9hZF91cmwgPSBibG9ic3RvcmUuY3JlYXRlX3Vw
bG9hZF91cmwoIi91cGxvYWQiKQorICAgICAgICB1cGxvYWRfdXJsID0gYmxvYnN0b3JlLmNyZWF0
ZV91cGxvYWRfdXJsKCIvdGVzdGZpbGUvdXBsb2FkIikKICAgICAgICAgbG9nZ2luZy5pbmZvKCJH
ZXR0aW5nIHVwbG9hZCB1cmw6ICVzLiIsIHVwbG9hZF91cmwpCiAgICAgICAgIHNlbGYucmVzcG9u
c2Uub3V0LndyaXRlKHVwbG9hZF91cmwpCiAKQEAgLTE5NCw3ICsxOTYsNyBAQCBjbGFzcyBVcGxv
YWRGb3JtKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CiAgICAgIiIiU2hvdyBhIGZvcm0gc28gdXNl
ciBjYW4gc3VibWl0IGEgZmlsZSB0byBibG9ic3RvcmUuIiIiCiAKICAgICBkZWYgZ2V0KHNlbGYp
OgotICAgICAgICB1cGxvYWRfdXJsID0gYmxvYnN0b3JlLmNyZWF0ZV91cGxvYWRfdXJsKCIvdXBs
b2FkIikKKyAgICAgICAgdXBsb2FkX3VybCA9IGJsb2JzdG9yZS5jcmVhdGVfdXBsb2FkX3VybCgi
L3Rlc3RmaWxlL3VwbG9hZCIpCiAgICAgICAgIHRlbXBsYXRlX3ZhbHVlcyA9IHsKICAgICAgICAg
ICAgICJ1cGxvYWRfdXJsIjogdXBsb2FkX3VybCwKICAgICAgICAgfQpAQCAtMjA1LDEzICsyMDcs
MTUgQEAgY2xhc3MgVXBsb2FkU3RhdHVzKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcgogICAgICIiIlJl
dHVybiBzdGF0dXMgb2YgZmlsZSB1cGxvYWRpbmciIiIKIAogICAgIGRlZiBnZXQoc2VsZik6Cisg
ICAgICAgIGxvZ2dpbmcuZGVidWcoIlVwZGF0ZSBzdGF0dXMiKQorCiAgICAgICAgIGlmIHNlbGYu
cmVxdWVzdC5wYXRoID09ICIvdXBsb2Fkc3VjY2VzcyI6CiAgICAgICAgICAgICBzZWxmLnJlc3Bv
bnNlLnNldF9zdGF0dXMoMjAwKQogICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUo
Ik9LIikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVxdWVzdC5w
YXJhbXMuZ2V0YWxsKCJlcnJvciIpCiAgICAgICAgICAgICBpZiBlcnJvcnM6Ci0gICAgICAgICAg
ICAgICAgbWVzc2FnZXMgPSAiRkFJTDogIiArICJcbiIuam9pbihlcnJvcnMpCisgICAgICAgICAg
ICAgICAgbWVzc2FnZXMgPSAiRkFJTDogIiArICI7ICIuam9pbihlcnJvcnMpCiAgICAgICAgICAg
ICAgICAgbG9nZ2luZy53YXJuaW5nKG1lc3NhZ2VzKQotICAgICAgICAgICAgICAgIHNlbGYucmVz
cG9uc2Uub3V0LndyaXRlKG1lc3NhZ2VzKQotICAgICAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uu
c2V0X3N0YXR1cyg1MDApCisgICAgICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5zZXRfc3RhdHVz
KDUwMCwgbWVzc2FnZXMpCisgICAgICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUo
IkZBSUwiKQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tb2RlbC9kYXNoYm9h
cmRmaWxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbW9k
ZWwvZGFzaGJvYXJkZmlsZS5weQkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvbW9kZWwvZGFzaGJvYXJkZmlsZS5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MTYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1l
CitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHVybGxpYgoraW1wb3J0IHVybGxpYjIKKworZnJvbSBn
b29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgZGIKKworU1ZOX1BBVEhfREFTSEJPQVJEID0gKCJo
dHRwOi8vc3JjLmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21lL3RydW5rL3Rvb2xzLyIKKyAgICAi
ZGFzaGJvYXJkcy8iKQorCitjbGFzcyBEYXNoYm9hcmRGaWxlKGRiLk1vZGVsKToKKyAgICBuYW1l
ID0gZGIuU3RyaW5nUHJvcGVydHkoKQorICAgIGRhdGEgPSBkYi5CbG9iUHJvcGVydHkoKQorICAg
IGRhdGUgPSBkYi5EYXRlVGltZVByb3BlcnR5KGF1dG9fbm93X2FkZD1UcnVlKQorCisgICAgQGNs
YXNzbWV0aG9kCisgICAgZGVmIGdldF9maWxlcyhjbHMsIG5hbWUsIGxpbWl0PTEpOgorICAgICAg
ICBxdWVyeSA9IERhc2hib2FyZEZpbGUuYWxsKCkKKyAgICAgICAgaWYgbmFtZToKKyAgICAgICAg
ICAgIHF1ZXJ5ID0gcXVlcnkuZmlsdGVyKCJuYW1lID0iLCBuYW1lKQorICAgICAgICByZXR1cm4g
cXVlcnkub3JkZXIoIi1kYXRlIikuZmV0Y2gobGltaXQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgYWRkX2ZpbGUoY2xzLCBuYW1lLCBkYXRhKToKKyAgICAgICAgZmlsZSA9IERhc2hib2Fy
ZEZpbGUoKQorICAgICAgICBmaWxlLm5hbWUgPSBuYW1lCisgICAgICAgIGZpbGUuZGF0YSA9IGRi
LkJsb2IoZGF0YSkKKyAgICAgICAgZmlsZS5wdXQoKQorCisgICAgICAgIGxvZ2dpbmcuZGVidWco
IkRhc2hib2FyZCBmaWxlIHNhdmVkLCBuYW1lOiAlcy4iLCBuYW1lKQorCisgICAgICAgIHJldHVy
biBmaWxlCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ3JhYl9maWxlX2Zyb21fc3ZuKGNs
cywgbmFtZSk6CisgICAgICAgIGxvZ2dpbmcuZGVidWcoIkdyYWIgZmlsZSBmcm9tIFNWTiwgbmFt
ZTogJXMuIiwgbmFtZSkKKworICAgICAgICB1cmwgPSBTVk5fUEFUSF9EQVNIQk9BUkQgKyB1cmxs
aWIucXVvdGVfcGx1cyhuYW1lKQorCisgICAgICAgIGxvZ2dpbmcuaW5mbygiR3JhYiBmaWxlIGZy
b20gU1ZOLCB1cmw6ICVzLiIsIHVybCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmlsZSA9
IHVybGxpYjIudXJsb3Blbih1cmwpCisgICAgICAgICAgICBpZiBub3QgZmlsZToKKyAgICAgICAg
ICAgICAgICBsb2dnaW5nLmVycm9yKCJGYWlsZWQgdG8gZ3JhYiBkYXNoYm9hcmQgZmlsZTogJXMu
IiwgdXJsKQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgIHJldHVy
biBmaWxlLnJlYWQoKQorICAgICAgICBleGNlcHQgdXJsbGliMi5IVFRQRXJyb3IsIGU6CisgICAg
ICAgICAgICBsb2dnaW5nLmVycm9yKCJGYWlsZWQgdG8gZ3JhYiBkYXNoYm9hcmQgZmlsZTogJXMi
LCBzdHIoZSkpCisgICAgICAgIGV4Y2VwdCB1cmxsaWIyLlVSTEVycm9yLCBlOgorICAgICAgICAg
ICAgbG9nZ2luZy5lcnJvcigiRmFpbGVkIHRvIGdyYWIgZGFzaGJvYXJkIGZpbGU6ICVzIiwgc3Ry
KGUpKQorCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYg
dXBkYXRlX2ZpbGUoY2xzLCBuYW1lKToKKyAgICAgICAgZGF0YSA9IGNscy5ncmFiX2ZpbGVfZnJv
bV9zdm4obmFtZSkKKyAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICByZXR1cm4gTm9u
ZQorCisgICAgICAgIGxvZ2dpbmcuaW5mbygiR290IGZpbGUgZnJvbSBTVk4uIikKKworICAgICAg
ICBmaWxlcyA9IGNscy5nZXRfZmlsZXMobmFtZSkKKyAgICAgICAgaWYgbm90IGZpbGVzOgorICAg
ICAgICAgICAgbG9nZ2luZy5pbmZvKCJObyBleGlzdGluZyBmaWxlLCBhZGRlZCBhcyBuZXcgZmls
ZS4iKQorICAgICAgICAgICAgcmV0dXJuIGNscy5hZGRfZmlsZShuYW1lLCBkYXRhKQorICAgICAg
ICAKKyAgICAgICAgbG9nZ2luZy5kZWJ1ZygiVXBkYXRpbmcgZXhpc3RpbmcgZmlsZS4iKQorICAg
ICAgICBmaWxlID0gZmlsZXNbMF0KKyAgICAgICAgZmlsZS5kYXRhID0gZGF0YQorICAgICAgICBm
aWxlLmRhdGUgPSBkYXRldGltZS5ub3coKQorICAgICAgICBmaWxlLnB1dCgpCisKKyAgICAgICAg
bG9nZ2luZy5pbmZvKCJEYXNoYm9hcmQgZmlsZSByZXBsYWNlZCwgbmFtZTogJXMuIiwgbmFtZSkK
KworICAgICAgICByZXR1cm4gZmlsZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRlbGV0
ZV9maWxlKGNscywgbmFtZSk6CisgICAgICAgIGZpbGVzID0gY2xzLmdldF9maWxlcyhuYW1lKQor
ICAgICAgICBpZiBub3QgZmlsZXM6CisgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoIkZpbGUg
bm90IGZvdW5kLCBuYW1lOiAlcy4iLCBuYW1lKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisK
KyAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICBmaWxlLmRlbGV0ZSgpCisK
KyAgICAgICAgcmV0dXJuIFRydWUKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
bW9kZWwvdGVzdGZpbGUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9tb2RlbC90ZXN0ZmlsZS5weQkocmV2aXNpb24gNTYwNzMpCisrKyBXZWJLaXRUb29scy9U
ZXN0UmVzdWx0U2VydmVyL21vZGVsL3Rlc3RmaWxlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC04NSw3
ICs4NSw3IEBAIGNsYXNzIFRlc3RGaWxlKGRiLk1vZGVsKToKIAogICAgICAgICBsb2dnaW5nLmlu
Zm8oCiAgICAgICAgICAgICAiRmlsZSBzYXZlZCwgYnVpbGRlcjogJXMsIHRlc3RfdHlwZTogJXMs
IG5hbWU6ICVzLCBibG9iIGtleTogJXMuIiwKLSAgICAgICAgICAgIGJ1aWxkZXIsIGZpbGUubmFt
ZSwgZmlsZS5ibG9iX2tleSkKKyAgICAgICAgICAgIGJ1aWxkZXIsIHRlc3RfdHlwZSwgZmlsZS5u
YW1lLCBmaWxlLmJsb2Jfa2V5KQogCiAgICAgICAgIHJldHVybiBmaWxlCiAKSW5kZXg6IFdlYktp
dFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3R5bGVzaGVldHMvZGFzaGJvYXJkZmlsZS5jc3MKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdHlsZXNoZWV0cy9kYXNo
Ym9hcmRmaWxlLmNzcwkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvc3R5bGVzaGVldHMvZGFzaGJvYXJkZmlsZS5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzAgQEAKK2JvZHkgeworICBmb250LWZhbWlseTogVmVyZGFuYSwgSGVsdmV0aWNhLCBzYW5zLXNl
cmlmOworICBwYWRkaW5nOiAwcHg7CisgIGNvbG9yOiAjNDQ0OworfQoraDEgeworICBjb2xvcjog
IzQ0NDsKKyAgZm9udC1zaXplOiAxNHB0OworICBmb250LXN0eWxlOiBpdGFsaWM7CisgIG1hcmdp
bjogMHB4OworICBwYWRkaW5nOiA1cHg7Cit9Cit0YWJsZSB7CisgIGJvcmRlci1zcGFjaW5nOiAw
cHg7Cit9Cit0aCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNBQUE7CisgIGNvbG9yOiB3aGl0ZTsK
KyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgcGFkZGluZzogNXB4OworICBmb250LXNpemU6IDEycHQ7
Cit9Cit0ZCB7CisgIGZvbnQtc2l6ZTogMTFwdDsKKyAgcGFkZGluZzogM3B4OworICB0ZXh0LWFs
aWduOiBsZWZ0OworfQordHI6aG92ZXIgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVFOworfQpJ
bmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvZGFzaGJvYXJkZmls
ZWxpc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3Rl
bXBsYXRlcy9kYXNoYm9hcmRmaWxlbGlzdC5odG1sCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9v
bHMvVGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvZGFzaGJvYXJkZmlsZWxpc3QuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPkRhc2hib2FyZCBGaWxlczwvdGl0bGU+Cis8bGluayB0eXBlPSJ0ZXh0L2NzcyIg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvc3R5bGVzaGVldHMvZGFzaGJvYXJkZmlsZS5jc3MiIC8+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxoMT5EYXNoYm9hcmQgRmlsZXMKKzwvaDE+Cis8ZGl2PgorICAg
IDx0YWJsZT4KKyAgICAgICAgPHRyPgorICAgICAgICAgICAgPHRoPkZpbGU8L3RoPgorICAgICAg
ICAgICAgPHRoPkRhdGU8L3RoPgorICAgICAgICAgICAgeyUgaWYgYWRtaW4gJX0KKyAgICAgICAg
ICAgIDx0aD48L3RoPgorICAgICAgICAgICAgeyUgZW5kaWYgJX0KKyAgICAgICAgeyUgZm9yIGZp
bGUgaW4gZmlsZXMgJX0KKyAgICAgICAgPHRyPnslIGlmIGZpbGUubmFtZSAlfQorICAgICAgICAg
ICAgPHRkPjxhIGhyZWY9Ii9kYXNoYm9hcmRzL3t7IGZpbGUubmFtZSB9fSIgPgorICAgICAgICAg
ICAgICAgIHt7IGZpbGUubmFtZSB9fQorICAgICAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAg
IDwvdGQ+CisgICAgICAgICAgICA8dGQ+e3sgZmlsZS5kYXRlfGRhdGU6ImQtTS1ZIEg6aTpzIiB9
fQorICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgIHslIGlmIGFkbWluICV9CisgICAgICAg
ICAgICA8dGQ+PGEgaHJlZj0iL2Rhc2hib2FyZHMvZGVsZXRlP2ZpbGU9e3sgZmlsZS5uYW1lIH19
IiA+CisgICAgICAgICAgICAgICAgRGVsZXRlCisgICAgICAgICAgICAgICAgPC9hPgorICAgICAg
ICAgICAgPC90ZD4KKyAgICAgICAgICAgIHslIGVuZGlmICV9CisgICAgICAgIHslIGVuZGlmICV9
CisgICAgICAgIDwvdHI+CisgICAgeyUgZW5kZm9yICV9CisgICAgPC90YWJsZT4KKzwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1w
bGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJl
c3VsdFNlcnZlci90ZW1wbGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0bWwJKHJldmlzaW9uIDU2MDczKQor
KysgV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTE3LDI5ICsxNywzMyBAQAogICAgICAgICAgICAgPHRoPlRl
c3QgVHlwZTwvdGg+CiAgICAgICAgICAgICA8dGg+RmlsZTwvdGg+CiAgICAgICAgICAgICA8dGg+
RGF0ZTwvdGg+CisgICAgICAgICAgICB7JSBpZiBhZG1pbiAlfQogICAgICAgICAgICAgPHRoPjwv
dGg+CisgICAgICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgICB7JSBmb3IgZmlsZSBpbiBmaWxl
cyAlfQogICAgICAgICA8dHI+eyUgaWYgZmlsZS5idWlsZGVyIGFuZCBmaWxlLm5hbWUgJX0KLSAg
ICAgICAgICAgIDx0ZD48YSBocmVmPSIvZ2V0ZmlsZT9idWlsZGVyPXt7IGZpbGUuYnVpbGRlciB9
fSIgPgorICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii90ZXN0ZmlsZT9idWlsZGVyPXt7IGZpbGUu
YnVpbGRlciB9fSIgPgogICAgICAgICAgICAgICAgIHt7IGZpbGUuYnVpbGRlciB9fQogICAgICAg
ICAgICAgICAgIDwvYT4KICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICA8dGQ+eyUgaWYg
ZmlsZS50ZXN0X3R5cGUgJX0KLSAgICAgICAgICAgICAgICA8YSBocmVmPSIvZ2V0ZmlsZT90ZXN0
dHlwZT17eyBmaWxlLnRlc3RfdHlwZSB9fSIgPgorICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii90
ZXN0ZmlsZT90ZXN0dHlwZT17eyBmaWxlLnRlc3RfdHlwZSB9fSIgPgogICAgICAgICAgICAgICAg
IHt7IGZpbGUudGVzdF90eXBlIH19CiAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAg
ICAgIHslIGVuZGlmICV9CiAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPjxhIGhy
ZWY9Ii9nZXRmaWxlP2J1aWxkZXI9e3sgZmlsZS5idWlsZGVyIH19Jm5hbWU9e3sgZmlsZS5uYW1l
IH19IiA+CisgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iL3Rlc3RmaWxlP2J1aWxkZXI9e3sgZmls
ZS5idWlsZGVyIH19Jm5hbWU9e3sgZmlsZS5uYW1lIH19IiA+CiAgICAgICAgICAgICAgICAge3sg
ZmlsZS5uYW1lIH19CiAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgPC90ZD4KICAg
ICAgICAgICAgIDx0ZD57eyBmaWxlLmRhdGV8ZGF0ZToiZC1NLVkgSDppOnMiIH19CiAgICAgICAg
ICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii9kZWxldGVmaWxlP2tleT17eyBm
aWxlLmtleSB9fSZidWlsZGVyPXt7IGJ1aWxkZXIgfX0mbmFtZT17eyBuYW1lIH19IiA+CisgICAg
ICAgICAgICB7JSBpZiBhZG1pbiAlfQorICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii90ZXN0Zmls
ZS9kZWxldGU/a2V5PXt7IGZpbGUua2V5IH19JmJ1aWxkZXI9e3sgYnVpbGRlciB9fSZuYW1lPXt7
IG5hbWUgfX0iID4KICAgICAgICAgICAgICAgICBEZWxldGUKICAgICAgICAgICAgICAgICA8L2E+
CiAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgeyUg
ZW5kaWYgJX0KICAgICAgICAgPC90cj4KICAgICB7JSBlbmRmb3IgJX0KSW5kZXg6IFdlYktpdFRv
b2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvdGVtcGxhdGVzL3VwbG9hZGZvcm0uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy91cGxvYWRmb3JtLmh0
bWwJKHJldmlzaW9uIDU2MDczKQorKysgV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1w
bGF0ZXMvdXBsb2FkZm9ybS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsNyBAQAogPC9o
ZWFkPgogPGJvZHk+CiA8aDE+VXBsb2FkIFRlc3QgUmVzdWx0IEZpbGU8L2gxPgotPGZvcm0gYWNj
ZXB0PSJ0ZXh0L2h0bWwiIGFjdGlvbj0ie3sgdXBsb2FkX3VybCB9fSIgZW5jdHlwZT0ibXVsdGlw
YXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJwb3N0Ij4KKzxmb3JtIGlkPSJ1cGxvYWRGb3JtIiBuYW1l
PSJ0ZXN0X3Jlc3VsdF91cGxvYWQiIGFjY2VwdD0idGV4dC9odG1sIiBhY3Rpb249Int7IHVwbG9h
ZF91cmwgfX0iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG1ldGhvZD0icG9zdCI+CiAg
ICAgPGJyPgogICAgIDx0YWJsZT4KICAgICA8dHI+CkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAg
IDx0ZD48aW5wdXQgY2xhc3M9aW5wdXR0ZXh0IHR5cGU9InRleHQiIG5hbWU9InRlc3R0eXBlIiB2
YWx1ZT0iIi8+PC90ZD4KICAgICA8L3RyPgogICAgIDwvdGFibGU+Ci0gICAgPGRpdj48aW5wdXQg
Y2xhc3M9YnV0dG9uIHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiPjwvZGl2PgorICAgIDxkaXY+PGlu
cHV0IGNsYXNzPWJ1dHRvbiB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiBtdWx0aXBsZT48L2Rpdj4K
ICAgICA8YnI+CiAgICAgPGRpdj48aW5wdXQgY2xhc3M9YnV0dG9uIHR5cGU9InN1Ym1pdCIgdmFs
dWU9IlVwbG9hZCI+PC9kaXY+CiA8L2Zvcm0+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51547</attachid>
            <date>2010-03-24 14:49:34 -0700</date>
            <delta_ts>2010-03-26 10:27:30 -0700</delta_ts>
            <desc>Correct app name and remove a few unused lines.</desc>
            <filename>test_results_server.patch</filename>
            <type>text/plain</type>
            <size>23788</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2MDc1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDMtMTYgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSG9zdCBsYXlvdXQgdGVzdCBmbGFraW5lc3MgZGFzaGJvYXJkIGluIFRlc3RS
ZXN1bHRTZXJ2ZXIgYXBwZW5naW5lLgorCisgICAgICAgIEZsYWtpbmVzcyBkYXNoYm9hcmQgaXMg
YSB0b29sIHRvIG1vbml0b3IgbGF5b3V0IHRlc3Qgc3RhdHVzIGFuZAorICAgICAgICBoZWxwIGxh
eW91dCB0ZXN0IHJlZ3Jlc3Npb24gZGlhZ25vc3RpY3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MTk1CisKKyAgICAgICAgKiBUZXN0UmVzdWx0
U2VydmVyL2hhbmRsZXJzL2Rhc2hib2FyZGhhbmRsZXIucHk6IEFkZGVkLgorICAgICAgICAgLSBO
ZXcgaGFuZGxlciB0byBoYW5kbGUgZGFzaGJvYXJkIHJlcXVlc3QKKyAgICAgICAgKiBUZXN0UmVz
dWx0U2VydmVyL2hhbmRsZXJzL21lbnUucHk6CisgICAgICAgICAtIEFkZCBuZXcgZGFzaGJvYXJk
IGxpbmtzCisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVycy90ZXN0ZmlsZWhhbmRs
ZXIucHk6CisgICAgICAgICAtIFJlcXVlc3Qgcm91dGVzIHJlZmFjdG9yeQorICAgICAgICAqIFRl
c3RSZXN1bHRTZXJ2ZXIvaW5kZXgueWFtbDoKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL21h
aW4ucHk6CisgICAgICAgICAtIEFkZCBuZXcgZGFzaGJvYXJkIHJlcXVlc3Qgcm91dGVzIGFuZCBy
ZWZhY3RvciB0ZXN0IHJlc3VsdCBmaWxlIHJvdW50ZXMuCisgICAgICAgICogVGVzdFJlc3VsdFNl
cnZlci9tb2RlbC9kYXNoYm9hcmRmaWxlLnB5OiBBZGRlZC4KKyAgICAgICAgIC0gTW9kZWwgdG8g
YWNjZXNzIGRhdGFzdG9yZSBmb3IgZGFzaGJvYXJkIGZpbGVzCisgICAgICAgICogVGVzdFJlc3Vs
dFNlcnZlci9tb2RlbC90ZXN0ZmlsZS5weToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0
eWxlc2hlZXRzL2Rhc2hib2FyZGZpbGUuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0UmVzdWx0
U2VydmVyL3RlbXBsYXRlcy9kYXNoYm9hcmRmaWxlbGlzdC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBUZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy9zaG93ZmlsZWxpc3QuaHRtbDoKKwogMjAxMC0w
My0xNiAgSm9hbm1hcmllIERpZ2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0
U2VydmVyL2FwcC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvYXBwLnlhbWwJKHJldmlzaW9uIDU2MDczKQorKysgV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9hcHAueWFtbAkod29ya2luZyBjb3B5KQpAQCAtNyw1ICs3LDEzIEBAIGhhbmRsZXJzOgog
LSB1cmw6IC9zdHlsZXNoZWV0cwogICBzdGF0aWNfZGlyOiBzdHlsZXNoZWV0cwogCistIHVybDog
L3Rlc3RmaWxlL2RlbGV0ZQorICBzY3JpcHQ6IG1haW4ucHkKKyAgbG9naW46IGFkbWluCisKKy0g
dXJsOiAvZGFzaGJvYXJkcy9kZWxldGUKKyAgc2NyaXB0OiBtYWluLnB5CisgIGxvZ2luOiBhZG1p
bgorCiAtIHVybDogLy4qCiAgIHNjcmlwdDogbWFpbi5weQpJbmRleDogV2ViS2l0VG9vbHMvVGVz
dFJlc3VsdFNlcnZlci9pbmRleC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RS
ZXN1bHRTZXJ2ZXIvaW5kZXgueWFtbAkocmV2aXNpb24gNTYwNzMpCisrKyBXZWJLaXRUb29scy9U
ZXN0UmVzdWx0U2VydmVyL2luZGV4LnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDE2ICsxMCwx
NSBAQCBpbmRleGVzOg0KICMgYXV0b21hdGljYWxseSB1cGxvYWRlZCB0byB0aGUgYWRtaW4gY29u
c29sZSB3aGVuIHlvdSBuZXh0IGRlcGxveQ0KICMgeW91ciBhcHBsaWNhdGlvbiB1c2luZyBhcHBj
ZmcucHkuDQogDQotLSBraW5kOiBUZXN0RmlsZQ0KKy0ga2luZDogRGFzaGJvYXJkRmlsZQ0KICAg
cHJvcGVydGllczoNCi0gIC0gbmFtZTogYnVpbGRlcg0KKyAgLSBuYW1lOiBuYW1lDQogICAtIG5h
bWU6IGRhdGUNCiAgICAgZGlyZWN0aW9uOiBkZXNjDQogDQogLSBraW5kOiBUZXN0RmlsZQ0KICAg
cHJvcGVydGllczoNCiAgIC0gbmFtZTogYnVpbGRlcg0KLSAgLSBuYW1lOiBuYW1lDQogICAtIG5h
bWU6IGRhdGUNCiAgICAgZGlyZWN0aW9uOiBkZXNjDQogDQpAQCAtMjcsMTQgKzI2LDE0IEBAIGlu
ZGV4ZXM6DQogICBwcm9wZXJ0aWVzOg0KICAgLSBuYW1lOiBidWlsZGVyDQogICAtIG5hbWU6IG5h
bWUNCi0gIC0gbmFtZTogdGVzdF90eXBlDQogICAtIG5hbWU6IGRhdGUNCiAgICAgZGlyZWN0aW9u
OiBkZXNjDQogDQogLSBraW5kOiBUZXN0RmlsZQ0KICAgcHJvcGVydGllczoNCi0gIC0gbmFtZTog
YnVpbGRlcj0NCi0gIC0gbmFtZTogbmFtZT0NCisgIC0gbmFtZTogYnVpbGRlcg0KKyAgLSBuYW1l
OiBuYW1lDQorICAtIG5hbWU6IHRlc3RfdHlwZQ0KICAgLSBuYW1lOiBkYXRlDQogICAgIGRpcmVj
dGlvbjogZGVzYw0KIA0KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbWFpbi5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL21haW4ucHkJKHJl
dmlzaW9uIDU2MDczKQorKysgV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tYWluLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0zMywyMyArMzMsMjIgQEAgdXNlX2xpYnJhcnkoJ2RqYW5nbycsICcx
LjEnKQogZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwCiBmcm9tIGdvb2ds
ZS5hcHBlbmdpbmUuZXh0LndlYmFwcC51dGlsIGltcG9ydCBydW5fd3NnaV9hcHAKIAotZnJvbSBo
YW5kbGVycy5tZW51IGltcG9ydCBNZW51Ci1mcm9tIGhhbmRsZXJzLnRlc3RmaWxlaGFuZGxlciBp
bXBvcnQgRGVsZXRlRmlsZQotZnJvbSBoYW5kbGVycy50ZXN0ZmlsZWhhbmRsZXIgaW1wb3J0IEdl
dEZpbGUKLWZyb20gaGFuZGxlcnMudGVzdGZpbGVoYW5kbGVyIGltcG9ydCBHZXRVcGxvYWRVcmwK
LWZyb20gaGFuZGxlcnMudGVzdGZpbGVoYW5kbGVyIGltcG9ydCBVcGxvYWQKLWZyb20gaGFuZGxl
cnMudGVzdGZpbGVoYW5kbGVyIGltcG9ydCBVcGxvYWRGb3JtCi1mcm9tIGhhbmRsZXJzLnRlc3Rm
aWxlaGFuZGxlciBpbXBvcnQgVXBsb2FkU3RhdHVzCitmcm9tIGhhbmRsZXJzIGltcG9ydCBkYXNo
Ym9hcmRoYW5kbGVyCitmcm9tIGhhbmRsZXJzIGltcG9ydCBtZW51Citmcm9tIGhhbmRsZXJzIGlt
cG9ydCB0ZXN0ZmlsZWhhbmRsZXIKIAogcm91dGVzID0gWwotICAgICgnL2RlbGV0ZWZpbGUnLCBE
ZWxldGVGaWxlKSwKLSAgICAoJy9nZXRmaWxlJywgR2V0RmlsZSksCi0gICAgKCcvZ2V0dXBsb2Fk
dXJsJywgR2V0VXBsb2FkVXJsKSwKLSAgICAoJy91cGxvYWQnLCBVcGxvYWQpLAotICAgICgnL3Vw
bG9hZGZhaWwnLCBVcGxvYWRTdGF0dXMpLAotICAgICgnL3VwbG9hZGZvcm0nLCBVcGxvYWRGb3Jt
KSwKLSAgICAoJy91cGxvYWRzdWNjZXNzJywgVXBsb2FkU3RhdHVzKSwKLSAgICAoJy8qfC9tZW51
JywgTWVudSksCisgICAgKCcvZGFzaGJvYXJkcy9kZWxldGUnLCBkYXNoYm9hcmRoYW5kbGVyLkRl
bGV0ZURhc2hib2FyZEZpbGUpLAorICAgICgnL2Rhc2hib2FyZHMvdXBkYXRlJywgZGFzaGJvYXJk
aGFuZGxlci5VcGRhdGVEYXNoYm9hcmRGaWxlKSwKKyAgICAoJy9kYXNoYm9hcmRzLyhbXj9dKyk/
JywgZGFzaGJvYXJkaGFuZGxlci5HZXREYXNoYm9hcmRGaWxlKSwKKyAgICAoJy90ZXN0ZmlsZS9k
ZWxldGUnLCB0ZXN0ZmlsZWhhbmRsZXIuRGVsZXRlRmlsZSksCisgICAgKCcvdGVzdGZpbGUvdXBs
b2FkdXJsJywgdGVzdGZpbGVoYW5kbGVyLkdldFVwbG9hZFVybCksCisgICAgKCcvdGVzdGZpbGUv
dXBsb2FkJywgdGVzdGZpbGVoYW5kbGVyLlVwbG9hZCksCisgICAgKCcvdGVzdGZpbGUvdXBsb2Fk
Zm9ybScsIHRlc3RmaWxlaGFuZGxlci5VcGxvYWRGb3JtKSwKKyAgICAoJy90ZXN0ZmlsZS8/Jywg
dGVzdGZpbGVoYW5kbGVyLkdldEZpbGUpLAorICAgICgnL3VwbG9hZGZhaWwnLCB0ZXN0ZmlsZWhh
bmRsZXIuVXBsb2FkU3RhdHVzKSwKKyAgICAoJy91cGxvYWRzdWNjZXNzJywgdGVzdGZpbGVoYW5k
bGVyLlVwbG9hZFN0YXR1cyksCisgICAgKCcvKnwvbWVudScsIG1lbnUuTWVudSksCiBdCiAKIGFw
cGxpY2F0aW9uID0gd2ViYXBwLldTR0lBcHBsaWNhdGlvbihyb3V0ZXMsIGRlYnVnPVRydWUpCklu
ZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL2hhbmRsZXJzL2Rhc2hib2FyZGhhbmRs
ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVy
cy9kYXNoYm9hcmRoYW5kbGVyLnB5CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFJl
c3VsdFNlcnZlci9oYW5kbGVycy9kYXNoYm9hcmRoYW5kbGVyLnB5CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEyMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAK
KyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9y
dCBtaW1ldHlwZXMKK2ltcG9ydCB1cmxsaWIyCisKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5hcGkg
aW1wb3J0IHVzZXJzCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJhcHAKK2Zy
b20gZ29vZ2xlLmFwcGVuZ2luZS5leHQud2ViYXBwIGltcG9ydCB0ZW1wbGF0ZQorCitmcm9tIG1v
ZGVsLmRhc2hib2FyZGZpbGUgaW1wb3J0IERhc2hib2FyZEZpbGUKKworUEFSQU1fRklMRSA9ICJm
aWxlIgorCitkZWYgZ2V0X2NvbnRlbnRfdHlwZShmaWxlbmFtZSk6CisgICAgcmV0dXJuIG1pbWV0
eXBlcy5ndWVzc190eXBlKGZpbGVuYW1lKVswXSBvciAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFt
IgorCisKK2NsYXNzIEdldERhc2hib2FyZEZpbGUod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKKyAg
ICBkZWYgZ2V0KHNlbGYsIHJlc291cmNlKToKKyAgICAgICAgaWYgbm90IHJlc291cmNlOgorICAg
ICAgICAgICAgbG9nZ2luZy5kZWJ1ZygiR2V0dGluZyBkYXNoYm9hcmQgZmlsZSBsaXN0LiIpCisg
ICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2ZpbGVfbGlzdCgpCisKKyAgICAgICAgZmlsZW5h
bWUgPSBzdHIodXJsbGliMi51bnF1b3RlKHJlc291cmNlKSkKKworICAgICAgICBsb2dnaW5nLmRl
YnVnKCJHZXR0aW5nIGRhc2hib2FyZCBmaWxlOiAlcyIsIGZpbGVuYW1lKQorCisgICAgICAgIGZp
bGVzID0gRGFzaGJvYXJkRmlsZS5nZXRfZmlsZXMoZmlsZW5hbWUpCisgICAgICAgIGlmIG5vdCBm
aWxlczoKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoIkZhaWxlZCB0byBmaW5kIGRhc2hib2Fy
ZCBmaWxlOiAlcywgcmVxdWVzdDogJXMiLAorICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBzZWxm
LnJlcXVlc3QpCisgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLnNldF9zdGF0dXMoNDA0KQorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgY29udGVudF90eXBlID0gIiVzOyBjaGFyc2V0PXV0
Zi04IiAlIGdldF9jb250ZW50X3R5cGUoZmlsZW5hbWUpCisgICAgICAgIGxvZ2dpbmcuaW5mbygi
Y29udGVudCB0eXBlOiAlcyIsIGNvbnRlbnRfdHlwZSkKKyAgICAgICAgc2VsZi5yZXNwb25zZS5o
ZWFkZXJzWyJDb250ZW50LVR5cGUiXSA9IGNvbnRlbnRfdHlwZQorICAgICAgICBzZWxmLnJlc3Bv
bnNlLm91dC53cml0ZShmaWxlc1swXS5kYXRhKQorCisgICAgZGVmIF9nZXRfZmlsZV9saXN0KHNl
bGYpOgorICAgICAgICBsb2dnaW5nLmluZm8oImdldHRpbmcgZGFzaGJvYXJkIGZpbGUgbGlzdC4i
KQorCisgICAgICAgIGZpbGVzID0gRGFzaGJvYXJkRmlsZS5nZXRfZmlsZXMoIiIsIDEwMCkKKyAg
ICAgICAgaWYgbm90IGZpbGVzOgorICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCJGYWlsZWQgdG8g
ZmluZCBkYXNoYm9hcmQgZmlsZXMuIikKKyAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uuc2V0X3N0
YXR1cyg0MDQpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICB0ZW1wbGF0ZV92YWx1ZXMg
PSB7CisgICAgICAgICAgICAiYWRtaW4iOiB1c2Vycy5pc19jdXJyZW50X3VzZXJfYWRtaW4oKSwK
KyAgICAgICAgICAgICJmaWxlcyI6IGZpbGVzLAorICAgICAgICB9CisgICAgICAgIHNlbGYucmVz
cG9uc2Uub3V0LndyaXRlKAorICAgICAgICAgICAgdGVtcGxhdGUucmVuZGVyKCJ0ZW1wbGF0ZXMv
ZGFzaGJvYXJkZmlsZWxpc3QuaHRtbCIsCisgICAgICAgICAgICAgICAgdGVtcGxhdGVfdmFsdWVz
KSkKKworCitjbGFzcyBVcGRhdGVEYXNoYm9hcmRGaWxlKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6
CisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgZmlsZXMgPSBzZWxmLnJlcXVlc3QuZ2V0X2Fs
bChQQVJBTV9GSUxFKQorICAgICAgICBpZiBub3QgZmlsZXM6CisgICAgICAgICAgICBmaWxlcyA9
IFsiZmxha2luZXNzX2Rhc2hib2FyZC5odG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICJkYXNo
Ym9hcmRfYmFzZS5qcyIsCisgICAgICAgICAgICAgICAgICAgICAiYWdncmVnYXRlX3Jlc3VsdHMu
aHRtbCJdCisKKyAgICAgICAgZXJyb3JzID0gW10KKyAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6
CisgICAgICAgICAgICBpZiBub3QgRGFzaGJvYXJkRmlsZS51cGRhdGVfZmlsZShmaWxlKToKKyAg
ICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCJGYWlsZWQgdG8gdXBkYXRlIGZpbGU6ICVzIiAl
IGZpbGUpCisKKyAgICAgICAgaWYgZXJyb3JzOgorICAgICAgICAgICAgbWVzc2FnZXMgPSAiOyAi
LmpvaW4oZXJyb3JzKQorICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKG1lc3NhZ2VzKQorICAg
ICAgICAgICAgc2VsZi5yZXNwb25zZS5zZXRfc3RhdHVzKDUwMCwgbWVzc2FnZXMpCisgICAgICAg
ICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgiRkFJTCIpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBzZWxmLnJlc3BvbnNlLnNldF9zdGF0dXMoMjAwKQorICAgICAgICAgICAgc2VsZi5y
ZXNwb25zZS5vdXQud3JpdGUoIk9LIikKKworCitjbGFzcyBEZWxldGVEYXNoYm9hcmRGaWxlKHdl
YmFwcC5SZXF1ZXN0SGFuZGxlcik6CisgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgZmlsZXMg
PSBzZWxmLnJlcXVlc3QuZ2V0X2FsbChQQVJBTV9GSUxFKQorICAgICAgICBpZiBub3QgZmlsZXM6
CisgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoIk5vIGRhc2hib2FyZCBmaWxlIHRvIGRlbGV0
ZS4iKQorICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5zZXRfc3RhdHVzKDQwMCkKKyAgICAgICAg
ICAgIHJldHVybgorCisgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgorICAgICAgICAgICAgRGFz
aGJvYXJkRmlsZS5kZWxldGVfZmlsZShmaWxlKQorCisgICAgICAgICMgRGlzcGxheSBkYXNoYm9h
cmQgZmlsZSBsaXN0IGFmdGVyIGRlbGV0aW5nIHRoZSBmaWxlLgorICAgICAgICBzZWxmLnJlZGly
ZWN0KCIvZGFzaGJvYXJkcy8iKQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9o
YW5kbGVycy9tZW51LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvaGFuZGxlcnMvbWVudS5weQkocmV2aXNpb24gNTYwNzMpCisrKyBXZWJLaXRUb29scy9UZXN0
UmVzdWx0U2VydmVyL2hhbmRsZXJzL21lbnUucHkJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICsz
MCwxMiBAQCBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJhcHAKIGZyb20gZ29v
Z2xlLmFwcGVuZ2luZS5leHQud2ViYXBwIGltcG9ydCB0ZW1wbGF0ZQogCiBtZW51ID0gWwotICAg
IFsiTGlzdCBvZiBmaWxlcyIsICIvZ2V0ZmlsZSJdLAotICAgIFsiTGlzdCBvZiByZXN1bHRzLmpz
b24gZmlsZXMiLCAiL2dldGZpbGU/bmFtZT1yZXN1bHRzLmpzb24iXSwKLSAgICBbIkxpc3Qgb2Yg
ZXhwZWN0YXRpb25zLmpzb24gZmlsZXMiLCAiL2dldGZpbGU/bmFtZT1leHBlY3RhdGlvbnMuanNv
biJdLAotICAgIFsiVXBsb2FkIGZpbGUiLCAiL3VwbG9hZGZvcm0iXSwKKyAgICBbIkxpc3Qgb2Yg
dGVzdCBmaWxlcyIsICIvdGVzdGZpbGUiXSwKKyAgICBbIkxpc3Qgb2YgcmVzdWx0cy5qc29uIGZp
bGVzIiwgIi90ZXN0ZmlsZT9uYW1lPXJlc3VsdHMuanNvbiJdLAorICAgIFsiTGlzdCBvZiBleHBl
Y3RhdGlvbnMuanNvbiBmaWxlcyIsICIvdGVzdGZpbGU/bmFtZT1leHBlY3RhdGlvbnMuanNvbiJd
LAorICAgIFsiVXBsb2FkIHRlc3QgZmlsZSIsICIvdGVzdGZpbGUvdXBsb2FkZm9ybSJdLAorICAg
IFsiTGlzdCBvZiBkYXNoYm9hcmQgZmlsZXMiLCAiL2Rhc2hib2FyZHMvIl0sCisgICAgWyJVcGRh
dGUgZGFzaGJvYXJkIGZpbGVzIiwgIi9kYXNoYm9hcmRzL3VwZGF0ZSJdLAogXQogCiAKSW5kZXg6
IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvaGFuZGxlcnMvdGVzdGZpbGVoYW5kbGVyLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvaGFuZGxlcnMvdGVz
dGZpbGVoYW5kbGVyLnB5CShyZXZpc2lvbiA1NjA3MykKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvaGFuZGxlcnMvdGVzdGZpbGVoYW5kbGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHVybGxpYgogCitmcm9tIGdvb2ds
ZS5hcHBlbmdpbmUuYXBpIGltcG9ydCB1c2VycwogZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBp
bXBvcnQgYmxvYnN0b3JlCiBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJhcHAK
IGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQud2ViYXBwIGltcG9ydCBibG9ic3RvcmVfaGFuZGxl
cnMKQEAgLTYwLDE0ICs2MSwxNCBAQCBjbGFzcyBEZWxldGVGaWxlKHdlYmFwcC5SZXF1ZXN0SGFu
ZGxlcik6CiAgICAgICAgIFRlc3RGaWxlLmRlbGV0ZV9maWxlKGtleSwgYnVpbGRlciwgdGVzdF90
eXBlLCBuYW1lLCAxMDApCiAKICAgICAgICAgIyBEaXNwbGF5IGZpbGUgbGlzdCBhZnRlciBkZWxl
dGluZyB0aGUgZmlsZS4KLSAgICAgICAgc2VsZi5yZWRpcmVjdCgiL2dldGZpbGU/YnVpbGRlcj0l
cyZ0ZXN0dHlwZT0lcyZuYW1lPSVzIgorICAgICAgICBzZWxmLnJlZGlyZWN0KCIvdGVzdGZpbGU/
YnVpbGRlcj0lcyZ0ZXN0dHlwZT0lcyZuYW1lPSVzIgogICAgICAgICAgICAgJSAoYnVpbGRlciwg
dGVzdF90eXBlLCBuYW1lKSkKIAogCiBjbGFzcyBHZXRGaWxlKGJsb2JzdG9yZV9oYW5kbGVycy5C
bG9ic3RvcmVEb3dubG9hZEhhbmRsZXIpOgogICAgICIiIkdldCBmaWxlIGNvbnRlbnQgb3IgbGlz
dCBvZiBmaWxlcyBmb3IgZ2l2ZW4gYnVpbGRlciBhbmQgbmFtZS4iIiIKIAotICAgIGRlZiBnZXRf
ZmlsZV9saXN0KHNlbGYsIGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSk6CisgICAgZGVmIF9nZXRf
ZmlsZV9saXN0KHNlbGYsIGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSk6CiAgICAgICAgICIiIkdl
dCBhbmQgZGlzcGxheSBhIGxpc3Qgb2YgZmlsZXMgdGhhdCBtYXRjaGVzIGJ1aWxkZXIgYW5kIGZp
bGUgbmFtZS4KIAogICAgICAgICBBcmdzOgpAQCAtODQsNiArODUsNyBAQCBjbGFzcyBHZXRGaWxl
KGJsb2JzdG9yZV9oYW5kbGVycy5CbG9ic3RvCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAg
ICB0ZW1wbGF0ZV92YWx1ZXMgPSB7CisgICAgICAgICAgICAiYWRtaW4iOiB1c2Vycy5pc19jdXJy
ZW50X3VzZXJfYWRtaW4oKSwKICAgICAgICAgICAgICJidWlsZGVyIjogYnVpbGRlciwKICAgICAg
ICAgICAgICJ0ZXN0X3R5cGUiOiB0ZXN0X3R5cGUsCiAgICAgICAgICAgICAibmFtZSI6IG5hbWUs
CkBAIC05Miw3ICs5NCw3IEBAIGNsYXNzIEdldEZpbGUoYmxvYnN0b3JlX2hhbmRsZXJzLkJsb2Jz
dG8KICAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUodGVtcGxhdGUucmVuZGVyKCJ0ZW1w
bGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0bWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVtcGxhdGVfdmFsdWVzKSkKIAotICAgIGRlZiBnZXRfZmlsZV9j
b250ZW50KHNlbGYsIGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSk6CisgICAgZGVmIF9nZXRfZmls
ZV9jb250ZW50KHNlbGYsIGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSk6CiAgICAgICAgICIiIlJl
dHVybiBjb250ZW50IG9mIHRoZSBmaWxlIHRoYXQgbWF0Y2hlcyBidWlsZGVyIGFuZCBmaWxlIG5h
bWUuCiAKICAgICAgICAgQXJnczoKQEAgLTEyNiwxNiArMTI4LDE2IEBAIGNsYXNzIEdldEZpbGUo
YmxvYnN0b3JlX2hhbmRsZXJzLkJsb2JzdG8KICAgICAgICAgIyBzcGVjaWZpZWQgaW4gdGhlIHJl
cXVlc3QsIHJldHVybiBsaXN0IG9mIGZpbGVzLCBvdGhlcndpc2UsIHJldHVybgogICAgICAgICAj
IGZpbGUgY29udGVudC4KICAgICAgICAgaWYgZGlyIG9yIG5vdCBidWlsZGVyIG9yIG5vdCBuYW1l
OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2ZpbGVfbGlzdChidWlsZGVyLCB0ZXN0X3R5
cGUsIG5hbWUpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2ZpbGVfbGlzdChidWlsZGVy
LCB0ZXN0X3R5cGUsIG5hbWUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2Vs
Zi5nZXRfZmlsZV9jb250ZW50KGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSkKKyAgICAgICAgICAg
IHJldHVybiBzZWxmLl9nZXRfZmlsZV9jb250ZW50KGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSkK
IAogCiBjbGFzcyBHZXRVcGxvYWRVcmwod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKICAgICAiIiJH
ZXQgYW4gdXJsIGZvciB1cGxvYWRpbmcgZmlsZSB0byBibG9ic3RvcmUuIEEgc3BlY2lhbCB1cmwg
aXMgcmVxdWlyZWQgZm9yIGVhY2ggYmxvYnNvdHJlIHVwbG9hZC4iIiIKIAogICAgIGRlZiBnZXQo
c2VsZik6Ci0gICAgICAgIHVwbG9hZF91cmwgPSBibG9ic3RvcmUuY3JlYXRlX3VwbG9hZF91cmwo
Ii91cGxvYWQiKQorICAgICAgICB1cGxvYWRfdXJsID0gYmxvYnN0b3JlLmNyZWF0ZV91cGxvYWRf
dXJsKCIvdGVzdGZpbGUvdXBsb2FkIikKICAgICAgICAgbG9nZ2luZy5pbmZvKCJHZXR0aW5nIHVw
bG9hZCB1cmw6ICVzLiIsIHVwbG9hZF91cmwpCiAgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0Lndy
aXRlKHVwbG9hZF91cmwpCiAKQEAgLTE5NCw3ICsxOTYsNyBAQCBjbGFzcyBVcGxvYWRGb3JtKHdl
YmFwcC5SZXF1ZXN0SGFuZGxlcik6CiAgICAgIiIiU2hvdyBhIGZvcm0gc28gdXNlciBjYW4gc3Vi
bWl0IGEgZmlsZSB0byBibG9ic3RvcmUuIiIiCiAKICAgICBkZWYgZ2V0KHNlbGYpOgotICAgICAg
ICB1cGxvYWRfdXJsID0gYmxvYnN0b3JlLmNyZWF0ZV91cGxvYWRfdXJsKCIvdXBsb2FkIikKKyAg
ICAgICAgdXBsb2FkX3VybCA9IGJsb2JzdG9yZS5jcmVhdGVfdXBsb2FkX3VybCgiL3Rlc3RmaWxl
L3VwbG9hZCIpCiAgICAgICAgIHRlbXBsYXRlX3ZhbHVlcyA9IHsKICAgICAgICAgICAgICJ1cGxv
YWRfdXJsIjogdXBsb2FkX3VybCwKICAgICAgICAgfQpAQCAtMjA1LDEzICsyMDcsMTUgQEAgY2xh
c3MgVXBsb2FkU3RhdHVzKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcgogICAgICIiIlJldHVybiBzdGF0
dXMgb2YgZmlsZSB1cGxvYWRpbmciIiIKIAogICAgIGRlZiBnZXQoc2VsZik6CisgICAgICAgIGxv
Z2dpbmcuZGVidWcoIlVwZGF0ZSBzdGF0dXMiKQorCiAgICAgICAgIGlmIHNlbGYucmVxdWVzdC5w
YXRoID09ICIvdXBsb2Fkc3VjY2VzcyI6CiAgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLnNldF9z
dGF0dXMoMjAwKQogICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUoIk9LIikKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIGVycm9ycyA9IHNlbGYucmVxdWVzdC5wYXJhbXMuZ2V0
YWxsKCJlcnJvciIpCiAgICAgICAgICAgICBpZiBlcnJvcnM6Ci0gICAgICAgICAgICAgICAgbWVz
c2FnZXMgPSAiRkFJTDogIiArICJcbiIuam9pbihlcnJvcnMpCisgICAgICAgICAgICAgICAgbWVz
c2FnZXMgPSAiRkFJTDogIiArICI7ICIuam9pbihlcnJvcnMpCiAgICAgICAgICAgICAgICAgbG9n
Z2luZy53YXJuaW5nKG1lc3NhZ2VzKQotICAgICAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0
LndyaXRlKG1lc3NhZ2VzKQotICAgICAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uuc2V0X3N0YXR1
cyg1MDApCisgICAgICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5zZXRfc3RhdHVzKDUwMCwgbWVz
c2FnZXMpCisgICAgICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUoIkZBSUwiKQpJ
bmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tb2RlbC9kYXNoYm9hcmRmaWxlLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbW9kZWwvZGFzaGJv
YXJkZmlsZS5weQkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
bW9kZWwvZGFzaGJvYXJkZmlsZS5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTYgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQg
bG9nZ2luZworaW1wb3J0IHVybGxpYgoraW1wb3J0IHVybGxpYjIKKworZnJvbSBnb29nbGUuYXBw
ZW5naW5lLmV4dCBpbXBvcnQgZGIKKworU1ZOX1BBVEhfREFTSEJPQVJEID0gKCJodHRwOi8vc3Jj
LmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21lL3RydW5rL3Rvb2xzLyIKKyAgICAiZGFzaGJvYXJk
cy8iKQorCitjbGFzcyBEYXNoYm9hcmRGaWxlKGRiLk1vZGVsKToKKyAgICBuYW1lID0gZGIuU3Ry
aW5nUHJvcGVydHkoKQorICAgIGRhdGEgPSBkYi5CbG9iUHJvcGVydHkoKQorICAgIGRhdGUgPSBk
Yi5EYXRlVGltZVByb3BlcnR5KGF1dG9fbm93X2FkZD1UcnVlKQorCisgICAgQGNsYXNzbWV0aG9k
CisgICAgZGVmIGdldF9maWxlcyhjbHMsIG5hbWUsIGxpbWl0PTEpOgorICAgICAgICBxdWVyeSA9
IERhc2hib2FyZEZpbGUuYWxsKCkKKyAgICAgICAgaWYgbmFtZToKKyAgICAgICAgICAgIHF1ZXJ5
ID0gcXVlcnkuZmlsdGVyKCJuYW1lID0iLCBuYW1lKQorICAgICAgICByZXR1cm4gcXVlcnkub3Jk
ZXIoIi1kYXRlIikuZmV0Y2gobGltaXQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgYWRk
X2ZpbGUoY2xzLCBuYW1lLCBkYXRhKToKKyAgICAgICAgZmlsZSA9IERhc2hib2FyZEZpbGUoKQor
ICAgICAgICBmaWxlLm5hbWUgPSBuYW1lCisgICAgICAgIGZpbGUuZGF0YSA9IGRiLkJsb2IoZGF0
YSkKKyAgICAgICAgZmlsZS5wdXQoKQorCisgICAgICAgIGxvZ2dpbmcuZGVidWcoIkRhc2hib2Fy
ZCBmaWxlIHNhdmVkLCBuYW1lOiAlcy4iLCBuYW1lKQorCisgICAgICAgIHJldHVybiBmaWxlCisK
KyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ3JhYl9maWxlX2Zyb21fc3ZuKGNscywgbmFtZSk6
CisgICAgICAgIGxvZ2dpbmcuZGVidWcoIkdyYWIgZmlsZSBmcm9tIFNWTiwgbmFtZTogJXMuIiwg
bmFtZSkKKworICAgICAgICB1cmwgPSBTVk5fUEFUSF9EQVNIQk9BUkQgKyB1cmxsaWIucXVvdGVf
cGx1cyhuYW1lKQorCisgICAgICAgIGxvZ2dpbmcuaW5mbygiR3JhYiBmaWxlIGZyb20gU1ZOLCB1
cmw6ICVzLiIsIHVybCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmlsZSA9IHVybGxpYjIu
dXJsb3Blbih1cmwpCisgICAgICAgICAgICBpZiBub3QgZmlsZToKKyAgICAgICAgICAgICAgICBs
b2dnaW5nLmVycm9yKCJGYWlsZWQgdG8gZ3JhYiBkYXNoYm9hcmQgZmlsZTogJXMuIiwgdXJsKQor
ICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgIHJldHVybiBmaWxlLnJl
YWQoKQorICAgICAgICBleGNlcHQgdXJsbGliMi5IVFRQRXJyb3IsIGU6CisgICAgICAgICAgICBs
b2dnaW5nLmVycm9yKCJGYWlsZWQgdG8gZ3JhYiBkYXNoYm9hcmQgZmlsZTogJXMiLCBzdHIoZSkp
CisgICAgICAgIGV4Y2VwdCB1cmxsaWIyLlVSTEVycm9yLCBlOgorICAgICAgICAgICAgbG9nZ2lu
Zy5lcnJvcigiRmFpbGVkIHRvIGdyYWIgZGFzaGJvYXJkIGZpbGU6ICVzIiwgc3RyKGUpKQorCisg
ICAgICAgIHJldHVybiBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdXBkYXRlX2Zp
bGUoY2xzLCBuYW1lKToKKyAgICAgICAgZGF0YSA9IGNscy5ncmFiX2ZpbGVfZnJvbV9zdm4obmFt
ZSkKKyAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAg
ICAgIGxvZ2dpbmcuaW5mbygiR290IGZpbGUgZnJvbSBTVk4uIikKKworICAgICAgICBmaWxlcyA9
IGNscy5nZXRfZmlsZXMobmFtZSkKKyAgICAgICAgaWYgbm90IGZpbGVzOgorICAgICAgICAgICAg
bG9nZ2luZy5pbmZvKCJObyBleGlzdGluZyBmaWxlLCBhZGRlZCBhcyBuZXcgZmlsZS4iKQorICAg
ICAgICAgICAgcmV0dXJuIGNscy5hZGRfZmlsZShuYW1lLCBkYXRhKQorICAgICAgICAKKyAgICAg
ICAgbG9nZ2luZy5kZWJ1ZygiVXBkYXRpbmcgZXhpc3RpbmcgZmlsZS4iKQorICAgICAgICBmaWxl
ID0gZmlsZXNbMF0KKyAgICAgICAgZmlsZS5kYXRhID0gZGF0YQorICAgICAgICBmaWxlLmRhdGUg
PSBkYXRldGltZS5ub3coKQorICAgICAgICBmaWxlLnB1dCgpCisKKyAgICAgICAgbG9nZ2luZy5p
bmZvKCJEYXNoYm9hcmQgZmlsZSByZXBsYWNlZCwgbmFtZTogJXMuIiwgbmFtZSkKKworICAgICAg
ICByZXR1cm4gZmlsZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRlbGV0ZV9maWxlKGNs
cywgbmFtZSk6CisgICAgICAgIGZpbGVzID0gY2xzLmdldF9maWxlcyhuYW1lKQorICAgICAgICBp
ZiBub3QgZmlsZXM6CisgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoIkZpbGUgbm90IGZvdW5k
LCBuYW1lOiAlcy4iLCBuYW1lKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAg
Zm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICBmaWxlLmRlbGV0ZSgpCisKKyAgICAgICAg
cmV0dXJuIFRydWUKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbW9kZWwvdGVz
dGZpbGUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tb2Rl
bC90ZXN0ZmlsZS5weQkocmV2aXNpb24gNTYwNzMpCisrKyBXZWJLaXRUb29scy9UZXN0UmVzdWx0
U2VydmVyL21vZGVsL3Rlc3RmaWxlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBA
IGNsYXNzIFRlc3RGaWxlKGRiLk1vZGVsKToKIAogICAgICAgICBsb2dnaW5nLmluZm8oCiAgICAg
ICAgICAgICAiRmlsZSBzYXZlZCwgYnVpbGRlcjogJXMsIHRlc3RfdHlwZTogJXMsIG5hbWU6ICVz
LCBibG9iIGtleTogJXMuIiwKLSAgICAgICAgICAgIGJ1aWxkZXIsIGZpbGUubmFtZSwgZmlsZS5i
bG9iX2tleSkKKyAgICAgICAgICAgIGJ1aWxkZXIsIHRlc3RfdHlwZSwgZmlsZS5uYW1lLCBmaWxl
LmJsb2Jfa2V5KQogCiAgICAgICAgIHJldHVybiBmaWxlCiAKSW5kZXg6IFdlYktpdFRvb2xzL1Rl
c3RSZXN1bHRTZXJ2ZXIvc3R5bGVzaGVldHMvZGFzaGJvYXJkZmlsZS5jc3MKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdHlsZXNoZWV0cy9kYXNoYm9hcmRmaWxl
LmNzcwkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3R5bGVz
aGVldHMvZGFzaGJvYXJkZmlsZS5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKK2Jv
ZHkgeworICBmb250LWZhbWlseTogVmVyZGFuYSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOworICBw
YWRkaW5nOiAwcHg7CisgIGNvbG9yOiAjNDQ0OworfQoraDEgeworICBjb2xvcjogIzQ0NDsKKyAg
Zm9udC1zaXplOiAxNHB0OworICBmb250LXN0eWxlOiBpdGFsaWM7CisgIG1hcmdpbjogMHB4Owor
ICBwYWRkaW5nOiA1cHg7Cit9Cit0YWJsZSB7CisgIGJvcmRlci1zcGFjaW5nOiAwcHg7Cit9Cit0
aCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNBQUE7CisgIGNvbG9yOiB3aGl0ZTsKKyAgdGV4dC1h
bGlnbjogbGVmdDsKKyAgcGFkZGluZzogNXB4OworICBmb250LXNpemU6IDEycHQ7Cit9Cit0ZCB7
CisgIGZvbnQtc2l6ZTogMTFwdDsKKyAgcGFkZGluZzogM3B4OworICB0ZXh0LWFsaWduOiBsZWZ0
OworfQordHI6aG92ZXIgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVFOworfQpJbmRleDogV2Vi
S2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvZGFzaGJvYXJkZmlsZWxpc3QuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy9k
YXNoYm9hcmRmaWxlbGlzdC5odG1sCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFJl
c3VsdFNlcnZlci90ZW1wbGF0ZXMvZGFzaGJvYXJkZmlsZWxpc3QuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PkRhc2hib2FyZCBGaWxlczwvdGl0bGU+Cis8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIvc3R5bGVzaGVldHMvZGFzaGJvYXJkZmlsZS5jc3MiIC8+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxoMT5EYXNoYm9hcmQgRmlsZXMKKzwvaDE+Cis8ZGl2PgorICAgIDx0YWJsZT4K
KyAgICAgICAgPHRyPgorICAgICAgICAgICAgPHRoPkZpbGU8L3RoPgorICAgICAgICAgICAgPHRo
PkRhdGU8L3RoPgorICAgICAgICAgICAgeyUgaWYgYWRtaW4gJX0KKyAgICAgICAgICAgIDx0aD48
L3RoPgorICAgICAgICAgICAgeyUgZW5kaWYgJX0KKyAgICAgICAgeyUgZm9yIGZpbGUgaW4gZmls
ZXMgJX0KKyAgICAgICAgPHRyPnslIGlmIGZpbGUubmFtZSAlfQorICAgICAgICAgICAgPHRkPjxh
IGhyZWY9Ii9kYXNoYm9hcmRzL3t7IGZpbGUubmFtZSB9fSIgPgorICAgICAgICAgICAgICAgIHt7
IGZpbGUubmFtZSB9fQorICAgICAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDwvdGQ+Cisg
ICAgICAgICAgICA8dGQ+e3sgZmlsZS5kYXRlfGRhdGU6ImQtTS1ZIEg6aTpzIiB9fQorICAgICAg
ICAgICAgPC90ZD4KKyAgICAgICAgICAgIHslIGlmIGFkbWluICV9CisgICAgICAgICAgICA8dGQ+
PGEgaHJlZj0iL2Rhc2hib2FyZHMvZGVsZXRlP2ZpbGU9e3sgZmlsZS5uYW1lIH19IiA+CisgICAg
ICAgICAgICAgICAgRGVsZXRlCisgICAgICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPC90
ZD4KKyAgICAgICAgICAgIHslIGVuZGlmICV9CisgICAgICAgIHslIGVuZGlmICV9CisgICAgICAg
IDwvdHI+CisgICAgeyUgZW5kZm9yICV9CisgICAgPC90YWJsZT4KKzwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvc2hv
d2ZpbGVsaXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZl
ci90ZW1wbGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0bWwJKHJldmlzaW9uIDU2MDczKQorKysgV2ViS2l0
VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvc2hvd2ZpbGVsaXN0Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTE3LDI5ICsxNywzMyBAQAogICAgICAgICAgICAgPHRoPlRlc3QgVHlwZTwv
dGg+CiAgICAgICAgICAgICA8dGg+RmlsZTwvdGg+CiAgICAgICAgICAgICA8dGg+RGF0ZTwvdGg+
CisgICAgICAgICAgICB7JSBpZiBhZG1pbiAlfQogICAgICAgICAgICAgPHRoPjwvdGg+CisgICAg
ICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgICB7JSBmb3IgZmlsZSBpbiBmaWxlcyAlfQogICAg
ICAgICA8dHI+eyUgaWYgZmlsZS5idWlsZGVyIGFuZCBmaWxlLm5hbWUgJX0KLSAgICAgICAgICAg
IDx0ZD48YSBocmVmPSIvZ2V0ZmlsZT9idWlsZGVyPXt7IGZpbGUuYnVpbGRlciB9fSIgPgorICAg
ICAgICAgICAgPHRkPjxhIGhyZWY9Ii90ZXN0ZmlsZT9idWlsZGVyPXt7IGZpbGUuYnVpbGRlciB9
fSIgPgogICAgICAgICAgICAgICAgIHt7IGZpbGUuYnVpbGRlciB9fQogICAgICAgICAgICAgICAg
IDwvYT4KICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICA8dGQ+eyUgaWYgZmlsZS50ZXN0
X3R5cGUgJX0KLSAgICAgICAgICAgICAgICA8YSBocmVmPSIvZ2V0ZmlsZT90ZXN0dHlwZT17eyBm
aWxlLnRlc3RfdHlwZSB9fSIgPgorICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii90ZXN0ZmlsZT90
ZXN0dHlwZT17eyBmaWxlLnRlc3RfdHlwZSB9fSIgPgogICAgICAgICAgICAgICAgIHt7IGZpbGUu
dGVzdF90eXBlIH19CiAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgIHslIGVu
ZGlmICV9CiAgICAgICAgICAgICA8L3RkPgotICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii9nZXRm
aWxlP2J1aWxkZXI9e3sgZmlsZS5idWlsZGVyIH19Jm5hbWU9e3sgZmlsZS5uYW1lIH19IiA+Cisg
ICAgICAgICAgICA8dGQ+PGEgaHJlZj0iL3Rlc3RmaWxlP2J1aWxkZXI9e3sgZmlsZS5idWlsZGVy
IH19Jm5hbWU9e3sgZmlsZS5uYW1lIH19IiA+CiAgICAgICAgICAgICAgICAge3sgZmlsZS5uYW1l
IH19CiAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAg
IDx0ZD57eyBmaWxlLmRhdGV8ZGF0ZToiZC1NLVkgSDppOnMiIH19CiAgICAgICAgICAgICA8L3Rk
PgotICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii9kZWxldGVmaWxlP2tleT17eyBmaWxlLmtleSB9
fSZidWlsZGVyPXt7IGJ1aWxkZXIgfX0mbmFtZT17eyBuYW1lIH19IiA+CisgICAgICAgICAgICB7
JSBpZiBhZG1pbiAlfQorICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ii90ZXN0ZmlsZS9kZWxldGU/
a2V5PXt7IGZpbGUua2V5IH19JmJ1aWxkZXI9e3sgYnVpbGRlciB9fSZuYW1lPXt7IG5hbWUgfX0i
ID4KICAgICAgICAgICAgICAgICBEZWxldGUKICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAg
ICAgICA8L3RkPgorICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAgICAgICAgeyUgZW5kaWYgJX0K
ICAgICAgICAgPC90cj4KICAgICB7JSBlbmRmb3IgJX0KSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RS
ZXN1bHRTZXJ2ZXIvdGVtcGxhdGVzL3VwbG9hZGZvcm0uaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy91cGxvYWRmb3JtLmh0bWwJKHJldmlz
aW9uIDU2MDczKQorKysgV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci90ZW1wbGF0ZXMvdXBs
b2FkZm9ybS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsNyBAQAogPC9oZWFkPgogPGJv
ZHk+CiA8aDE+VXBsb2FkIFRlc3QgUmVzdWx0IEZpbGU8L2gxPgotPGZvcm0gYWNjZXB0PSJ0ZXh0
L2h0bWwiIGFjdGlvbj0ie3sgdXBsb2FkX3VybCB9fSIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0t
ZGF0YSIgbWV0aG9kPSJwb3N0Ij4KKzxmb3JtIGlkPSJ1cGxvYWRGb3JtIiBuYW1lPSJ0ZXN0X3Jl
c3VsdF91cGxvYWQiIGFjY2VwdD0idGV4dC9odG1sIiBhY3Rpb249Int7IHVwbG9hZF91cmwgfX0i
IGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG1ldGhvZD0icG9zdCI+CiAgICAgPGJyPgog
ICAgIDx0YWJsZT4KICAgICA8dHI+CkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAgIDx0ZD48aW5w
dXQgY2xhc3M9aW5wdXR0ZXh0IHR5cGU9InRleHQiIG5hbWU9InRlc3R0eXBlIiB2YWx1ZT0iIi8+
PC90ZD4KICAgICA8L3RyPgogICAgIDwvdGFibGU+Ci0gICAgPGRpdj48aW5wdXQgY2xhc3M9YnV0
dG9uIHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiPjwvZGl2PgorICAgIDxkaXY+PGlucHV0IGNsYXNz
PWJ1dHRvbiB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiBtdWx0aXBsZT48L2Rpdj4KICAgICA8YnI+
CiAgICAgPGRpdj48aW5wdXQgY2xhc3M9YnV0dG9uIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlVwbG9h
ZCI+PC9kaXY+CiA8L2Zvcm0+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51700</attachid>
            <date>2010-03-25 17:40:08 -0700</date>
            <delta_ts>2010-03-26 11:14:51 -0700</delta_ts>
            <desc>Remove CRs in index.yaml</desc>
            <filename>test.patch</filename>
            <type>text/plain</type>
            <size>25317</size>
            <attacher name="Victor Wang">victorw</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU2NTc2KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDMtMTYgIFZpY3RvciBXYW5nICA8dmlj
dG9yd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKwor
ICAgICAgICBIb3N0IGxheW91dCB0ZXN0IGZsYWtpbmVzcyBkYXNoYm9hcmQgaW4gVGVzdFJlc3Vs
dFNlcnZlciBhcHBlbmdpbmUuCisKKyAgICAgICAgRmxha2luZXNzIGRhc2hib2FyZCBpcyBhIHRv
b2wgdG8gbW9uaXRvciBsYXlvdXQgdGVzdCBzdGF0dXMgYW5kCisgICAgICAgIGhlbHAgbGF5b3V0
IHRlc3QgcmVncmVzc2lvbiBkaWFnbm9zdGljcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYxOTUKKworICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2
ZXIvaGFuZGxlcnMvZGFzaGJvYXJkaGFuZGxlci5weTogQWRkZWQuCisgICAgICAgICAtIE5ldyBo
YW5kbGVyIHRvIGhhbmRsZSBkYXNoYm9hcmQgcmVxdWVzdAorICAgICAgICAqIFRlc3RSZXN1bHRT
ZXJ2ZXIvaGFuZGxlcnMvbWVudS5weToKKyAgICAgICAgIC0gQWRkIG5ldyBkYXNoYm9hcmQgbGlu
a3MKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL2hhbmRsZXJzL3Rlc3RmaWxlaGFuZGxlci5w
eToKKyAgICAgICAgIC0gUmVxdWVzdCByb3V0ZXMgcmVmYWN0b3J5CisgICAgICAgICogVGVzdFJl
c3VsdFNlcnZlci9pbmRleC55YW1sOgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvbWFpbi5w
eToKKyAgICAgICAgIC0gQWRkIG5ldyBkYXNoYm9hcmQgcmVxdWVzdCByb3V0ZXMgYW5kIHJlZmFj
dG9yIHRlc3QgcmVzdWx0IGZpbGUgcm91bnRlcy4KKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVy
L21vZGVsL2Rhc2hib2FyZGZpbGUucHk6IEFkZGVkLgorICAgICAgICAgLSBNb2RlbCB0byBhY2Nl
c3MgZGF0YXN0b3JlIGZvciBkYXNoYm9hcmQgZmlsZXMKKyAgICAgICAgKiBUZXN0UmVzdWx0U2Vy
dmVyL21vZGVsL3Rlc3RmaWxlLnB5OgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3R5bGVz
aGVldHMvZGFzaGJvYXJkZmlsZS5jc3M6IEFkZGVkLgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2
ZXIvdGVtcGxhdGVzL2Rhc2hib2FyZGZpbGVsaXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRl
c3RSZXN1bHRTZXJ2ZXIvdGVtcGxhdGVzL3Nob3dmaWxlbGlzdC5odG1sOgorCiAyMDEwLTAzLTI1
ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBidWlsZCBmaXguCkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVy
L2FwcC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvYXBw
LnlhbWwJKHJldmlzaW9uIDU2NTc2KQorKysgV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9h
cHAueWFtbAkod29ya2luZyBjb3B5KQpAQCAtNyw1ICs3LDEzIEBAIGhhbmRsZXJzOgogLSB1cmw6
IC9zdHlsZXNoZWV0cwogICBzdGF0aWNfZGlyOiBzdHlsZXNoZWV0cwogCistIHVybDogL3Rlc3Rm
aWxlL2RlbGV0ZQorICBzY3JpcHQ6IG1haW4ucHkKKyAgbG9naW46IGFkbWluCisKKy0gdXJsOiAv
ZGFzaGJvYXJkcy9kZWxldGUKKyAgc2NyaXB0OiBtYWluLnB5CisgIGxvZ2luOiBhZG1pbgorCiAt
IHVybDogLy4qCiAgIHNjcmlwdDogbWFpbi5weQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9pbmRleC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRT
ZXJ2ZXIvaW5kZXgueWFtbAkocmV2aXNpb24gNTY1NzYpCisrKyBXZWJLaXRUb29scy9UZXN0UmVz
dWx0U2VydmVyL2luZGV4LnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNTEgKzEsNTAgQEAKLWlu
ZGV4ZXM6DQotDQotIyBBVVRPR0VORVJBVEVEDQotDQotIyBUaGlzIGluZGV4LnlhbWwgaXMgYXV0
b21hdGljYWxseSB1cGRhdGVkIHdoZW5ldmVyIHRoZSBkZXZfYXBwc2VydmVyDQotIyBkZXRlY3Rz
IHRoYXQgYSBuZXcgdHlwZSBvZiBxdWVyeSBpcyBydW4uICBJZiB5b3Ugd2FudCB0byBtYW5hZ2Ug
dGhlDQotIyBpbmRleC55YW1sIGZpbGUgbWFudWFsbHksIHJlbW92ZSB0aGUgYWJvdmUgbWFya2Vy
IGxpbmUgKHRoZSBsaW5lDQotIyBzYXlpbmcgIiMgQVVUT0dFTkVSQVRFRCIpLiAgSWYgeW91IHdh
bnQgdG8gbWFuYWdlIHNvbWUgaW5kZXhlcw0KLSMgbWFudWFsbHksIG1vdmUgdGhlbSBhYm92ZSB0
aGUgbWFya2VyIGxpbmUuICBUaGUgaW5kZXgueWFtbCBmaWxlIGlzDQotIyBhdXRvbWF0aWNhbGx5
IHVwbG9hZGVkIHRvIHRoZSBhZG1pbiBjb25zb2xlIHdoZW4geW91IG5leHQgZGVwbG95DQotIyB5
b3VyIGFwcGxpY2F0aW9uIHVzaW5nIGFwcGNmZy5weS4NCi0NCi0tIGtpbmQ6IFRlc3RGaWxlDQot
ICBwcm9wZXJ0aWVzOg0KLSAgLSBuYW1lOiBidWlsZGVyDQotICAtIG5hbWU6IGRhdGUNCi0gICAg
ZGlyZWN0aW9uOiBkZXNjDQotDQotLSBraW5kOiBUZXN0RmlsZQ0KLSAgcHJvcGVydGllczoNCi0g
IC0gbmFtZTogYnVpbGRlcg0KLSAgLSBuYW1lOiBuYW1lDQotICAtIG5hbWU6IGRhdGUNCi0gICAg
ZGlyZWN0aW9uOiBkZXNjDQotDQotLSBraW5kOiBUZXN0RmlsZQ0KLSAgcHJvcGVydGllczoNCi0g
IC0gbmFtZTogYnVpbGRlcg0KLSAgLSBuYW1lOiBuYW1lDQotICAtIG5hbWU6IHRlc3RfdHlwZQ0K
LSAgLSBuYW1lOiBkYXRlDQotICAgIGRpcmVjdGlvbjogZGVzYw0KLQ0KLS0ga2luZDogVGVzdEZp
bGUNCi0gIHByb3BlcnRpZXM6DQotICAtIG5hbWU6IGJ1aWxkZXI9DQotICAtIG5hbWU6IG5hbWU9
DQotICAtIG5hbWU6IGRhdGUNCi0gICAgZGlyZWN0aW9uOiBkZXNjDQotDQotLSBraW5kOiBUZXN0
RmlsZQ0KLSAgcHJvcGVydGllczoNCi0gIC0gbmFtZTogbmFtZQ0KLSAgLSBuYW1lOiBkYXRlDQot
ICAgIGRpcmVjdGlvbjogZGVzYw0KLQ0KLS0ga2luZDogVGVzdEZpbGUNCi0gIHByb3BlcnRpZXM6
DQotICAtIG5hbWU6IHRlc3RfdHlwZQ0KLSAgLSBuYW1lOiBkYXRlDQotICAgIGRpcmVjdGlvbjog
ZGVzYw0KK2luZGV4ZXM6CisKKyMgQVVUT0dFTkVSQVRFRAorCisjIFRoaXMgaW5kZXgueWFtbCBp
cyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgd2hlbmV2ZXIgdGhlIGRldl9hcHBzZXJ2ZXIKKyMgZGV0
ZWN0cyB0aGF0IGEgbmV3IHR5cGUgb2YgcXVlcnkgaXMgcnVuLiAgSWYgeW91IHdhbnQgdG8gbWFu
YWdlIHRoZQorIyBpbmRleC55YW1sIGZpbGUgbWFudWFsbHksIHJlbW92ZSB0aGUgYWJvdmUgbWFy
a2VyIGxpbmUgKHRoZSBsaW5lCisjIHNheWluZyAiIyBBVVRPR0VORVJBVEVEIikuICBJZiB5b3Ug
d2FudCB0byBtYW5hZ2Ugc29tZSBpbmRleGVzCisjIG1hbnVhbGx5LCBtb3ZlIHRoZW0gYWJvdmUg
dGhlIG1hcmtlciBsaW5lLiAgVGhlIGluZGV4LnlhbWwgZmlsZSBpcworIyBhdXRvbWF0aWNhbGx5
IHVwbG9hZGVkIHRvIHRoZSBhZG1pbiBjb25zb2xlIHdoZW4geW91IG5leHQgZGVwbG95CisjIHlv
dXIgYXBwbGljYXRpb24gdXNpbmcgYXBwY2ZnLnB5LgorCistIGtpbmQ6IERhc2hib2FyZEZpbGUK
KyAgcHJvcGVydGllczoKKyAgLSBuYW1lOiBuYW1lCisgIC0gbmFtZTogZGF0ZQorICAgIGRpcmVj
dGlvbjogZGVzYworCistIGtpbmQ6IFRlc3RGaWxlCisgIHByb3BlcnRpZXM6CisgIC0gbmFtZTog
YnVpbGRlcgorICAtIG5hbWU6IGRhdGUKKyAgICBkaXJlY3Rpb246IGRlc2MKKworLSBraW5kOiBU
ZXN0RmlsZQorICBwcm9wZXJ0aWVzOgorICAtIG5hbWU6IGJ1aWxkZXIKKyAgLSBuYW1lOiBuYW1l
CisgIC0gbmFtZTogZGF0ZQorICAgIGRpcmVjdGlvbjogZGVzYworCistIGtpbmQ6IFRlc3RGaWxl
CisgIHByb3BlcnRpZXM6CisgIC0gbmFtZTogYnVpbGRlcgorICAtIG5hbWU6IG5hbWUKKyAgLSBu
YW1lOiB0ZXN0X3R5cGUKKyAgLSBuYW1lOiBkYXRlCisgICAgZGlyZWN0aW9uOiBkZXNjCisKKy0g
a2luZDogVGVzdEZpbGUKKyAgcHJvcGVydGllczoKKyAgLSBuYW1lOiBuYW1lCisgIC0gbmFtZTog
ZGF0ZQorICAgIGRpcmVjdGlvbjogZGVzYworCistIGtpbmQ6IFRlc3RGaWxlCisgIHByb3BlcnRp
ZXM6CisgIC0gbmFtZTogdGVzdF90eXBlCisgIC0gbmFtZTogZGF0ZQorICAgIGRpcmVjdGlvbjog
ZGVzYwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tYWluLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbWFpbi5weQkocmV2aXNpb24gNTY1
NzYpCisrKyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL21haW4ucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDIzICszMywyMiBAQCB1c2VfbGlicmFyeSgnZGphbmdvJywgJzEuMScpCiBmcm9t
IGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJhcHAKIGZyb20gZ29vZ2xlLmFwcGVuZ2lu
ZS5leHQud2ViYXBwLnV0aWwgaW1wb3J0IHJ1bl93c2dpX2FwcAogCi1mcm9tIGhhbmRsZXJzLm1l
bnUgaW1wb3J0IE1lbnUKLWZyb20gaGFuZGxlcnMudGVzdGZpbGVoYW5kbGVyIGltcG9ydCBEZWxl
dGVGaWxlCi1mcm9tIGhhbmRsZXJzLnRlc3RmaWxlaGFuZGxlciBpbXBvcnQgR2V0RmlsZQotZnJv
bSBoYW5kbGVycy50ZXN0ZmlsZWhhbmRsZXIgaW1wb3J0IEdldFVwbG9hZFVybAotZnJvbSBoYW5k
bGVycy50ZXN0ZmlsZWhhbmRsZXIgaW1wb3J0IFVwbG9hZAotZnJvbSBoYW5kbGVycy50ZXN0Zmls
ZWhhbmRsZXIgaW1wb3J0IFVwbG9hZEZvcm0KLWZyb20gaGFuZGxlcnMudGVzdGZpbGVoYW5kbGVy
IGltcG9ydCBVcGxvYWRTdGF0dXMKK2Zyb20gaGFuZGxlcnMgaW1wb3J0IGRhc2hib2FyZGhhbmRs
ZXIKK2Zyb20gaGFuZGxlcnMgaW1wb3J0IG1lbnUKK2Zyb20gaGFuZGxlcnMgaW1wb3J0IHRlc3Rm
aWxlaGFuZGxlcgogCiByb3V0ZXMgPSBbCi0gICAgKCcvZGVsZXRlZmlsZScsIERlbGV0ZUZpbGUp
LAotICAgICgnL2dldGZpbGUnLCBHZXRGaWxlKSwKLSAgICAoJy9nZXR1cGxvYWR1cmwnLCBHZXRV
cGxvYWRVcmwpLAotICAgICgnL3VwbG9hZCcsIFVwbG9hZCksCi0gICAgKCcvdXBsb2FkZmFpbCcs
IFVwbG9hZFN0YXR1cyksCi0gICAgKCcvdXBsb2FkZm9ybScsIFVwbG9hZEZvcm0pLAotICAgICgn
L3VwbG9hZHN1Y2Nlc3MnLCBVcGxvYWRTdGF0dXMpLAotICAgICgnLyp8L21lbnUnLCBNZW51KSwK
KyAgICAoJy9kYXNoYm9hcmRzL2RlbGV0ZScsIGRhc2hib2FyZGhhbmRsZXIuRGVsZXRlRGFzaGJv
YXJkRmlsZSksCisgICAgKCcvZGFzaGJvYXJkcy91cGRhdGUnLCBkYXNoYm9hcmRoYW5kbGVyLlVw
ZGF0ZURhc2hib2FyZEZpbGUpLAorICAgICgnL2Rhc2hib2FyZHMvKFteP10rKT8nLCBkYXNoYm9h
cmRoYW5kbGVyLkdldERhc2hib2FyZEZpbGUpLAorICAgICgnL3Rlc3RmaWxlL2RlbGV0ZScsIHRl
c3RmaWxlaGFuZGxlci5EZWxldGVGaWxlKSwKKyAgICAoJy90ZXN0ZmlsZS91cGxvYWR1cmwnLCB0
ZXN0ZmlsZWhhbmRsZXIuR2V0VXBsb2FkVXJsKSwKKyAgICAoJy90ZXN0ZmlsZS91cGxvYWQnLCB0
ZXN0ZmlsZWhhbmRsZXIuVXBsb2FkKSwKKyAgICAoJy90ZXN0ZmlsZS91cGxvYWRmb3JtJywgdGVz
dGZpbGVoYW5kbGVyLlVwbG9hZEZvcm0pLAorICAgICgnL3Rlc3RmaWxlLz8nLCB0ZXN0ZmlsZWhh
bmRsZXIuR2V0RmlsZSksCisgICAgKCcvdXBsb2FkZmFpbCcsIHRlc3RmaWxlaGFuZGxlci5VcGxv
YWRTdGF0dXMpLAorICAgICgnL3VwbG9hZHN1Y2Nlc3MnLCB0ZXN0ZmlsZWhhbmRsZXIuVXBsb2Fk
U3RhdHVzKSwKKyAgICAoJy8qfC9tZW51JywgbWVudS5NZW51KSwKIF0KIAogYXBwbGljYXRpb24g
PSB3ZWJhcHAuV1NHSUFwcGxpY2F0aW9uKHJvdXRlcywgZGVidWc9VHJ1ZSkKSW5kZXg6IFdlYktp
dFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvaGFuZGxlcnMvZGFzaGJvYXJkaGFuZGxlci5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL2hhbmRsZXJzL2Rhc2hib2Fy
ZGhhbmRsZXIucHkJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVy
L2hhbmRsZXJzL2Rhc2hib2FyZGhhbmRsZXIucHkJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIw
IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG1pbWV0eXBl
cworaW1wb3J0IHVybGxpYjIKKworZnJvbSBnb29nbGUuYXBwZW5naW5lLmFwaSBpbXBvcnQgdXNl
cnMKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAorZnJvbSBnb29nbGUu
YXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCisKK2Zyb20gbW9kZWwuZGFzaGJv
YXJkZmlsZSBpbXBvcnQgRGFzaGJvYXJkRmlsZQorCitQQVJBTV9GSUxFID0gImZpbGUiCisKK2Rl
ZiBnZXRfY29udGVudF90eXBlKGZpbGVuYW1lKToKKyAgICByZXR1cm4gbWltZXR5cGVzLmd1ZXNz
X3R5cGUoZmlsZW5hbWUpWzBdIG9yICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iCisKKworY2xh
c3MgR2V0RGFzaGJvYXJkRmlsZSh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgorICAgIGRlZiBnZXQo
c2VsZiwgcmVzb3VyY2UpOgorICAgICAgICBpZiBub3QgcmVzb3VyY2U6CisgICAgICAgICAgICBs
b2dnaW5nLmRlYnVnKCJHZXR0aW5nIGRhc2hib2FyZCBmaWxlIGxpc3QuIikKKyAgICAgICAgICAg
IHJldHVybiBzZWxmLl9nZXRfZmlsZV9saXN0KCkKKworICAgICAgICBmaWxlbmFtZSA9IHN0cih1
cmxsaWIyLnVucXVvdGUocmVzb3VyY2UpKQorCisgICAgICAgIGxvZ2dpbmcuZGVidWcoIkdldHRp
bmcgZGFzaGJvYXJkIGZpbGU6ICVzIiwgZmlsZW5hbWUpCisKKyAgICAgICAgZmlsZXMgPSBEYXNo
Ym9hcmRGaWxlLmdldF9maWxlcyhmaWxlbmFtZSkKKyAgICAgICAgaWYgbm90IGZpbGVzOgorICAg
ICAgICAgICAgbG9nZ2luZy5lcnJvcigiRmFpbGVkIHRvIGZpbmQgZGFzaGJvYXJkIGZpbGU6ICVz
LCByZXF1ZXN0OiAlcyIsCisgICAgICAgICAgICAgICAgZmlsZW5hbWUsIHNlbGYucmVxdWVzdCkK
KyAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uuc2V0X3N0YXR1cyg0MDQpCisgICAgICAgICAgICBy
ZXR1cm4KKworICAgICAgICBjb250ZW50X3R5cGUgPSAiJXM7IGNoYXJzZXQ9dXRmLTgiICUgZ2V0
X2NvbnRlbnRfdHlwZShmaWxlbmFtZSkKKyAgICAgICAgbG9nZ2luZy5pbmZvKCJjb250ZW50IHR5
cGU6ICVzIiwgY29udGVudF90eXBlKQorICAgICAgICBzZWxmLnJlc3BvbnNlLmhlYWRlcnNbIkNv
bnRlbnQtVHlwZSJdID0gY29udGVudF90eXBlCisgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0Lndy
aXRlKGZpbGVzWzBdLmRhdGEpCisKKyAgICBkZWYgX2dldF9maWxlX2xpc3Qoc2VsZik6CisgICAg
ICAgIGxvZ2dpbmcuaW5mbygiZ2V0dGluZyBkYXNoYm9hcmQgZmlsZSBsaXN0LiIpCisKKyAgICAg
ICAgZmlsZXMgPSBEYXNoYm9hcmRGaWxlLmdldF9maWxlcygiIiwgMTAwKQorICAgICAgICBpZiBu
b3QgZmlsZXM6CisgICAgICAgICAgICBsb2dnaW5nLmluZm8oIkZhaWxlZCB0byBmaW5kIGRhc2hi
b2FyZCBmaWxlcy4iKQorICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5zZXRfc3RhdHVzKDQwNCkK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRlbXBsYXRlX3ZhbHVlcyA9IHsKKyAgICAg
ICAgICAgICJhZG1pbiI6IHVzZXJzLmlzX2N1cnJlbnRfdXNlcl9hZG1pbigpLAorICAgICAgICAg
ICAgImZpbGVzIjogZmlsZXMsCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQu
d3JpdGUoCisgICAgICAgICAgICB0ZW1wbGF0ZS5yZW5kZXIoInRlbXBsYXRlcy9kYXNoYm9hcmRm
aWxlbGlzdC5odG1sIiwKKyAgICAgICAgICAgICAgICB0ZW1wbGF0ZV92YWx1ZXMpKQorCisKK2Ns
YXNzIFVwZGF0ZURhc2hib2FyZEZpbGUod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYg
Z2V0KHNlbGYpOgorICAgICAgICBmaWxlcyA9IHNlbGYucmVxdWVzdC5nZXRfYWxsKFBBUkFNX0ZJ
TEUpCisgICAgICAgIGlmIG5vdCBmaWxlczoKKyAgICAgICAgICAgIGZpbGVzID0gWyJmbGFraW5l
c3NfZGFzaGJvYXJkLmh0bWwiLAorICAgICAgICAgICAgICAgICAgICAgImRhc2hib2FyZF9iYXNl
LmpzIiwKKyAgICAgICAgICAgICAgICAgICAgICJhZ2dyZWdhdGVfcmVzdWx0cy5odG1sIl0KKwor
ICAgICAgICBlcnJvcnMgPSBbXQorICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgICAg
ICAgIGlmIG5vdCBEYXNoYm9hcmRGaWxlLnVwZGF0ZV9maWxlKGZpbGUpOgorICAgICAgICAgICAg
ICAgIGVycm9ycy5hcHBlbmQoIkZhaWxlZCB0byB1cGRhdGUgZmlsZTogJXMiICUgZmlsZSkKKwor
ICAgICAgICBpZiBlcnJvcnM6CisgICAgICAgICAgICBtZXNzYWdlcyA9ICI7ICIuam9pbihlcnJv
cnMpCisgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcobWVzc2FnZXMpCisgICAgICAgICAgICBz
ZWxmLnJlc3BvbnNlLnNldF9zdGF0dXMoNTAwLCBtZXNzYWdlcykKKyAgICAgICAgICAgIHNlbGYu
cmVzcG9uc2Uub3V0LndyaXRlKCJGQUlMIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNl
bGYucmVzcG9uc2Uuc2V0X3N0YXR1cygyMDApCisgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLm91
dC53cml0ZSgiT0siKQorCisKK2NsYXNzIERlbGV0ZURhc2hib2FyZEZpbGUod2ViYXBwLlJlcXVl
c3RIYW5kbGVyKToKKyAgICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICBmaWxlcyA9IHNlbGYucmVx
dWVzdC5nZXRfYWxsKFBBUkFNX0ZJTEUpCisgICAgICAgIGlmIG5vdCBmaWxlczoKKyAgICAgICAg
ICAgIGxvZ2dpbmcud2FybmluZygiTm8gZGFzaGJvYXJkIGZpbGUgdG8gZGVsZXRlLiIpCisgICAg
ICAgICAgICBzZWxmLnJlc3BvbnNlLnNldF9zdGF0dXMoNDAwKQorICAgICAgICAgICAgcmV0dXJu
CisKKyAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICBEYXNoYm9hcmRGaWxl
LmRlbGV0ZV9maWxlKGZpbGUpCisKKyAgICAgICAgIyBEaXNwbGF5IGRhc2hib2FyZCBmaWxlIGxp
c3QgYWZ0ZXIgZGVsZXRpbmcgdGhlIGZpbGUuCisgICAgICAgIHNlbGYucmVkaXJlY3QoIi9kYXNo
Ym9hcmRzLyIpCkluZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL2hhbmRsZXJzL21l
bnUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVy
cy9tZW51LnB5CShyZXZpc2lvbiA1NjU3NikKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvaGFuZGxlcnMvbWVudS5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDEyIEBAIGZy
b20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAogZnJvbSBnb29nbGUuYXBwZW5n
aW5lLmV4dC53ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCiAKIG1lbnUgPSBbCi0gICAgWyJMaXN0IG9m
IGZpbGVzIiwgIi9nZXRmaWxlIl0sCi0gICAgWyJMaXN0IG9mIHJlc3VsdHMuanNvbiBmaWxlcyIs
ICIvZ2V0ZmlsZT9uYW1lPXJlc3VsdHMuanNvbiJdLAotICAgIFsiTGlzdCBvZiBleHBlY3RhdGlv
bnMuanNvbiBmaWxlcyIsICIvZ2V0ZmlsZT9uYW1lPWV4cGVjdGF0aW9ucy5qc29uIl0sCi0gICAg
WyJVcGxvYWQgZmlsZSIsICIvdXBsb2FkZm9ybSJdLAorICAgIFsiTGlzdCBvZiB0ZXN0IGZpbGVz
IiwgIi90ZXN0ZmlsZSJdLAorICAgIFsiTGlzdCBvZiByZXN1bHRzLmpzb24gZmlsZXMiLCAiL3Rl
c3RmaWxlP25hbWU9cmVzdWx0cy5qc29uIl0sCisgICAgWyJMaXN0IG9mIGV4cGVjdGF0aW9ucy5q
c29uIGZpbGVzIiwgIi90ZXN0ZmlsZT9uYW1lPWV4cGVjdGF0aW9ucy5qc29uIl0sCisgICAgWyJV
cGxvYWQgdGVzdCBmaWxlIiwgIi90ZXN0ZmlsZS91cGxvYWRmb3JtIl0sCisgICAgWyJMaXN0IG9m
IGRhc2hib2FyZCBmaWxlcyIsICIvZGFzaGJvYXJkcy8iXSwKKyAgICBbIlVwZGF0ZSBkYXNoYm9h
cmQgZmlsZXMiLCAiL2Rhc2hib2FyZHMvdXBkYXRlIl0sCiBdCiAKIApJbmRleDogV2ViS2l0VG9v
bHMvVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVycy90ZXN0ZmlsZWhhbmRsZXIucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9oYW5kbGVycy90ZXN0ZmlsZWhhbmRs
ZXIucHkJKHJldmlzaW9uIDU2NTc2KQorKysgV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9o
YW5kbGVycy90ZXN0ZmlsZWhhbmRsZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdXJsbGliCiAKK2Zyb20gZ29vZ2xlLmFwcGVuZ2lu
ZS5hcGkgaW1wb3J0IHVzZXJzCiBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCBibG9i
c3RvcmUKIGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAogZnJvbSBnb29n
bGUuYXBwZW5naW5lLmV4dC53ZWJhcHAgaW1wb3J0IGJsb2JzdG9yZV9oYW5kbGVycwpAQCAtNjAs
MTQgKzYxLDE0IEBAIGNsYXNzIERlbGV0ZUZpbGUod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKICAg
ICAgICAgVGVzdEZpbGUuZGVsZXRlX2ZpbGUoa2V5LCBidWlsZGVyLCB0ZXN0X3R5cGUsIG5hbWUs
IDEwMCkKIAogICAgICAgICAjIERpc3BsYXkgZmlsZSBsaXN0IGFmdGVyIGRlbGV0aW5nIHRoZSBm
aWxlLgotICAgICAgICBzZWxmLnJlZGlyZWN0KCIvZ2V0ZmlsZT9idWlsZGVyPSVzJnRlc3R0eXBl
PSVzJm5hbWU9JXMiCisgICAgICAgIHNlbGYucmVkaXJlY3QoIi90ZXN0ZmlsZT9idWlsZGVyPSVz
JnRlc3R0eXBlPSVzJm5hbWU9JXMiCiAgICAgICAgICAgICAlIChidWlsZGVyLCB0ZXN0X3R5cGUs
IG5hbWUpKQogCiAKIGNsYXNzIEdldEZpbGUoYmxvYnN0b3JlX2hhbmRsZXJzLkJsb2JzdG9yZURv
d25sb2FkSGFuZGxlcik6CiAgICAgIiIiR2V0IGZpbGUgY29udGVudCBvciBsaXN0IG9mIGZpbGVz
IGZvciBnaXZlbiBidWlsZGVyIGFuZCBuYW1lLiIiIgogCi0gICAgZGVmIGdldF9maWxlX2xpc3Qo
c2VsZiwgYnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKToKKyAgICBkZWYgX2dldF9maWxlX2xpc3Qo
c2VsZiwgYnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKToKICAgICAgICAgIiIiR2V0IGFuZCBkaXNw
bGF5IGEgbGlzdCBvZiBmaWxlcyB0aGF0IG1hdGNoZXMgYnVpbGRlciBhbmQgZmlsZSBuYW1lLgog
CiAgICAgICAgIEFyZ3M6CkBAIC04NCw2ICs4NSw3IEBAIGNsYXNzIEdldEZpbGUoYmxvYnN0b3Jl
X2hhbmRsZXJzLkJsb2JzdG8KICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIHRlbXBsYXRl
X3ZhbHVlcyA9IHsKKyAgICAgICAgICAgICJhZG1pbiI6IHVzZXJzLmlzX2N1cnJlbnRfdXNlcl9h
ZG1pbigpLAogICAgICAgICAgICAgImJ1aWxkZXIiOiBidWlsZGVyLAogICAgICAgICAgICAgInRl
c3RfdHlwZSI6IHRlc3RfdHlwZSwKICAgICAgICAgICAgICJuYW1lIjogbmFtZSwKQEAgLTkyLDcg
Kzk0LDcgQEAgY2xhc3MgR2V0RmlsZShibG9ic3RvcmVfaGFuZGxlcnMuQmxvYnN0bwogICAgICAg
ICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSh0ZW1wbGF0ZS5yZW5kZXIoInRlbXBsYXRlcy9zaG93
ZmlsZWxpc3QuaHRtbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZW1wbGF0ZV92YWx1ZXMpKQogCi0gICAgZGVmIGdldF9maWxlX2NvbnRlbnQoc2Vs
ZiwgYnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKToKKyAgICBkZWYgX2dldF9maWxlX2NvbnRlbnQo
c2VsZiwgYnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIGNvbnRl
bnQgb2YgdGhlIGZpbGUgdGhhdCBtYXRjaGVzIGJ1aWxkZXIgYW5kIGZpbGUgbmFtZS4KIAogICAg
ICAgICBBcmdzOgpAQCAtMTI2LDE2ICsxMjgsMTYgQEAgY2xhc3MgR2V0RmlsZShibG9ic3RvcmVf
aGFuZGxlcnMuQmxvYnN0bwogICAgICAgICAjIHNwZWNpZmllZCBpbiB0aGUgcmVxdWVzdCwgcmV0
dXJuIGxpc3Qgb2YgZmlsZXMsIG90aGVyd2lzZSwgcmV0dXJuCiAgICAgICAgICMgZmlsZSBjb250
ZW50LgogICAgICAgICBpZiBkaXIgb3Igbm90IGJ1aWxkZXIgb3Igbm90IG5hbWU6Ci0gICAgICAg
ICAgICByZXR1cm4gc2VsZi5nZXRfZmlsZV9saXN0KGJ1aWxkZXIsIHRlc3RfdHlwZSwgbmFtZSkK
KyAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfZmlsZV9saXN0KGJ1aWxkZXIsIHRlc3RfdHlw
ZSwgbmFtZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9maWxl
X2NvbnRlbnQoYnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKQorICAgICAgICAgICAgcmV0dXJuIHNl
bGYuX2dldF9maWxlX2NvbnRlbnQoYnVpbGRlciwgdGVzdF90eXBlLCBuYW1lKQogCiAKIGNsYXNz
IEdldFVwbG9hZFVybCh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgogICAgICIiIkdldCBhbiB1cmwg
Zm9yIHVwbG9hZGluZyBmaWxlIHRvIGJsb2JzdG9yZS4gQSBzcGVjaWFsIHVybCBpcyByZXF1aXJl
ZCBmb3IgZWFjaCBibG9ic290cmUgdXBsb2FkLiIiIgogCiAgICAgZGVmIGdldChzZWxmKToKLSAg
ICAgICAgdXBsb2FkX3VybCA9IGJsb2JzdG9yZS5jcmVhdGVfdXBsb2FkX3VybCgiL3VwbG9hZCIp
CisgICAgICAgIHVwbG9hZF91cmwgPSBibG9ic3RvcmUuY3JlYXRlX3VwbG9hZF91cmwoIi90ZXN0
ZmlsZS91cGxvYWQiKQogICAgICAgICBsb2dnaW5nLmluZm8oIkdldHRpbmcgdXBsb2FkIHVybDog
JXMuIiwgdXBsb2FkX3VybCkKICAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUodXBsb2Fk
X3VybCkKIApAQCAtMTk0LDcgKzE5Niw3IEBAIGNsYXNzIFVwbG9hZEZvcm0od2ViYXBwLlJlcXVl
c3RIYW5kbGVyKToKICAgICAiIiJTaG93IGEgZm9ybSBzbyB1c2VyIGNhbiBzdWJtaXQgYSBmaWxl
IHRvIGJsb2JzdG9yZS4iIiIKIAogICAgIGRlZiBnZXQoc2VsZik6Ci0gICAgICAgIHVwbG9hZF91
cmwgPSBibG9ic3RvcmUuY3JlYXRlX3VwbG9hZF91cmwoIi91cGxvYWQiKQorICAgICAgICB1cGxv
YWRfdXJsID0gYmxvYnN0b3JlLmNyZWF0ZV91cGxvYWRfdXJsKCIvdGVzdGZpbGUvdXBsb2FkIikK
ICAgICAgICAgdGVtcGxhdGVfdmFsdWVzID0gewogICAgICAgICAgICAgInVwbG9hZF91cmwiOiB1
cGxvYWRfdXJsLAogICAgICAgICB9CkBAIC0yMDUsMTMgKzIwNywxNSBAQCBjbGFzcyBVcGxvYWRT
dGF0dXMod2ViYXBwLlJlcXVlc3RIYW5kbGVyCiAgICAgIiIiUmV0dXJuIHN0YXR1cyBvZiBmaWxl
IHVwbG9hZGluZyIiIgogCiAgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgbG9nZ2luZy5kZWJ1
ZygiVXBkYXRlIHN0YXR1cyIpCisKICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0LnBhdGggPT0gIi91
cGxvYWRzdWNjZXNzIjoKICAgICAgICAgICAgIHNlbGYucmVzcG9uc2Uuc2V0X3N0YXR1cygyMDAp
CiAgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgiT0siKQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgZXJyb3JzID0gc2VsZi5yZXF1ZXN0LnBhcmFtcy5nZXRhbGwoImVycm9y
IikKICAgICAgICAgICAgIGlmIGVycm9yczoKLSAgICAgICAgICAgICAgICBtZXNzYWdlcyA9ICJG
QUlMOiAiICsgIlxuIi5qb2luKGVycm9ycykKKyAgICAgICAgICAgICAgICBtZXNzYWdlcyA9ICJG
QUlMOiAiICsgIjsgIi5qb2luKGVycm9ycykKICAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5p
bmcobWVzc2FnZXMpCi0gICAgICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUobWVz
c2FnZXMpCi0gICAgICAgICAgICAgICAgc2VsZi5yZXNwb25zZS5zZXRfc3RhdHVzKDUwMCkKKyAg
ICAgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLnNldF9zdGF0dXMoNTAwLCBtZXNzYWdlcykKKyAg
ICAgICAgICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgiRkFJTCIpCkluZGV4OiBXZWJL
aXRUb29scy9UZXN0UmVzdWx0U2VydmVyL21vZGVsL2Rhc2hib2FyZGZpbGUucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tb2RlbC9kYXNoYm9hcmRmaWxlLnB5
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tb2RlbC9kYXNo
Ym9hcmRmaWxlLnB5CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNiBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBsb2dnaW5nCitp
bXBvcnQgdXJsbGliCitpbXBvcnQgdXJsbGliMgorCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0
IGltcG9ydCBkYgorCitTVk5fUEFUSF9EQVNIQk9BUkQgPSAoImh0dHA6Ly9zcmMuY2hyb21pdW0u
b3JnL3ZpZXd2Yy9jaHJvbWUvdHJ1bmsvdG9vbHMvIgorICAgICJkYXNoYm9hcmRzLyIpCisKK2Ns
YXNzIERhc2hib2FyZEZpbGUoZGIuTW9kZWwpOgorICAgIG5hbWUgPSBkYi5TdHJpbmdQcm9wZXJ0
eSgpCisgICAgZGF0YSA9IGRiLkJsb2JQcm9wZXJ0eSgpCisgICAgZGF0ZSA9IGRiLkRhdGVUaW1l
UHJvcGVydHkoYXV0b19ub3dfYWRkPVRydWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYg
Z2V0X2ZpbGVzKGNscywgbmFtZSwgbGltaXQ9MSk6CisgICAgICAgIHF1ZXJ5ID0gRGFzaGJvYXJk
RmlsZS5hbGwoKQorICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgcXVlcnkgPSBxdWVyeS5m
aWx0ZXIoIm5hbWUgPSIsIG5hbWUpCisgICAgICAgIHJldHVybiBxdWVyeS5vcmRlcigiLWRhdGUi
KS5mZXRjaChsaW1pdCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBhZGRfZmlsZShjbHMs
IG5hbWUsIGRhdGEpOgorICAgICAgICBmaWxlID0gRGFzaGJvYXJkRmlsZSgpCisgICAgICAgIGZp
bGUubmFtZSA9IG5hbWUKKyAgICAgICAgZmlsZS5kYXRhID0gZGIuQmxvYihkYXRhKQorICAgICAg
ICBmaWxlLnB1dCgpCisKKyAgICAgICAgbG9nZ2luZy5kZWJ1ZygiRGFzaGJvYXJkIGZpbGUgc2F2
ZWQsIG5hbWU6ICVzLiIsIG5hbWUpCisKKyAgICAgICAgcmV0dXJuIGZpbGUKKworICAgIEBjbGFz
c21ldGhvZAorICAgIGRlZiBncmFiX2ZpbGVfZnJvbV9zdm4oY2xzLCBuYW1lKToKKyAgICAgICAg
bG9nZ2luZy5kZWJ1ZygiR3JhYiBmaWxlIGZyb20gU1ZOLCBuYW1lOiAlcy4iLCBuYW1lKQorCisg
ICAgICAgIHVybCA9IFNWTl9QQVRIX0RBU0hCT0FSRCArIHVybGxpYi5xdW90ZV9wbHVzKG5hbWUp
CisKKyAgICAgICAgbG9nZ2luZy5pbmZvKCJHcmFiIGZpbGUgZnJvbSBTVk4sIHVybDogJXMuIiwg
dXJsKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaWxlID0gdXJsbGliMi51cmxvcGVuKHVy
bCkKKyAgICAgICAgICAgIGlmIG5vdCBmaWxlOgorICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXJy
b3IoIkZhaWxlZCB0byBncmFiIGRhc2hib2FyZCBmaWxlOiAlcy4iLCB1cmwpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgcmV0dXJuIGZpbGUucmVhZCgpCisgICAg
ICAgIGV4Y2VwdCB1cmxsaWIyLkhUVFBFcnJvciwgZToKKyAgICAgICAgICAgIGxvZ2dpbmcuZXJy
b3IoIkZhaWxlZCB0byBncmFiIGRhc2hib2FyZCBmaWxlOiAlcyIsIHN0cihlKSkKKyAgICAgICAg
ZXhjZXB0IHVybGxpYjIuVVJMRXJyb3IsIGU6CisgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCJG
YWlsZWQgdG8gZ3JhYiBkYXNoYm9hcmQgZmlsZTogJXMiLCBzdHIoZSkpCisKKyAgICAgICAgcmV0
dXJuIE5vbmUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB1cGRhdGVfZmlsZShjbHMsIG5h
bWUpOgorICAgICAgICBkYXRhID0gY2xzLmdyYWJfZmlsZV9mcm9tX3N2bihuYW1lKQorICAgICAg
ICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgbG9nZ2lu
Zy5pbmZvKCJHb3QgZmlsZSBmcm9tIFNWTi4iKQorCisgICAgICAgIGZpbGVzID0gY2xzLmdldF9m
aWxlcyhuYW1lKQorICAgICAgICBpZiBub3QgZmlsZXM6CisgICAgICAgICAgICBsb2dnaW5nLmlu
Zm8oIk5vIGV4aXN0aW5nIGZpbGUsIGFkZGVkIGFzIG5ldyBmaWxlLiIpCisgICAgICAgICAgICBy
ZXR1cm4gY2xzLmFkZF9maWxlKG5hbWUsIGRhdGEpCisgICAgICAgIAorICAgICAgICBsb2dnaW5n
LmRlYnVnKCJVcGRhdGluZyBleGlzdGluZyBmaWxlLiIpCisgICAgICAgIGZpbGUgPSBmaWxlc1sw
XQorICAgICAgICBmaWxlLmRhdGEgPSBkYXRhCisgICAgICAgIGZpbGUuZGF0ZSA9IGRhdGV0aW1l
Lm5vdygpCisgICAgICAgIGZpbGUucHV0KCkKKworICAgICAgICBsb2dnaW5nLmluZm8oIkRhc2hi
b2FyZCBmaWxlIHJlcGxhY2VkLCBuYW1lOiAlcy4iLCBuYW1lKQorCisgICAgICAgIHJldHVybiBm
aWxlCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGVsZXRlX2ZpbGUoY2xzLCBuYW1lKToK
KyAgICAgICAgZmlsZXMgPSBjbHMuZ2V0X2ZpbGVzKG5hbWUpCisgICAgICAgIGlmIG5vdCBmaWxl
czoKKyAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygiRmlsZSBub3QgZm91bmQsIG5hbWU6ICVz
LiIsIG5hbWUpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBmb3IgZmlsZSBp
biBmaWxlczoKKyAgICAgICAgICAgIGZpbGUuZGVsZXRlKCkKKworICAgICAgICByZXR1cm4gVHJ1
ZQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9tb2RlbC90ZXN0ZmlsZS5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL21vZGVsL3Rlc3RmaWxl
LnB5CShyZXZpc2lvbiA1NjU3NikKKysrIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvbW9k
ZWwvdGVzdGZpbGUucHkJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgY2xhc3MgVGVz
dEZpbGUoZGIuTW9kZWwpOgogCiAgICAgICAgIGxvZ2dpbmcuaW5mbygKICAgICAgICAgICAgICJG
aWxlIHNhdmVkLCBidWlsZGVyOiAlcywgdGVzdF90eXBlOiAlcywgbmFtZTogJXMsIGJsb2Iga2V5
OiAlcy4iLAotICAgICAgICAgICAgYnVpbGRlciwgZmlsZS5uYW1lLCBmaWxlLmJsb2Jfa2V5KQor
ICAgICAgICAgICAgYnVpbGRlciwgdGVzdF90eXBlLCBmaWxlLm5hbWUsIGZpbGUuYmxvYl9rZXkp
CiAKICAgICAgICAgcmV0dXJuIGZpbGUKIApJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9zdHlsZXNoZWV0cy9kYXNoYm9hcmRmaWxlLmNzcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0eWxlc2hlZXRzL2Rhc2hib2FyZGZpbGUuY3NzCShyZXZp
c2lvbiAwKQorKysgV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdHlsZXNoZWV0cy9kYXNo
Ym9hcmRmaWxlLmNzcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorYm9keSB7CisgIGZv
bnQtZmFtaWx5OiBWZXJkYW5hLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CisgIHBhZGRpbmc6IDBw
eDsKKyAgY29sb3I6ICM0NDQ7Cit9CitoMSB7CisgIGNvbG9yOiAjNDQ0OworICBmb250LXNpemU6
IDE0cHQ7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKKyAgbWFyZ2luOiAwcHg7CisgIHBhZGRpbmc6
IDVweDsKK30KK3RhYmxlIHsKKyAgYm9yZGVyLXNwYWNpbmc6IDBweDsKK30KK3RoIHsKKyAgYmFj
a2dyb3VuZC1jb2xvcjogI0FBQTsKKyAgY29sb3I6IHdoaXRlOworICB0ZXh0LWFsaWduOiBsZWZ0
OworICBwYWRkaW5nOiA1cHg7CisgIGZvbnQtc2l6ZTogMTJwdDsKK30KK3RkIHsKKyAgZm9udC1z
aXplOiAxMXB0OworICBwYWRkaW5nOiAzcHg7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9Cit0cjpo
b3ZlciB7CisgIGJhY2tncm91bmQtY29sb3I6ICNFRUU7Cit9CkluZGV4OiBXZWJLaXRUb29scy9U
ZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy9kYXNoYm9hcmRmaWxlbGlzdC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvdGVtcGxhdGVzL2Rhc2hib2FyZGZp
bGVsaXN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVy
L3RlbXBsYXRlcy9kYXNoYm9hcmRmaWxlbGlzdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDM4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+RGFzaGJvYXJk
IEZpbGVzPC90aXRsZT4KKzxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii9zdHlsZXNoZWV0cy9kYXNoYm9hcmRmaWxlLmNzcyIgLz4KKzwvaGVhZD4KKzxib2R5Pgor
PGgxPkRhc2hib2FyZCBGaWxlcworPC9oMT4KKzxkaXY+CisgICAgPHRhYmxlPgorICAgICAgICA8
dHI+CisgICAgICAgICAgICA8dGg+RmlsZTwvdGg+CisgICAgICAgICAgICA8dGg+RGF0ZTwvdGg+
CisgICAgICAgICAgICB7JSBpZiBhZG1pbiAlfQorICAgICAgICAgICAgPHRoPjwvdGg+CisgICAg
ICAgICAgICB7JSBlbmRpZiAlfQorICAgICAgICB7JSBmb3IgZmlsZSBpbiBmaWxlcyAlfQorICAg
ICAgICA8dHI+eyUgaWYgZmlsZS5uYW1lICV9CisgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iL2Rh
c2hib2FyZHMve3sgZmlsZS5uYW1lIH19IiA+CisgICAgICAgICAgICAgICAge3sgZmlsZS5uYW1l
IH19CisgICAgICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAg
IDx0ZD57eyBmaWxlLmRhdGV8ZGF0ZToiZC1NLVkgSDppOnMiIH19CisgICAgICAgICAgICA8L3Rk
PgorICAgICAgICAgICAgeyUgaWYgYWRtaW4gJX0KKyAgICAgICAgICAgIDx0ZD48YSBocmVmPSIv
ZGFzaGJvYXJkcy9kZWxldGU/ZmlsZT17eyBmaWxlLm5hbWUgfX0iID4KKyAgICAgICAgICAgICAg
ICBEZWxldGUKKyAgICAgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8L3RkPgorICAgICAg
ICAgICAgeyUgZW5kaWYgJX0KKyAgICAgICAgeyUgZW5kaWYgJX0KKyAgICAgICAgPC90cj4KKyAg
ICB7JSBlbmRmb3IgJX0KKyAgICA8L3RhYmxlPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy9zaG93ZmlsZWxpc3Qu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRl
cy9zaG93ZmlsZWxpc3QuaHRtbAkocmV2aXNpb24gNTY1NzYpCisrKyBXZWJLaXRUb29scy9UZXN0
UmVzdWx0U2VydmVyL3RlbXBsYXRlcy9zaG93ZmlsZWxpc3QuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTcsMjkgKzE3LDMzIEBACiAgICAgICAgICAgICA8dGg+VGVzdCBUeXBlPC90aD4KICAgICAg
ICAgICAgIDx0aD5GaWxlPC90aD4KICAgICAgICAgICAgIDx0aD5EYXRlPC90aD4KKyAgICAgICAg
ICAgIHslIGlmIGFkbWluICV9CiAgICAgICAgICAgICA8dGg+PC90aD4KKyAgICAgICAgICAgIHsl
IGVuZGlmICV9CiAgICAgICAgIHslIGZvciBmaWxlIGluIGZpbGVzICV9CiAgICAgICAgIDx0cj57
JSBpZiBmaWxlLmJ1aWxkZXIgYW5kIGZpbGUubmFtZSAlfQotICAgICAgICAgICAgPHRkPjxhIGhy
ZWY9Ii9nZXRmaWxlP2J1aWxkZXI9e3sgZmlsZS5idWlsZGVyIH19IiA+CisgICAgICAgICAgICA8
dGQ+PGEgaHJlZj0iL3Rlc3RmaWxlP2J1aWxkZXI9e3sgZmlsZS5idWlsZGVyIH19IiA+CiAgICAg
ICAgICAgICAgICAge3sgZmlsZS5idWlsZGVyIH19CiAgICAgICAgICAgICAgICAgPC9hPgogICAg
ICAgICAgICAgPC90ZD4KICAgICAgICAgICAgIDx0ZD57JSBpZiBmaWxlLnRlc3RfdHlwZSAlfQot
ICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9nZXRmaWxlP3Rlc3R0eXBlPXt7IGZpbGUudGVzdF90
eXBlIH19IiA+CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Rlc3RmaWxlP3Rlc3R0eXBlPXt7
IGZpbGUudGVzdF90eXBlIH19IiA+CiAgICAgICAgICAgICAgICAge3sgZmlsZS50ZXN0X3R5cGUg
fX0KICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgeyUgZW5kaWYgJX0KICAg
ICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgICA8dGQ+PGEgaHJlZj0iL2dldGZpbGU/YnVpbGRl
cj17eyBmaWxlLmJ1aWxkZXIgfX0mbmFtZT17eyBmaWxlLm5hbWUgfX0iID4KKyAgICAgICAgICAg
IDx0ZD48YSBocmVmPSIvdGVzdGZpbGU/YnVpbGRlcj17eyBmaWxlLmJ1aWxkZXIgfX0mbmFtZT17
eyBmaWxlLm5hbWUgfX0iID4KICAgICAgICAgICAgICAgICB7eyBmaWxlLm5hbWUgfX0KICAgICAg
ICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgPHRkPnt7IGZp
bGUuZGF0ZXxkYXRlOiJkLU0tWSBIOmk6cyIgfX0KICAgICAgICAgICAgIDwvdGQ+Ci0gICAgICAg
ICAgICA8dGQ+PGEgaHJlZj0iL2RlbGV0ZWZpbGU/a2V5PXt7IGZpbGUua2V5IH19JmJ1aWxkZXI9
e3sgYnVpbGRlciB9fSZuYW1lPXt7IG5hbWUgfX0iID4KKyAgICAgICAgICAgIHslIGlmIGFkbWlu
ICV9CisgICAgICAgICAgICA8dGQ+PGEgaHJlZj0iL3Rlc3RmaWxlL2RlbGV0ZT9rZXk9e3sgZmls
ZS5rZXkgfX0mYnVpbGRlcj17eyBidWlsZGVyIH19Jm5hbWU9e3sgbmFtZSB9fSIgPgogICAgICAg
ICAgICAgICAgIERlbGV0ZQogICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgIDwvdGQ+
CisgICAgICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgICA8
L3RyPgogICAgIHslIGVuZGZvciAlfQpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFJlc3VsdFNlcnZl
ci90ZW1wbGF0ZXMvdXBsb2FkZm9ybS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rl
c3RSZXN1bHRTZXJ2ZXIvdGVtcGxhdGVzL3VwbG9hZGZvcm0uaHRtbAkocmV2aXNpb24gNTY1NzYp
CisrKyBXZWJLaXRUb29scy9UZXN0UmVzdWx0U2VydmVyL3RlbXBsYXRlcy91cGxvYWRmb3JtLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBACiA8L2hlYWQ+CiA8Ym9keT4KIDxoMT5V
cGxvYWQgVGVzdCBSZXN1bHQgRmlsZTwvaDE+Ci08Zm9ybSBhY2NlcHQ9InRleHQvaHRtbCIgYWN0
aW9uPSJ7eyB1cGxvYWRfdXJsIH19IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRo
b2Q9InBvc3QiPgorPGZvcm0gaWQ9InVwbG9hZEZvcm0iIG5hbWU9InRlc3RfcmVzdWx0X3VwbG9h
ZCIgYWNjZXB0PSJ0ZXh0L2h0bWwiIGFjdGlvbj0ie3sgdXBsb2FkX3VybCB9fSIgZW5jdHlwZT0i
bXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJwb3N0Ij4KICAgICA8YnI+CiAgICAgPHRhYmxl
PgogICAgIDx0cj4KQEAgLTE4LDcgKzE4LDcgQEAKICAgICAgICAgPHRkPjxpbnB1dCBjbGFzcz1p
bnB1dHRleHQgdHlwZT0idGV4dCIgbmFtZT0idGVzdHR5cGUiIHZhbHVlPSIiLz48L3RkPgogICAg
IDwvdHI+CiAgICAgPC90YWJsZT4KLSAgICA8ZGl2PjxpbnB1dCBjbGFzcz1idXR0b24gdHlwZT0i
ZmlsZSIgbmFtZT0iZmlsZSI+PC9kaXY+CisgICAgPGRpdj48aW5wdXQgY2xhc3M9YnV0dG9uIHR5
cGU9ImZpbGUiIG5hbWU9ImZpbGUiIG11bHRpcGxlPjwvZGl2PgogICAgIDxicj4KICAgICA8ZGl2
PjxpbnB1dCBjbGFzcz1idXR0b24gdHlwZT0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkIj48L2Rpdj4K
IDwvZm9ybT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>