<?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>32797</bug_id>
          
          <creation_ts>2009-12-20 10:08:41 -0800</creation_ts>
          <short_desc>[bzt] Optimize status updates for new dashboard</short_desc>
          <delta_ts>2009-12-28 23:43:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>173773</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-20 10:08:41 -0800</bug_when>
    <thetext>We should make the bots post more information about errors and their status so the dashboard can present this information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173781</commentid>
    <comment_count>1</comment_count>
      <attachid>45286</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-20 10:55:24 -0800</bug_when>
    <thetext>Created attachment 45286
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173783</commentid>
    <comment_count>2</comment_count>
      <attachid>45286</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-20 11:15:23 -0800</bug_when>
    <thetext>Comment on attachment 45286
work in progress

I&apos;m surprised this isn&apos;t an error in python:
 45             self._update_status(&quot;Building.&quot; % (patch[&quot;id&quot;], patch[&quot;bug_id&quot;]), patch)

Personally I like storing state[&apos;patch&apos;] in a local patch variable:
 74         message = &quot;Attachment %s did not build on %s:\nBuild output: %s&quot; % (state[&quot;patch&quot;][&quot;id&quot;], cls.port_name, results_link)

Again, should erorr:
 230         self._update_status(&quot;Checking style.&quot; % (patch[&quot;id&quot;], patch[&quot;bug_id&quot;]), patch)

I&apos;m not sure we should even output that much:
 248         message = &quot;Attachment %s did not pass %s:\n\n%s&quot; % (state[&quot;patch&quot;][&quot;id&quot;], cls.name, script_error.message_with_output(output_limit=3*1024))

You could re-use an OutputCapture object:
 50         OutputCapture().assert_outputs(self, queue.queue_log_path, expected_stdout=expected_stdout.get(&quot;queue_log_path&quot;, &quot;&quot;), expected_stderr=expected_stderr.get(&quot;queue_log_path&quot;, &quot;&quot;))

The test seems kinda confusing... but OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173785</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-20 11:24:54 -0800</bug_when>
    <thetext>&gt; I&apos;m surprised this isn&apos;t an error in python:

Oh, it probably does.  I wasn&apos;t posting it for review.  Hopefully the tests will find these bugs though.  :)

&gt; Personally I like storing state[&apos;patch&apos;] in a local patch variable:

Ok.

&gt; I&apos;m not sure we should even output that much:
&gt;  248         message = &quot;Attachment %s did not pass %s:\n\n%s&quot; %
&gt; (state[&quot;patch&quot;][&quot;id&quot;], cls.name,
&gt; script_error.message_with_output(output_limit=3*1024))

Hum...  Pick a number.  :)

&gt; The test seems kinda confusing... but OK.

Yeah, I thought of a better way to do this.  Basically, we want to make a MockQueueEngine to do all the callbacks.  :)

Anyway, I&apos;ve got to run.  Thanks for the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173835</commentid>
    <comment_count>4</comment_count>
      <attachid>45301</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-20 17:01:19 -0800</bug_when>
    <thetext>Created attachment 45301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173836</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-20 17:03:18 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45301 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173838</commentid>
    <comment_count>6</comment_count>
      <attachid>45302</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-20 17:07:08 -0800</bug_when>
    <thetext>Created attachment 45302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173839</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-20 17:08:42 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45302 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173846</commentid>
    <comment_count>8</comment_count>
      <attachid>45302</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-20 18:42:44 -0800</bug_when>
    <thetext>Comment on attachment 45302
Patch

Should this have a period?
 45             self._update_status(&quot;Building.&quot;, patch)

The expected_stderr repeition in EarlyWarningSytemTest could be avoided by using a shared function.

Said shared function could also pre-compute what the expected absolute path should be for the begin_work_queue message.  The relative path change I think makes it harder to read.  The purpose of that message was to make sure that I was in the right directory before I let the commit-queue loose on my working directory.  Maybe the message isn&apos;t as useful anymore now that these run most commonly on bots?

I&apos;d prefer we pre-computed the absolute path in the unittests than make this relative:
 83         log(&quot;CAUTION: %s will discard all local changes in \&quot;%s\&quot;&quot; % (self.name, os.path.relpath(self.tool.scm().checkout_root)))

Why not just do:
engine(foo, bar).run() on one line here:
         work_queue = QueueEngine(self.name, self)
 118         work_queue = engine(self.name, self)
108119         return work_queue.run()

I like the did_pass, did_fail changes!

assert_queue_outputs could be re-written much more consisely.  If you don&apos;t plan to do it in this patch, please add a FIXME for us to do it later.

Please make some of the above adjustments before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175418</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-28 22:41:12 -0800</bug_when>
    <thetext>Attachment 45302 was posted by a committer and has review+, assigning to Adam Barth for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175453</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-28 23:43:39 -0800</bug_when>
    <thetext>I&apos;m shocked an appalled!  Already landed as r52430.  Closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45286</attachid>
            <date>2009-12-20 10:55:24 -0800</date>
            <delta_ts>2009-12-20 17:01:12 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-32797-20091220105522.patch</filename>
            <type>text/plain</type>
            <size>16132</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9lYXJseV93
YXJuaW5nX3N5c3RlbS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9l
YXJseV93YXJuaW5nX3N5c3RlbS5weQppbmRleCAzZTlkMmM3Li5kMDg0MDZiIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZWFybHlfd2FybmluZ19zeXN0
ZW0ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Vhcmx5X3dh
cm5pbmdfc3lzdGVtLnB5CkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEFic3RyYWN0RWFybHlXYXJu
aW5nU3lzdGVtKEFic3RyYWN0UmV2aWV3UXVldWUpOgogICAgIGRlZiBzaG91bGRfcHJvY2VlZF93
aXRoX3dvcmtfaXRlbShzZWxmLCBwYXRjaCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNl
bGYucnVuX2J1Z3ppbGxhX3Rvb2woWyJidWlsZCIsIHNlbGYucG9ydC5mbGFnKCksICItLWZvcmNl
LWNsZWFuIiwgIi0tcXVpZXQiXSkKKyAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0dXMoIkJ1
aWxkaW5nLiIgJSAocGF0Y2hbImlkIl0sIHBhdGNoWyJidWdfaWQiXSksIHBhdGNoKQogICAgICAg
ICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CiAgICAgICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVz
KCJVbmFibGUgdG8gcGVyZm9ybSBhIGJ1aWxkLiIpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
QEAgLTU4LDIxICs1OSwyMCBAQCBjbGFzcyBBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbShBYnN0
cmFjdFJldmlld1F1ZXVlKToKICAgICAgICAgICAgICAgICAiLS1wYXJlbnQtY29tbWFuZD0lcyIg
JSBzZWxmLm5hbWUsCiAgICAgICAgICAgICAgICAgIi0tbm8tdXBkYXRlIiwKICAgICAgICAgICAg
ICAgICBwYXRjaFsiaWQiXV0pCi0gICAgICAgICAgICBzZWxmLl9wYXRjaGVzLmRpZF9wYXNzKHBh
dGNoKQorICAgICAgICAgICAgc2VsZi5fZGlkX3Bhc3MocGF0Y2gpCiAgICAgICAgIGV4Y2VwdCBT
Y3JpcHRFcnJvciwgZToKLSAgICAgICAgICAgIHNlbGYuX3BhdGNoZXMuZGlkX2ZhaWwocGF0Y2gp
CisgICAgICAgICAgICBzZWxmLl9kaWRfZmFpbChwYXRjaCkKICAgICAgICAgICAgIHJhaXNlIGUK
IAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBoYW5kbGVfc2NyaXB0X2Vycm9yKGNscywgdG9v
bCwgc3RhdGUsIHNjcmlwdF9lcnJvcik6CisgICAgICAgIHN0YXR1c19pZCA9IGNscy5fdXBkYXRl
X3N0YXR1c19mb3Jfc2NyaXB0X2Vycm9yKHRvb2wsIHN0YXRlLCBzY3JpcHRfZXJyb3IpCiAgICAg
ICAgICMgRklYTUU6IFRoaXMgd29uJ3QgYmUgcmlnaHQgZm9yIHBvcnRzIHRoYXQgZG9uJ3QgdXNl
IGJ1aWxkLXdlYmtpdCEKICAgICAgICAgaWYgbm90IHNjcmlwdF9lcnJvci5jb21tYW5kX25hbWUo
KSA9PSAiYnVpbGQtd2Via2l0IjoKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBwYXRjaCA9
IHN0YXRlWyJwYXRjaCJdCi0gICAgICAgIHN0YXR1c19pZCA9IHRvb2wuc3RhdHVzX2JvdC51cGRh
dGVfc3RhdHVzKGNscy5uYW1lLCAicGF0Y2ggJXMgZmFpbGVkOiAlcyIgJSAocGF0Y2hbImlkIl0s
IHNjcmlwdF9lcnJvci5tZXNzYWdlKSwgcGF0Y2gsIFN0cmluZ0lPKHNjcmlwdF9lcnJvci5vdXRw
dXQpKQogICAgICAgICByZXN1bHRzX2xpbmsgPSB0b29sLnN0YXR1c19ib3QucmVzdWx0c191cmxf
Zm9yX3N0YXR1cyhzdGF0dXNfaWQpCi0gICAgICAgIG1lc3NhZ2UgPSAiQXR0YWNobWVudCAlcyBk
aWQgbm90IGJ1aWxkIG9uICVzOlxuQnVpbGQgb3V0cHV0OiAlcyIgJSAocGF0Y2hbImlkIl0sIGNs
cy5wb3J0X25hbWUsIHJlc3VsdHNfbGluaykKLSAgICAgICAgdG9vbC5idWdzLnBvc3RfY29tbWVu
dF90b19idWcocGF0Y2hbImJ1Z19pZCJdLCBtZXNzYWdlLCBjYz1jbHMud2F0Y2hlcnMpCisgICAg
ICAgIG1lc3NhZ2UgPSAiQXR0YWNobWVudCAlcyBkaWQgbm90IGJ1aWxkIG9uICVzOlxuQnVpbGQg
b3V0cHV0OiAlcyIgJSAoc3RhdGVbInBhdGNoIl1bImlkIl0sIGNscy5wb3J0X25hbWUsIHJlc3Vs
dHNfbGluaykKKyAgICAgICAgdG9vbC5idWdzLnBvc3RfY29tbWVudF90b19idWcoc3RhdGVbInBh
dGNoIl1bImJ1Z19pZCJdLCBtZXNzYWdlLCBjYz1jbHMud2F0Y2hlcnMpCiAKIAogY2xhc3MgR3Rr
RVdTKEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVtKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9lYXJseV93YXJuaW5nX3N5c3RlbV91bml0dGVzdC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9lYXJseV93YXJuaW5nX3N5
c3RlbV91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWNm
NmY5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1h
bmRzL2Vhcmx5X3dhcm5pbmdfc3lzdGVtX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMzcgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSBtb2R1bGVzLmNvbW1hbmRzLmVh
cmx5X3dhcm5pbmdfc3lzdGVtIGltcG9ydCAqCitmcm9tIG1vZHVsZXMuY29tbWFuZHMucXVldWVz
dGVzdCBpbXBvcnQgUXVldWVzVGVzdAorZnJvbSBtb2R1bGVzLm1vY2sgaW1wb3J0IE1vY2sKKwor
Y2xhc3MgRWFybHlXYXJuaW5nU3l0ZW1UZXN0KFF1ZXVlc1Rlc3QpOgorICAgIGRlZiB0ZXN0X2No
cm9taXVtX2V3cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfcXVldWVfb3V0cHV0cyhDaHJv
bWl1bUVXUygpLCBzZWxmLm1vY2tfd29ya19pdGVtKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXVlcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
bW9kdWxlcy9jb21tYW5kcy9xdWV1ZXMucHkKaW5kZXggZTZlMTUwMy4uYjhlMmE5YiAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXVlcy5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvcXVldWVzLnB5CkBAIC00Nyw2
ICs0NywxMSBAQCBjbGFzcyBBYnN0cmFjdFF1ZXVlKENvbW1hbmQsIFF1ZXVlRW5naW5lRGVsZWdh
dGUpOgogICAgIHdhdGNoZXJzID0gWwogICAgICAgICAid2Via2l0LWJvdC13YXRjaGVyc0Bnb29n
bGVncm91cHMuY29tIiwKICAgICBdCisKKyAgICBfcGFzc19zdGF0dXMgPSAiUGFzcyIKKyAgICBf
ZmFpbF9zdGF0dXMgPSAiRmFpbCIKKyAgICBfZXJyb3Jfc3RhdHVzID0gIkVycm9yIgorCiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnM9Tm9uZSk6ICMgRGVmYXVsdCB2YWx1ZXMgc2hvdWxk
IG5ldmVyIGJlIGNvbGxlY3Rpb25zIChsaWtlIFtdKSBhcyBkZWZhdWx0IHZhbHVlcyBhcmUgc2hh
cmVkIGJldHdlZW4gaW52b2NhdGlvbnMKICAgICAgICAgb3B0aW9uc19saXN0ID0gKG9wdGlvbnMg
b3IgW10pICsgWwogICAgICAgICAgICAgbWFrZV9vcHRpb24oIi0tbm8tY29uZmlybSIsIGFjdGlv
bj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJjb25maXJtIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEbyBu
b3QgYXNrIHRoZSB1c2VyIGZvciBjb25maXJtYXRpb24gYmVmb3JlIHJ1bm5pbmcgdGhlIHF1ZXVl
LiAgRGFuZ2Vyb3VzISIpLApAQCAtNjIsNiArNjcsMTIgQEAgY2xhc3MgQWJzdHJhY3RRdWV1ZShD
b21tYW5kLCBRdWV1ZUVuZ2luZURlbGVnYXRlKToKICAgICBkZWYgX3VwZGF0ZV9zdGF0dXMoc2Vs
ZiwgbWVzc2FnZSwgcGF0Y2g9Tm9uZSwgcmVzdWx0c19maWxlPU5vbmUpOgogICAgICAgICBzZWxm
LnRvb2wuc3RhdHVzX2JvdC51cGRhdGVfc3RhdHVzKHNlbGYubmFtZSwgbWVzc2FnZSwgcGF0Y2gs
IHJlc3VsdHNfZmlsZSkKIAorICAgIGRlZiBfZGlkX3Bhc3Moc2VsZiwgcGF0Y2gpOgorICAgICAg
ICBzZWxmLl91cGRhdGVfc3RhdHVzKHNlbGYuX3Bhc3Nfc3RhdHVzLCBwYXRjaCkKKworICAgIGRl
ZiBfZGlkX2ZhaWwoc2VsZiwgcGF0Y2gpOgorICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKHNl
bGYuX2ZhaWxfc3RhdHVzLCBwYXRjaCkKKwogICAgIGRlZiBxdWV1ZV9sb2dfcGF0aChzZWxmKToK
ICAgICAgICAgcmV0dXJuICIlcy5sb2ciICUgc2VsZi5uYW1lCiAKQEAgLTEwNyw2ICsxMTgsMTAg
QEAgY2xhc3MgQWJzdHJhY3RRdWV1ZShDb21tYW5kLCBRdWV1ZUVuZ2luZURlbGVnYXRlKToKICAg
ICAgICAgd29ya19xdWV1ZSA9IFF1ZXVlRW5naW5lKHNlbGYubmFtZSwgc2VsZikKICAgICAgICAg
cmV0dXJuIHdvcmtfcXVldWUucnVuKCkKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdXBk
YXRlX3N0YXR1c19mb3Jfc2NyaXB0X2Vycm9yKGNscywgdG9vbCwgc3RhdGUsIHNjcmlwdF9lcnJv
cik6CisgICAgICAgIHJldHVybiB0b29sLnN0YXR1c19ib3QudXBkYXRlX3N0YXR1cyhjbHMubmFt
ZSwgc2NyaXB0X2Vycm9yLm1lc3NhZ2UsIHN0YXRlWyJwYXRjaCJdLCBTdHJpbmdJTyhzY3JpcHRf
ZXJyb3Iub3V0cHV0KSkKKwogCiBjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFF1ZXVlLCBTdGVw
U2VxdWVuY2VFcnJvckhhbmRsZXIpOgogICAgIG5hbWUgPSAiY29tbWl0LXF1ZXVlIgpAQCAtMTMz
LDEyICsxNDgsMTcgQEAgY2xhc3MgQ29tbWl0UXVldWUoQWJzdHJhY3RRdWV1ZSwgU3RlcFNlcXVl
bmNlRXJyb3JIYW5kbGVyKToKICAgICAgICAgICAgIHJlZF9idWlsZGVyc19uYW1lcyA9IG1hcChs
YW1iZGEgbmFtZTogIlwiJXNcIiIgJSBuYW1lLCByZWRfYnVpbGRlcnNfbmFtZXMpICMgQWRkIHF1
b3RlcyBhcm91bmQgdGhlIG5hbWVzLgogICAgICAgICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1cygi
QnVpbGRlcnMgWyVzXSBhcmUgcmVkLiBTZWUgaHR0cDovL2J1aWxkLndlYmtpdC5vcmcuIiAlICIs
ICIuam9pbihyZWRfYnVpbGRlcnNfbmFtZXMpLCBOb25lKQogICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0gICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0dXMoIkxhbmRpbmcgcGF0Y2ggJXMgZnJvbSBi
dWcgJXMuIiAlIChwYXRjaFsiaWQiXSwgcGF0Y2hbImJ1Z19pZCJdKSwgcGF0Y2gpCisgICAgICAg
IHNlbGYuX3VwZGF0ZV9zdGF0dXMoIkxhbmRpbmcgcGF0Y2guIiwgcGF0Y2gpCiAgICAgICAgIHJl
dHVybiBUcnVlCiAKICAgICBkZWYgcHJvY2Vzc193b3JrX2l0ZW0oc2VsZiwgcGF0Y2gpOgotICAg
ICAgICBzZWxmLl9jY193YXRjaGVycyhwYXRjaFsiYnVnX2lkIl0pCi0gICAgICAgIHNlbGYucnVu
X2J1Z3ppbGxhX3Rvb2woWyJsYW5kLWF0dGFjaG1lbnQiLCAiLS1mb3JjZS1jbGVhbiIsICItLW5v
bi1pbnRlcmFjdGl2ZSIsICItLXBhcmVudC1jb21tYW5kPWNvbW1pdC1xdWV1ZSIsICItLXF1aWV0
IiwgcGF0Y2hbImlkIl1dKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9jY193YXRj
aGVycyhwYXRjaFsiYnVnX2lkIl0pCisgICAgICAgICAgICBzZWxmLnJ1bl9idWd6aWxsYV90b29s
KFsibGFuZC1hdHRhY2htZW50IiwgIi0tZm9yY2UtY2xlYW4iLCAiLS1ub24taW50ZXJhY3RpdmUi
LCAiLS1wYXJlbnQtY29tbWFuZD1jb21taXQtcXVldWUiLCAiLS1xdWlldCIsIHBhdGNoWyJpZCJd
XSkKKyAgICAgICAgICAgIHNlbGYuX2RpZF9wYXNzKHBhdGNoKQorICAgICAgICBleGNlcHQgU2Ny
aXB0RXJyb3IsIGU6CisgICAgICAgICAgICBzZWxmLl9kaWRfZmFpbChwYXRjaCkKKyAgICAgICAg
ICAgIHJhaXNlIGUKIAogICAgIGRlZiBoYW5kbGVfdW5leHBlY3RlZF9lcnJvcihzZWxmLCBwYXRj
aCwgbWVzc2FnZSk6CiAgICAgICAgIHNlbGYudG9vbC5idWdzLnJlamVjdF9wYXRjaF9mcm9tX2Nv
bW1pdF9xdWV1ZShwYXRjaFsiaWQiXSwgbWVzc2FnZSkKQEAgLTE1NCw5ICsxNzQsOCBAQCBjbGFz
cyBDb21taXRRdWV1ZShBYnN0cmFjdFF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIpOgog
CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGhhbmRsZV9zY3JpcHRfZXJyb3IoY2xzLCB0b29s
LCBzdGF0ZSwgc2NyaXB0X2Vycm9yKToKLSAgICAgICAgcGF0Y2ggPSBzdGF0ZVsicGF0Y2giXQot
ICAgICAgICBzdGF0dXNfaWQgPSB0b29sLnN0YXR1c19ib3QudXBkYXRlX3N0YXR1cyhjbHMubmFt
ZSwgInBhdGNoICVzIGZhaWxlZDogJXMiICUgKHBhdGNoWydpZCddLCBzY3JpcHRfZXJyb3IubWVz
c2FnZSksIHBhdGNoLCBTdHJpbmdJTyhzY3JpcHRfZXJyb3Iub3V0cHV0KSkKLSAgICAgICAgdG9v
bC5idWdzLnJlamVjdF9wYXRjaF9mcm9tX2NvbW1pdF9xdWV1ZShwYXRjaFsiaWQiXSwgY2xzLl9l
cnJvcl9tZXNzYWdlX2Zvcl9idWcodG9vbCwgc3RhdHVzX2lkLCBzY3JpcHRfZXJyb3IpKQorICAg
ICAgICBzdGF0dXNfaWQgPSBjbHMuX3VwZGF0ZV9zdGF0dXNfZm9yX3NjcmlwdF9lcnJvcih0b29s
LCBzdGF0ZSwgc2NyaXB0X2Vycm9yKQorICAgICAgICB0b29sLmJ1Z3MucmVqZWN0X3BhdGNoX2Zy
b21fY29tbWl0X3F1ZXVlKHN0YXRlWyJwYXRjaCJdWyJpZCJdLCBjbHMuX2Vycm9yX21lc3NhZ2Vf
Zm9yX2J1Zyh0b29sLCBzdGF0dXNfaWQsIHNjcmlwdF9lcnJvcikpCiAKIAogY2xhc3MgQWJzdHJh
Y3RSZXZpZXdRdWV1ZShBYnN0cmFjdFF1ZXVlLCBQZXJzaXN0ZW50UGF0Y2hDb2xsZWN0aW9uRGVs
ZWdhdGUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcik6CkBAIC0yMDgsNyArMjI3LDcgQEAgY2xh
c3MgU3R5bGVRdWV1ZShBYnN0cmFjdFJldmlld1F1ZXVlKToKICAgICAgICAgQWJzdHJhY3RSZXZp
ZXdRdWV1ZS5fX2luaXRfXyhzZWxmKQogCiAgICAgZGVmIHNob3VsZF9wcm9jZWVkX3dpdGhfd29y
a19pdGVtKHNlbGYsIHBhdGNoKToKLSAgICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1cygiQ2hlY2tp
bmcgc3R5bGUgZm9yIHBhdGNoICVzIG9uIGJ1ZyAlcy4iICUgKHBhdGNoWyJpZCJdLCBwYXRjaFsi
YnVnX2lkIl0pLCBwYXRjaCkKKyAgICAgICAgc2VsZi5fdXBkYXRlX3N0YXR1cygiQ2hlY2tpbmcg
c3R5bGUuIiAlIChwYXRjaFsiaWQiXSwgcGF0Y2hbImJ1Z19pZCJdKSwgcGF0Y2gpCiAgICAgICAg
IHJldHVybiBUcnVlCiAKICAgICBkZWYgcHJvY2Vzc193b3JrX2l0ZW0oc2VsZiwgcGF0Y2gpOgpA
QCAtMjE2LDE0ICsyMzUsMTUgQEAgY2xhc3MgU3R5bGVRdWV1ZShBYnN0cmFjdFJldmlld1F1ZXVl
KToKICAgICAgICAgICAgIHNlbGYucnVuX2J1Z3ppbGxhX3Rvb2woWyJjaGVjay1zdHlsZSIsICIt
LWZvcmNlLWNsZWFuIiwgIi0tbm9uLWludGVyYWN0aXZlIiwgIi0tcGFyZW50LWNvbW1hbmQ9c3R5
bGUtcXVldWUiLCBwYXRjaFsiaWQiXV0pCiAgICAgICAgICAgICBtZXNzYWdlID0gIiVzIHJhbiBj
aGVjay13ZWJraXQtc3R5bGUgb24gYXR0YWNobWVudCAlcyB3aXRob3V0IGFueSBlcnJvcnMuIiAl
IChzZWxmLm5hbWUsIHBhdGNoWyJpZCJdKQogICAgICAgICAgICAgc2VsZi50b29sLmJ1Z3MucG9z
dF9jb21tZW50X3RvX2J1ZyhwYXRjaFsiYnVnX2lkIl0sIG1lc3NhZ2UsIGNjPXNlbGYud2F0Y2hl
cnMpCi0gICAgICAgICAgICBzZWxmLl9wYXRjaGVzLmRpZF9wYXNzKHBhdGNoKQorICAgICAgICAg
ICAgc2VsZi5fZGlkX3Bhc3MocGF0Y2gpCiAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToK
LSAgICAgICAgICAgIHNlbGYuX3BhdGNoZXMuZGlkX2ZhaWwocGF0Y2gpCisgICAgICAgICAgICBz
ZWxmLl9kaWRfZmFpbChwYXRjaCkKICAgICAgICAgICAgIHJhaXNlIGUKIAogICAgIEBjbGFzc21l
dGhvZAogICAgIGRlZiBoYW5kbGVfc2NyaXB0X2Vycm9yKGNscywgdG9vbCwgc3RhdGUsIHNjcmlw
dF9lcnJvcik6CisgICAgICAgIHN0YXR1c19pZCA9IGNscy5fdXBkYXRlX3N0YXR1c19mb3Jfc2Ny
aXB0X2Vycm9yKHRvb2wsIHN0YXRlLCBzY3JpcHRfZXJyb3IpCiAgICAgICAgIGlmIG5vdCBzY3Jp
cHRfZXJyb3IuY29tbWFuZF9uYW1lKCkgPT0gImNoZWNrLXdlYmtpdC1zdHlsZSI6CiAgICAgICAg
ICAgICByZXR1cm4KLSAgICAgICAgbWVzc2FnZSA9ICJBdHRhY2htZW50ICVzIGRpZCBub3QgcGFz
cyAlczpcblxuJXMiICUgKHN0YXRlWyJwYXRjaCJdWyJpZCJdLCBjbHMubmFtZSwgc2NyaXB0X2Vy
cm9yLm1lc3NhZ2Vfd2l0aF9vdXRwdXQob3V0cHV0X2xpbWl0PTUqMTAyNCkpCisgICAgICAgIG1l
c3NhZ2UgPSAiQXR0YWNobWVudCAlcyBkaWQgbm90IHBhc3MgJXM6XG5cbiVzIiAlIChzdGF0ZVsi
cGF0Y2giXVsiaWQiXSwgY2xzLm5hbWUsIHNjcmlwdF9lcnJvci5tZXNzYWdlX3dpdGhfb3V0cHV0
KG91dHB1dF9saW1pdD0zKjEwMjQpKQogICAgICAgICB0b29sLmJ1Z3MucG9zdF9jb21tZW50X3Rv
X2J1ZyhzdGF0ZVsicGF0Y2giXVsiYnVnX2lkIl0sIG1lc3NhZ2UsIGNjPWNscy53YXRjaGVycykK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9xdWV1ZXN0
ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXVlc3Rlc3Qu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5OTIzZQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9xdWV1ZXN0ZXN0
LnB5CkBAIC0wLDAgKzEsNTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QKKwor
ZnJvbSBtb2R1bGVzLm1vY2sgaW1wb3J0IE1vY2sKK2Zyb20gbW9kdWxlcy5tb2NrX2J1Z3ppbGxh
dG9vbCBpbXBvcnQgTW9ja0J1Z3ppbGxhVG9vbAorZnJvbSBtb2R1bGVzLm91dHB1dGNhcHR1cmUg
aW1wb3J0IE91dHB1dENhcHR1cmUKKworY2xhc3MgUXVldWVzVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CisgICAgbW9ja193b3JrX2l0ZW0gPSB7CisgICAgICAgICJpZCIgOiAxMjM0LAorICAgICAg
ICAiYnVnX2lkIiA6IDM0NSwKKyAgICB9CisKKyAgICBkZWYgYXNzZXJ0X3F1ZXVlX291dHB1dHMo
c2VsZiwgcXVldWUsIHdvcmtfaXRlbT1Ob25lLCBleHBlY3RlZF9zdGRvdXQ9Tm9uZSwgZXhwZWN0
ZWRfc3RkZXJyPU5vbmUsIG9wdGlvbnM9TW9jaygpLCB0b29sPU1vY2tCdWd6aWxsYVRvb2woKSk6
CisgICAgICAgIGlmIG5vdCBleHBlY3RlZF9zdGRvdXQ6CisgICAgICAgICAgICBleHBlY3RlZF9z
dGRvdXQgPSB7fQorICAgICAgICBpZiBub3QgZXhwZWN0ZWRfc3RkZXJyOgorICAgICAgICAgICAg
ZXhwZWN0ZWRfc3RkZXJyID0ge30KKyAgICAgICAgaWYgbm90IHdvcmtfaXRlbToKKyAgICAgICAg
ICAgIHdvcmtfaXRlbSA9IHNlbGYubW9ja193b3JrX2l0ZW0KKyAgICAgICAgcXVldWUub3B0aW9u
cyA9IG9wdGlvbnMKKyAgICAgICAgcXVldWUudG9vbCA9IHRvb2wKKyAgICAgICAgT3V0cHV0Q2Fw
dHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVlLnF1ZXVlX2xvZ19wYXRoLCBleHBlY3Rl
ZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LmdldCgicXVldWVfbG9nX3BhdGgiLCAiIiksIGV4cGVj
dGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIuZ2V0KCJxdWV1ZV9sb2dfcGF0aCIsICIiKSkKKyAg
ICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVlLndvcmtfaXRl
bV9sb2dfcGF0aCwgYXJncz1bd29ya19pdGVtXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0
ZG91dC5nZXQoIndvcmtfaXRlbV9sb2dfcGF0aCIsICIiKSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVj
dGVkX3N0ZGVyci5nZXQoIndvcmtfaXRlbV9sb2dfcGF0aCIsICIiKSkKKyAgICAgICAgT3V0cHV0
Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVlLmJlZ2luX3dvcmtfcXVldWUsIGV4
cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQuZ2V0KCJiZWdpbl93b3JrX3F1ZXVlIiwgIiIp
LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLmdldCgiYmVnaW5fd29ya19xdWV1ZSIs
ICIiKSkKKyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVl
LnNob3VsZF9jb250aW51ZV93b3JrX3F1ZXVlLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rk
b3V0LmdldCgic2hvdWxkX2NvbnRpbnVlX3dvcmtfcXVldWUiLCAiIiksIGV4cGVjdGVkX3N0ZGVy
cj1leHBlY3RlZF9zdGRlcnIuZ2V0KCJzaG91bGRfY29udGludWVfd29ya19xdWV1ZSIsICIiKSkK
KyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVlLm5leHRf
d29ya19pdGVtLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LmdldCgibmV4dF93b3Jr
X2l0ZW0iLCAiIiksIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIuZ2V0KCJuZXh0X3dv
cmtfaXRlbSIsICIiKSkKKyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNl
bGYsIHF1ZXVlLnNob3VsZF9wcm9jZWVkX3dpdGhfd29ya19pdGVtLCBhcmdzPVt3b3JrX2l0ZW1d
LCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LmdldCgic2hvdWxkX3Byb2NlZWRfd2l0
aF93b3JrX2l0ZW0iLCAiIiksIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIuZ2V0KCJz
aG91bGRfcHJvY2VlZF93aXRoX3dvcmtfaXRlbSIsICIiKSkKKyAgICAgICAgT3V0cHV0Q2FwdHVy
ZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVlLnByb2Nlc3Nfd29ya19pdGVtLCBhcmdzPVt3
b3JrX2l0ZW1dLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LmdldCgicHJvY2Vzc193
b3JrX2l0ZW0iLCAiIiksIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIuZ2V0KCJwcm9j
ZXNzX3dvcmtfaXRlbSIsICIiKSkKKyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmhhbmRsZV91bmV4
cGVjdGVkX2Vycm9yKHNlbGYsIHF1ZXVlLmhhbmRsZV91bmV4cGVjdGVkX2Vycm9yLCBhcmdzPVt3
b3JrX2l0ZW0sICJNb2NrIGVycm9yIG1lc3NhZ2UiXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVk
X3N0ZG91dC5nZXQoImhhbmRsZV91bmV4cGVjdGVkX2Vycm9yIiwgIiIpLCBleHBlY3RlZF9zdGRl
cnI9ZXhwZWN0ZWRfc3RkZXJyLmdldCgiaGFuZGxlX3VuZXhwZWN0ZWRfZXJyb3IiLCAiIikpCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvcGF0Y2hjb2xsZWN0aW9uLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3BhdGNoY29sbGVjdGlvbi5weQppbmRleCBh
ZGQ4MTI5Li4yNDZmNDg3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
cGF0Y2hjb2xsZWN0aW9uLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9wYXRj
aGNvbGxlY3Rpb24ucHkKQEAgLTM5LDkgKzM5LDYgQEAgY2xhc3MgUGVyc2lzdGVudFBhdGNoQ29s
bGVjdGlvbkRlbGVnYXRlOgogCiAKIGNsYXNzIFBlcnNpc3RlbnRQYXRjaENvbGxlY3Rpb246Ci0g
ICAgX2luaXRpYWxfc3RhdHVzID0gIlBlbmRpbmciCi0gICAgX3Bhc3Nfc3RhdHVzID0gIlBhc3Mi
Ci0gICAgX2ZhaWxfc3RhdHVzID0gIkZhaWwiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlbGVn
YXRlKToKICAgICAgICAgc2VsZi5fZGVsZWdhdGUgPSBkZWxlZ2F0ZQogICAgICAgICBzZWxmLl9u
YW1lID0gc2VsZi5fZGVsZWdhdGUuY29sbGVjdGlvbl9uYW1lKCkKQEAgLTY0LDggKzYxLDMgQEAg
Y2xhc3MgUGVyc2lzdGVudFBhdGNoQ29sbGVjdGlvbjoKICAgICAgICAgICAgIGlmIG5vdCBzdGF0
dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdGNoX2lkCiAKLSAgICBkZWYgZGlkX3Bhc3Mo
c2VsZiwgcGF0Y2gpOgotICAgICAgICBzZWxmLl9zdGF0dXMudXBkYXRlX3N0YXR1cyhzZWxmLl9u
YW1lLCBzZWxmLl9wYXNzX3N0YXR1cywgcGF0Y2gpCi0KLSAgICBkZWYgZGlkX2ZhaWwoc2VsZiwg
cGF0Y2gpOgotICAgICAgICBzZWxmLl9zdGF0dXMudXBkYXRlX3N0YXR1cyhzZWxmLl9uYW1lLCBz
ZWxmLl9mYWlsX3N0YXR1cywgcGF0Y2gpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L21vZHVsZXMvcXVldWVlbmdpbmUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvcXVl
dWVlbmdpbmUucHkKaW5kZXggNmNiMWUxMy4uYzI2M2MwNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy9tb2R1bGVzL3F1ZXVlZW5naW5lLnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvbW9kdWxlcy9xdWV1ZWVuZ2luZS5weQpAQCAtMzksOSArMzksNiBAQCBmcm9tIG1vZHVsZXMu
bG9nZ2luZyBpbXBvcnQgbG9nLCBPdXRwdXRUZWUKIGZyb20gbW9kdWxlcy5zdGF0dXNib3QgaW1w
b3J0IFN0YXR1c0JvdAogCiBjbGFzcyBRdWV1ZUVuZ2luZURlbGVnYXRlOgotICAgIGRlZiBxdWV1
ZV9uYW1lKHNlbGYpOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xh
c3NlcyBtdXN0IGltcGxlbWVudCIKLQogICAgIGRlZiBxdWV1ZV9sb2dfcGF0aChzZWxmKToKICAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1l
bnQiCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC11bml0dGVz
dHMgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdW5pdHRlc3RzCmluZGV4IDU3NmE1
ZTIuLmM0MjUyZDIgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC11
bml0dGVzdHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXVuaXR0ZXN0cwpA
QCAtMzUsNiArMzUsNyBAQCBmcm9tIG1vZHVsZXMuYnVpbGRib3RfdW5pdHRlc3QgaW1wb3J0ICoK
IGZyb20gbW9kdWxlcy5idWlsZHN0ZXBzX3VuaXR0ZXN0IGltcG9ydCAqCiBmcm9tIG1vZHVsZXMu
Y2hhbmdlbG9nc191bml0dGVzdCBpbXBvcnQgKgogZnJvbSBtb2R1bGVzLmNvbW1hbmRzLmRvd25s
b2FkX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIG1vZHVsZXMuY29tbWFuZHMuZWFybHlfd2Fybmlu
Z19zeXN0ZW1fdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy5jb21tYW5kcy51cGxvYWRf
dW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy5jb21tYW5kcy5xdWVyaWVzX3VuaXR0ZXN0
IGltcG9ydCAqCiBmcm9tIG1vZHVsZXMuY29tbWFuZHMucXVldWVzX3VuaXR0ZXN0IGltcG9ydCAq
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45301</attachid>
            <date>2009-12-20 17:01:19 -0800</date>
            <delta_ts>2009-12-20 17:06:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32797-20091220170117.patch</filename>
            <type>text/plain</type>
            <size>22624</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA3ZmRkMzAzLi5mYTMxYjRkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMTIt
MjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbYnp0XSBPcHRpbWl6ZSBzdGF0dXMgdXBkYXRl
cyBmb3IgbmV3IGRhc2hib2FyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzI3OTcKKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBxdWV1ZXMg
c2xpZ2h0bHkgbW9yZSBjaGF0dHkgd2l0aCB0aGUgd2ViIHNlcnZpY2UuCisgICAgICAgIEFsc28s
IHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBzb21lIHRlc3RpbmcgZm9yIHRoZSBxdWV1ZXMhCisKKyAg
ICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZWFybHlfd2FybmluZ19zeXN0ZW0ucHk6
CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Vhcmx5X3dhcm5pbmdfc3lzdGVt
X3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY29tbWFuZHMv
cXVldWVzLnB5OgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9xdWV1ZXNfdW5p
dHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXVlc3Rlc3Qu
cHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9tb2NrX2J1Z3ppbGxhdG9vbC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvcGF0Y2hjb2xsZWN0aW9uLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvbW9kdWxlcy9xdWV1ZWVuZ2luZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3J1
bi13ZWJraXQtdW5pdHRlc3RzOgorCiAyMDA5LTEyLTIwICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8
YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBT
aWx2YS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9l
YXJseV93YXJuaW5nX3N5c3RlbS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21t
YW5kcy9lYXJseV93YXJuaW5nX3N5c3RlbS5weQppbmRleCAzZTlkMmM3Li4yNmM4Mjc3IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZWFybHlfd2Fybmlu
Z19zeXN0ZW0ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Vh
cmx5X3dhcm5pbmdfc3lzdGVtLnB5CkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEFic3RyYWN0RWFy
bHlXYXJuaW5nU3lzdGVtKEFic3RyYWN0UmV2aWV3UXVldWUpOgogICAgIGRlZiBzaG91bGRfcHJv
Y2VlZF93aXRoX3dvcmtfaXRlbShzZWxmLCBwYXRjaCk6CiAgICAgICAgIHRyeToKICAgICAgICAg
ICAgIHNlbGYucnVuX2J1Z3ppbGxhX3Rvb2woWyJidWlsZCIsIHNlbGYucG9ydC5mbGFnKCksICIt
LWZvcmNlLWNsZWFuIiwgIi0tcXVpZXQiXSkKKyAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0
dXMoIkJ1aWxkaW5nLiIsIHBhdGNoKQogICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CiAg
ICAgICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKCJVbmFibGUgdG8gcGVyZm9ybSBhIGJ1aWxk
LiIpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTU4LDIxICs1OSwyMCBAQCBjbGFzcyBB
YnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbShBYnN0cmFjdFJldmlld1F1ZXVlKToKICAgICAgICAg
ICAgICAgICAiLS1wYXJlbnQtY29tbWFuZD0lcyIgJSBzZWxmLm5hbWUsCiAgICAgICAgICAgICAg
ICAgIi0tbm8tdXBkYXRlIiwKICAgICAgICAgICAgICAgICBwYXRjaFsiaWQiXV0pCi0gICAgICAg
ICAgICBzZWxmLl9wYXRjaGVzLmRpZF9wYXNzKHBhdGNoKQorICAgICAgICAgICAgc2VsZi5fZGlk
X3Bhc3MocGF0Y2gpCiAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKLSAgICAgICAgICAg
IHNlbGYuX3BhdGNoZXMuZGlkX2ZhaWwocGF0Y2gpCisgICAgICAgICAgICBzZWxmLl9kaWRfZmFp
bChwYXRjaCkKICAgICAgICAgICAgIHJhaXNlIGUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRl
ZiBoYW5kbGVfc2NyaXB0X2Vycm9yKGNscywgdG9vbCwgc3RhdGUsIHNjcmlwdF9lcnJvcik6Cisg
ICAgICAgIHN0YXR1c19pZCA9IGNscy5fdXBkYXRlX3N0YXR1c19mb3Jfc2NyaXB0X2Vycm9yKHRv
b2wsIHN0YXRlLCBzY3JpcHRfZXJyb3IpCiAgICAgICAgICMgRklYTUU6IFRoaXMgd29uJ3QgYmUg
cmlnaHQgZm9yIHBvcnRzIHRoYXQgZG9uJ3QgdXNlIGJ1aWxkLXdlYmtpdCEKICAgICAgICAgaWYg
bm90IHNjcmlwdF9lcnJvci5jb21tYW5kX25hbWUoKSA9PSAiYnVpbGQtd2Via2l0IjoKICAgICAg
ICAgICAgIHJldHVybgotICAgICAgICBwYXRjaCA9IHN0YXRlWyJwYXRjaCJdCi0gICAgICAgIHN0
YXR1c19pZCA9IHRvb2wuc3RhdHVzX2JvdC51cGRhdGVfc3RhdHVzKGNscy5uYW1lLCAicGF0Y2gg
JXMgZmFpbGVkOiAlcyIgJSAocGF0Y2hbImlkIl0sIHNjcmlwdF9lcnJvci5tZXNzYWdlKSwgcGF0
Y2gsIFN0cmluZ0lPKHNjcmlwdF9lcnJvci5vdXRwdXQpKQogICAgICAgICByZXN1bHRzX2xpbmsg
PSB0b29sLnN0YXR1c19ib3QucmVzdWx0c191cmxfZm9yX3N0YXR1cyhzdGF0dXNfaWQpCi0gICAg
ICAgIG1lc3NhZ2UgPSAiQXR0YWNobWVudCAlcyBkaWQgbm90IGJ1aWxkIG9uICVzOlxuQnVpbGQg
b3V0cHV0OiAlcyIgJSAocGF0Y2hbImlkIl0sIGNscy5wb3J0X25hbWUsIHJlc3VsdHNfbGluaykK
LSAgICAgICAgdG9vbC5idWdzLnBvc3RfY29tbWVudF90b19idWcocGF0Y2hbImJ1Z19pZCJdLCBt
ZXNzYWdlLCBjYz1jbHMud2F0Y2hlcnMpCisgICAgICAgIG1lc3NhZ2UgPSAiQXR0YWNobWVudCAl
cyBkaWQgbm90IGJ1aWxkIG9uICVzOlxuQnVpbGQgb3V0cHV0OiAlcyIgJSAoc3RhdGVbInBhdGNo
Il1bImlkIl0sIGNscy5wb3J0X25hbWUsIHJlc3VsdHNfbGluaykKKyAgICAgICAgdG9vbC5idWdz
LnBvc3RfY29tbWVudF90b19idWcoc3RhdGVbInBhdGNoIl1bImJ1Z19pZCJdLCBtZXNzYWdlLCBj
Yz1jbHMud2F0Y2hlcnMpCiAKIAogY2xhc3MgR3RrRVdTKEFic3RyYWN0RWFybHlXYXJuaW5nU3lz
dGVtKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9l
YXJseV93YXJuaW5nX3N5c3RlbV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9k
dWxlcy9jb21tYW5kcy9lYXJseV93YXJuaW5nX3N5c3RlbV91bml0dGVzdC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjYwZjQyCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Vhcmx5X3dhcm5pbmdfc3lzdGVtX3Vu
aXR0ZXN0LnB5CkBAIC0wLDAgKzEsNTUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRl
c3QKKworZnJvbSBtb2R1bGVzLmNvbW1hbmRzLmVhcmx5X3dhcm5pbmdfc3lzdGVtIGltcG9ydCAq
Citmcm9tIG1vZHVsZXMuY29tbWFuZHMucXVldWVzdGVzdCBpbXBvcnQgUXVldWVzVGVzdAorZnJv
bSBtb2R1bGVzLm1vY2sgaW1wb3J0IE1vY2sKKworY2xhc3MgRWFybHlXYXJuaW5nU3l0ZW1UZXN0
KFF1ZXVlc1Rlc3QpOgorICAgIGRlZiB0ZXN0X2Nocm9taXVtX2V3cyhzZWxmKToKKyAgICAgICAg
ZXhwZWN0ZWRfc3RkZXJyID0geworICAgICAgICAgICAgImJlZ2luX3dvcmtfcXVldWUiIDogIkNB
VVRJT046IGNocm9taXVtLWV3cyB3aWxsIGRpc2NhcmQgYWxsIGxvY2FsIGNoYW5nZXMgaW4gXCIu
XCJcblJ1bm5pbmcgV2ViS2l0IGNocm9taXVtLWV3cy5cbiIsCisgICAgICAgICAgICAiaGFuZGxl
X3VuZXhwZWN0ZWRfZXJyb3IiIDogIk1vY2sgZXJyb3IgbWVzc2FnZVxuIiwKKyAgICAgICAgfQor
ICAgICAgICBzZWxmLmFzc2VydF9xdWV1ZV9vdXRwdXRzKENocm9taXVtRVdTKCksIHNlbGYubW9j
a193b3JrX2l0ZW0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisKKyAgICBkZWYg
dGVzdF9xdF9ld3Moc2VsZik6CisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9IHsKKyAgICAgICAg
ICAgICJiZWdpbl93b3JrX3F1ZXVlIiA6ICJDQVVUSU9OOiBxdC1ld3Mgd2lsbCBkaXNjYXJkIGFs
bCBsb2NhbCBjaGFuZ2VzIGluIFwiLlwiXG5SdW5uaW5nIFdlYktpdCBxdC1ld3MuXG4iLAorICAg
ICAgICAgICAgImhhbmRsZV91bmV4cGVjdGVkX2Vycm9yIiA6ICJNb2NrIGVycm9yIG1lc3NhZ2Vc
biIsCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5hc3NlcnRfcXVldWVfb3V0cHV0cyhRdEVXUygp
LCBzZWxmLm1vY2tfd29ya19pdGVtLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQor
CisgICAgZGVmIHRlc3RfZ3RrX2V3cyhzZWxmKToKKyAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0g
eworICAgICAgICAgICAgImJlZ2luX3dvcmtfcXVldWUiIDogIkNBVVRJT046IGd0ay1ld3Mgd2ls
bCBkaXNjYXJkIGFsbCBsb2NhbCBjaGFuZ2VzIGluIFwiLlwiXG5SdW5uaW5nIFdlYktpdCBndGst
ZXdzLlxuIiwKKyAgICAgICAgICAgICJoYW5kbGVfdW5leHBlY3RlZF9lcnJvciIgOiAiTW9jayBl
cnJvciBtZXNzYWdlXG4iLAorICAgICAgICB9CisgICAgICAgIHNlbGYuYXNzZXJ0X3F1ZXVlX291
dHB1dHMoR3RrRVdTKCksIHNlbGYubW9ja193b3JrX2l0ZW0sIGV4cGVjdGVkX3N0ZGVycj1leHBl
Y3RlZF9zdGRlcnIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29t
bWFuZHMvcXVldWVzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL3F1
ZXVlcy5weQppbmRleCBlNmUxNTAzLi43MmY4MmNmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvY29tbWFuZHMvcXVldWVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvbW9kdWxlcy9jb21tYW5kcy9xdWV1ZXMucHkKQEAgLTQ3LDYgKzQ3LDExIEBAIGNsYXNzIEFi
c3RyYWN0UXVldWUoQ29tbWFuZCwgUXVldWVFbmdpbmVEZWxlZ2F0ZSk6CiAgICAgd2F0Y2hlcnMg
PSBbCiAgICAgICAgICJ3ZWJraXQtYm90LXdhdGNoZXJzQGdvb2dsZWdyb3Vwcy5jb20iLAogICAg
IF0KKworICAgIF9wYXNzX3N0YXR1cyA9ICJQYXNzIgorICAgIF9mYWlsX3N0YXR1cyA9ICJGYWls
IgorICAgIF9lcnJvcl9zdGF0dXMgPSAiRXJyb3IiCisKICAgICBkZWYgX19pbml0X18oc2VsZiwg
b3B0aW9ucz1Ob25lKTogIyBEZWZhdWx0IHZhbHVlcyBzaG91bGQgbmV2ZXIgYmUgY29sbGVjdGlv
bnMgKGxpa2UgW10pIGFzIGRlZmF1bHQgdmFsdWVzIGFyZSBzaGFyZWQgYmV0d2VlbiBpbnZvY2F0
aW9ucwogICAgICAgICBvcHRpb25zX2xpc3QgPSAob3B0aW9ucyBvciBbXSkgKyBbCiAgICAgICAg
ICAgICBtYWtlX29wdGlvbigiLS1uby1jb25maXJtIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRl
c3Q9ImNvbmZpcm0iLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvIG5vdCBhc2sgdGhlIHVzZXIgZm9y
IGNvbmZpcm1hdGlvbiBiZWZvcmUgcnVubmluZyB0aGUgcXVldWUuICBEYW5nZXJvdXMhIiksCkBA
IC02Miw2ICs2NywxMiBAQCBjbGFzcyBBYnN0cmFjdFF1ZXVlKENvbW1hbmQsIFF1ZXVlRW5naW5l
RGVsZWdhdGUpOgogICAgIGRlZiBfdXBkYXRlX3N0YXR1cyhzZWxmLCBtZXNzYWdlLCBwYXRjaD1O
b25lLCByZXN1bHRzX2ZpbGU9Tm9uZSk6CiAgICAgICAgIHNlbGYudG9vbC5zdGF0dXNfYm90LnVw
ZGF0ZV9zdGF0dXMoc2VsZi5uYW1lLCBtZXNzYWdlLCBwYXRjaCwgcmVzdWx0c19maWxlKQogCisg
ICAgZGVmIF9kaWRfcGFzcyhzZWxmLCBwYXRjaCk6CisgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0
dXMoc2VsZi5fcGFzc19zdGF0dXMsIHBhdGNoKQorCisgICAgZGVmIF9kaWRfZmFpbChzZWxmLCBw
YXRjaCk6CisgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0dXMoc2VsZi5fZmFpbF9zdGF0dXMsIHBh
dGNoKQorCiAgICAgZGVmIHF1ZXVlX2xvZ19wYXRoKHNlbGYpOgogICAgICAgICByZXR1cm4gIiVz
LmxvZyIgJSBzZWxmLm5hbWUKIApAQCAtNjksMTIgKzgwLDEyIEBAIGNsYXNzIEFic3RyYWN0UXVl
dWUoQ29tbWFuZCwgUXVldWVFbmdpbmVEZWxlZ2F0ZSk6CiAgICAgICAgIHJldHVybiBvcy5wYXRo
LmpvaW4oIiVzLWxvZ3MiICUgc2VsZi5uYW1lLCAiJXMubG9nIiAlIHBhdGNoWyJidWdfaWQiXSkK
IAogICAgIGRlZiBiZWdpbl93b3JrX3F1ZXVlKHNlbGYpOgotICAgICAgICBsb2coIkNBVVRJT046
ICVzIHdpbGwgZGlzY2FyZCBhbGwgbG9jYWwgY2hhbmdlcyBpbiAlcyIgJSAoc2VsZi5uYW1lLCBz
ZWxmLnRvb2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkpCisgICAgICAgIGxvZygiQ0FVVElPTjogJXMg
d2lsbCBkaXNjYXJkIGFsbCBsb2NhbCBjaGFuZ2VzIGluIFwiJXNcIiIgJSAoc2VsZi5uYW1lLCBv
cy5wYXRoLnJlbHBhdGgoc2VsZi50b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpKSkKICAgICAgICAg
aWYgc2VsZi5vcHRpb25zLmNvbmZpcm06CiAgICAgICAgICAgICByZXNwb25zZSA9IHJhd19pbnB1
dCgiQXJlIHlvdSBzdXJlPyAgVHlwZSBcInllc1wiIHRvIGNvbnRpbnVlOiAiKQogICAgICAgICAg
ICAgaWYgKHJlc3BvbnNlICE9ICJ5ZXMiKToKICAgICAgICAgICAgICAgICBlcnJvcigiVXNlciBk
ZWNsaW5lZC4iKQotICAgICAgICBsb2coIlJ1bm5pbmcgV2ViS2l0ICVzLiAlcyIgJSAoc2VsZi5u
YW1lLCBkYXRldGltZS5ub3coKS5zdHJmdGltZShRdWV1ZUVuZ2luZS5sb2dfZGF0ZV9mb3JtYXQp
KSkKKyAgICAgICAgbG9nKCJSdW5uaW5nIFdlYktpdCAlcy4iICUgc2VsZi5uYW1lKQogCiAgICAg
ZGVmIHNob3VsZF9jb250aW51ZV93b3JrX3F1ZXVlKHNlbGYpOgogICAgICAgICByZXR1cm4gVHJ1
ZQpAQCAtMTAxLDEyICsxMTIsMTYgQEAgY2xhc3MgQWJzdHJhY3RRdWV1ZShDb21tYW5kLCBRdWV1
ZUVuZ2luZURlbGVnYXRlKToKICAgICBkZWYgbG9nX3Byb2dyZXNzKHNlbGYsIHBhdGNoX2lkcyk6
CiAgICAgICAgIGxvZygiJXMgaW4gJXMgWyVzXSIgJSAocGx1cmFsaXplKCJwYXRjaCIsIGxlbihw
YXRjaF9pZHMpKSwgc2VsZi5uYW1lLCAiLCAiLmpvaW4obWFwKHN0ciwgcGF0Y2hfaWRzKSkpKQog
Ci0gICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgZGVmIGV4
ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCwgZW5naW5lPVF1ZXVlRW5naW5lKToKICAg
ICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLnRvb2wgPSB0b29sCi0g
ICAgICAgIHdvcmtfcXVldWUgPSBRdWV1ZUVuZ2luZShzZWxmLm5hbWUsIHNlbGYpCisgICAgICAg
IHdvcmtfcXVldWUgPSBlbmdpbmUoc2VsZi5uYW1lLCBzZWxmKQogICAgICAgICByZXR1cm4gd29y
a19xdWV1ZS5ydW4oKQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF91cGRhdGVfc3RhdHVz
X2Zvcl9zY3JpcHRfZXJyb3IoY2xzLCB0b29sLCBzdGF0ZSwgc2NyaXB0X2Vycm9yKToKKyAgICAg
ICAgcmV0dXJuIHRvb2wuc3RhdHVzX2JvdC51cGRhdGVfc3RhdHVzKGNscy5uYW1lLCBzY3JpcHRf
ZXJyb3IubWVzc2FnZSwgc3RhdGVbInBhdGNoIl0sIFN0cmluZ0lPKHNjcmlwdF9lcnJvci5vdXRw
dXQpKQorCiAKIGNsYXNzIENvbW1pdFF1ZXVlKEFic3RyYWN0UXVldWUsIFN0ZXBTZXF1ZW5jZUVy
cm9ySGFuZGxlcik6CiAgICAgbmFtZSA9ICJjb21taXQtcXVldWUiCkBAIC0xMzMsMTIgKzE0OCwx
NyBAQCBjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhh
bmRsZXIpOgogICAgICAgICAgICAgcmVkX2J1aWxkZXJzX25hbWVzID0gbWFwKGxhbWJkYSBuYW1l
OiAiXCIlc1wiIiAlIG5hbWUsIHJlZF9idWlsZGVyc19uYW1lcykgIyBBZGQgcXVvdGVzIGFyb3Vu
ZCB0aGUgbmFtZXMuCiAgICAgICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKCJCdWlsZGVycyBb
JXNdIGFyZSByZWQuIFNlZSBodHRwOi8vYnVpbGQud2Via2l0Lm9yZy4iICUgIiwgIi5qb2luKHJl
ZF9idWlsZGVyc19uYW1lcyksIE5vbmUpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAg
ICAgc2VsZi5fdXBkYXRlX3N0YXR1cygiTGFuZGluZyBwYXRjaCAlcyBmcm9tIGJ1ZyAlcy4iICUg
KHBhdGNoWyJpZCJdLCBwYXRjaFsiYnVnX2lkIl0pLCBwYXRjaCkKKyAgICAgICAgc2VsZi5fdXBk
YXRlX3N0YXR1cygiTGFuZGluZyBwYXRjaC4iLCBwYXRjaCkKICAgICAgICAgcmV0dXJuIFRydWUK
IAogICAgIGRlZiBwcm9jZXNzX3dvcmtfaXRlbShzZWxmLCBwYXRjaCk6Ci0gICAgICAgIHNlbGYu
X2NjX3dhdGNoZXJzKHBhdGNoWyJidWdfaWQiXSkKLSAgICAgICAgc2VsZi5ydW5fYnVnemlsbGFf
dG9vbChbImxhbmQtYXR0YWNobWVudCIsICItLWZvcmNlLWNsZWFuIiwgIi0tbm9uLWludGVyYWN0
aXZlIiwgIi0tcGFyZW50LWNvbW1hbmQ9Y29tbWl0LXF1ZXVlIiwgIi0tcXVpZXQiLCBwYXRjaFsi
aWQiXV0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX2NjX3dhdGNoZXJzKHBhdGNo
WyJidWdfaWQiXSkKKyAgICAgICAgICAgIHNlbGYucnVuX2J1Z3ppbGxhX3Rvb2woWyJsYW5kLWF0
dGFjaG1lbnQiLCAiLS1mb3JjZS1jbGVhbiIsICItLW5vbi1pbnRlcmFjdGl2ZSIsICItLXBhcmVu
dC1jb21tYW5kPWNvbW1pdC1xdWV1ZSIsICItLXF1aWV0IiwgcGF0Y2hbImlkIl1dKQorICAgICAg
ICAgICAgc2VsZi5fZGlkX3Bhc3MocGF0Y2gpCisgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwg
ZToKKyAgICAgICAgICAgIHNlbGYuX2RpZF9mYWlsKHBhdGNoKQorICAgICAgICAgICAgcmFpc2Ug
ZQogCiAgICAgZGVmIGhhbmRsZV91bmV4cGVjdGVkX2Vycm9yKHNlbGYsIHBhdGNoLCBtZXNzYWdl
KToKICAgICAgICAgc2VsZi50b29sLmJ1Z3MucmVqZWN0X3BhdGNoX2Zyb21fY29tbWl0X3F1ZXVl
KHBhdGNoWyJpZCJdLCBtZXNzYWdlKQpAQCAtMTU0LDkgKzE3NCw4IEBAIGNsYXNzIENvbW1pdFF1
ZXVlKEFic3RyYWN0UXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcik6CiAKICAgICBAY2xh
c3NtZXRob2QKICAgICBkZWYgaGFuZGxlX3NjcmlwdF9lcnJvcihjbHMsIHRvb2wsIHN0YXRlLCBz
Y3JpcHRfZXJyb3IpOgotICAgICAgICBwYXRjaCA9IHN0YXRlWyJwYXRjaCJdCi0gICAgICAgIHN0
YXR1c19pZCA9IHRvb2wuc3RhdHVzX2JvdC51cGRhdGVfc3RhdHVzKGNscy5uYW1lLCAicGF0Y2gg
JXMgZmFpbGVkOiAlcyIgJSAocGF0Y2hbJ2lkJ10sIHNjcmlwdF9lcnJvci5tZXNzYWdlKSwgcGF0
Y2gsIFN0cmluZ0lPKHNjcmlwdF9lcnJvci5vdXRwdXQpKQotICAgICAgICB0b29sLmJ1Z3MucmVq
ZWN0X3BhdGNoX2Zyb21fY29tbWl0X3F1ZXVlKHBhdGNoWyJpZCJdLCBjbHMuX2Vycm9yX21lc3Nh
Z2VfZm9yX2J1Zyh0b29sLCBzdGF0dXNfaWQsIHNjcmlwdF9lcnJvcikpCisgICAgICAgIHN0YXR1
c19pZCA9IGNscy5fdXBkYXRlX3N0YXR1c19mb3Jfc2NyaXB0X2Vycm9yKHRvb2wsIHN0YXRlLCBz
Y3JpcHRfZXJyb3IpCisgICAgICAgIHRvb2wuYnVncy5yZWplY3RfcGF0Y2hfZnJvbV9jb21taXRf
cXVldWUoc3RhdGVbInBhdGNoIl1bImlkIl0sIGNscy5fZXJyb3JfbWVzc2FnZV9mb3JfYnVnKHRv
b2wsIHN0YXR1c19pZCwgc2NyaXB0X2Vycm9yKSkKIAogCiBjbGFzcyBBYnN0cmFjdFJldmlld1F1
ZXVlKEFic3RyYWN0UXVldWUsIFBlcnNpc3RlbnRQYXRjaENvbGxlY3Rpb25EZWxlZ2F0ZSwgU3Rl
cFNlcXVlbmNlRXJyb3JIYW5kbGVyKToKQEAgLTIwOCw3ICsyMjcsNyBAQCBjbGFzcyBTdHlsZVF1
ZXVlKEFic3RyYWN0UmV2aWV3UXVldWUpOgogICAgICAgICBBYnN0cmFjdFJldmlld1F1ZXVlLl9f
aW5pdF9fKHNlbGYpCiAKICAgICBkZWYgc2hvdWxkX3Byb2NlZWRfd2l0aF93b3JrX2l0ZW0oc2Vs
ZiwgcGF0Y2gpOgotICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKCJDaGVja2luZyBzdHlsZSBm
b3IgcGF0Y2ggJXMgb24gYnVnICVzLiIgJSAocGF0Y2hbImlkIl0sIHBhdGNoWyJidWdfaWQiXSks
IHBhdGNoKQorICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKCJDaGVja2luZyBzdHlsZS4iLCBw
YXRjaCkKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBwcm9jZXNzX3dvcmtfaXRlbShz
ZWxmLCBwYXRjaCk6CkBAIC0yMTYsMTQgKzIzNSwxNSBAQCBjbGFzcyBTdHlsZVF1ZXVlKEFic3Ry
YWN0UmV2aWV3UXVldWUpOgogICAgICAgICAgICAgc2VsZi5ydW5fYnVnemlsbGFfdG9vbChbImNo
ZWNrLXN0eWxlIiwgIi0tZm9yY2UtY2xlYW4iLCAiLS1ub24taW50ZXJhY3RpdmUiLCAiLS1wYXJl
bnQtY29tbWFuZD1zdHlsZS1xdWV1ZSIsIHBhdGNoWyJpZCJdXSkKICAgICAgICAgICAgIG1lc3Nh
Z2UgPSAiJXMgcmFuIGNoZWNrLXdlYmtpdC1zdHlsZSBvbiBhdHRhY2htZW50ICVzIHdpdGhvdXQg
YW55IGVycm9ycy4iICUgKHNlbGYubmFtZSwgcGF0Y2hbImlkIl0pCiAgICAgICAgICAgICBzZWxm
LnRvb2wuYnVncy5wb3N0X2NvbW1lbnRfdG9fYnVnKHBhdGNoWyJidWdfaWQiXSwgbWVzc2FnZSwg
Y2M9c2VsZi53YXRjaGVycykKLSAgICAgICAgICAgIHNlbGYuX3BhdGNoZXMuZGlkX3Bhc3MocGF0
Y2gpCisgICAgICAgICAgICBzZWxmLl9kaWRfcGFzcyhwYXRjaCkKICAgICAgICAgZXhjZXB0IFNj
cmlwdEVycm9yLCBlOgotICAgICAgICAgICAgc2VsZi5fcGF0Y2hlcy5kaWRfZmFpbChwYXRjaCkK
KyAgICAgICAgICAgIHNlbGYuX2RpZF9mYWlsKHBhdGNoKQogICAgICAgICAgICAgcmFpc2UgZQog
CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGhhbmRsZV9zY3JpcHRfZXJyb3IoY2xzLCB0b29s
LCBzdGF0ZSwgc2NyaXB0X2Vycm9yKToKKyAgICAgICAgc3RhdHVzX2lkID0gY2xzLl91cGRhdGVf
c3RhdHVzX2Zvcl9zY3JpcHRfZXJyb3IodG9vbCwgc3RhdGUsIHNjcmlwdF9lcnJvcikKICAgICAg
ICAgaWYgbm90IHNjcmlwdF9lcnJvci5jb21tYW5kX25hbWUoKSA9PSAiY2hlY2std2Via2l0LXN0
eWxlIjoKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBtZXNzYWdlID0gIkF0dGFjaG1lbnQg
JXMgZGlkIG5vdCBwYXNzICVzOlxuXG4lcyIgJSAoc3RhdGVbInBhdGNoIl1bImlkIl0sIGNscy5u
YW1lLCBzY3JpcHRfZXJyb3IubWVzc2FnZV93aXRoX291dHB1dChvdXRwdXRfbGltaXQ9NSoxMDI0
KSkKKyAgICAgICAgbWVzc2FnZSA9ICJBdHRhY2htZW50ICVzIGRpZCBub3QgcGFzcyAlczpcblxu
JXMiICUgKHN0YXRlWyJwYXRjaCJdWyJpZCJdLCBjbHMubmFtZSwgc2NyaXB0X2Vycm9yLm1lc3Nh
Z2Vfd2l0aF9vdXRwdXQob3V0cHV0X2xpbWl0PTMqMTAyNCkpCiAgICAgICAgIHRvb2wuYnVncy5w
b3N0X2NvbW1lbnRfdG9fYnVnKHN0YXRlWyJwYXRjaCJdWyJidWdfaWQiXSwgbWVzc2FnZSwgY2M9
Y2xzLndhdGNoZXJzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2Nv
bW1hbmRzL3F1ZXVlc191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9j
b21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKaW5kZXggOWE2NDYwNC4uYmVlYjNmNyAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXVlc191bml0dGVz
dC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvcXVldWVzX3Vu
aXR0ZXN0LnB5CkBAIC0zMCw2ICszMCw3IEBAIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIG1vZHVs
ZXMuY29tbWFuZHMuY29tbWFuZHRlc3QgaW1wb3J0IENvbW1hbmRzVGVzdAogZnJvbSBtb2R1bGVz
LmNvbW1hbmRzLnF1ZXVlcyBpbXBvcnQgKgorZnJvbSBtb2R1bGVzLmNvbW1hbmRzLnF1ZXVlc3Rl
c3QgaW1wb3J0IFF1ZXVlc1Rlc3QKIGZyb20gbW9kdWxlcy5tb2NrX2J1Z3ppbGxhdG9vbCBpbXBv
cnQgTW9ja0J1Z3ppbGxhVG9vbAogZnJvbSBtb2R1bGVzLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91
dHB1dENhcHR1cmUKIApAQCAtNTksMyArNjAsMjEgQEAgY2xhc3MgQWJzdHJhY3RRdWV1ZVRlc3Qo
Q29tbWFuZHNUZXN0KToKICAgICBkZWYgdGVzdF9ydW5fYnVnemlsbGFfdG9vbChzZWxmKToKICAg
ICAgICAgc2VsZi5fYXNzZXJ0X3J1bl9idWd6aWxsYV90b29sKFsxXSkKICAgICAgICAgc2VsZi5f
YXNzZXJ0X3J1bl9idWd6aWxsYV90b29sKFsib25lIiwgMl0pCisKKworY2xhc3MgQ29tbWl0UXVl
dWVUZXN0KFF1ZXVlc1Rlc3QpOgorICAgIGRlZiB0ZXN0X3N0eWxlX3F1ZXVlKHNlbGYpOgorICAg
ICAgICBleHBlY3RlZF9zdGRlcnIgPSB7CisgICAgICAgICAgICAiYmVnaW5fd29ya19xdWV1ZSIg
OiAiQ0FVVElPTjogY29tbWl0LXF1ZXVlIHdpbGwgZGlzY2FyZCBhbGwgbG9jYWwgY2hhbmdlcyBp
biBcIi5cIlxuUnVubmluZyBXZWJLaXQgY29tbWl0LXF1ZXVlLlxuIiwKKyAgICAgICAgICAgICJu
ZXh0X3dvcmtfaXRlbSIgOiAiMiBwYXRjaGVzIGluIGNvbW1pdC1xdWV1ZSBbMTk3LCAxMjhdXG4i
LAorICAgICAgICB9CisgICAgICAgIHNlbGYuYXNzZXJ0X3F1ZXVlX291dHB1dHMoQ29tbWl0UXVl
dWUoKSwgc2VsZi5tb2NrX3dvcmtfaXRlbSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVy
cikKKworCitjbGFzcyBTdHlsZVF1ZXVlVGVzdChRdWV1ZXNUZXN0KToKKyAgICBkZWYgdGVzdF9z
dHlsZV9xdWV1ZShzZWxmKToKKyAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0geworICAgICAgICAg
ICAgImJlZ2luX3dvcmtfcXVldWUiIDogIkNBVVRJT046IHN0eWxlLXF1ZXVlIHdpbGwgZGlzY2Fy
ZCBhbGwgbG9jYWwgY2hhbmdlcyBpbiBcIi5cIlxuUnVubmluZyBXZWJLaXQgc3R5bGUtcXVldWUu
XG4iLAorICAgICAgICAgICAgImhhbmRsZV91bmV4cGVjdGVkX2Vycm9yIiA6ICJNb2NrIGVycm9y
IG1lc3NhZ2VcbiIsCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5hc3NlcnRfcXVldWVfb3V0cHV0
cyhTdHlsZVF1ZXVlKCksIHNlbGYubW9ja193b3JrX2l0ZW0sIGV4cGVjdGVkX3N0ZGVycj1leHBl
Y3RlZF9zdGRlcnIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29t
bWFuZHMvcXVldWVzdGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5k
cy9xdWV1ZXN0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjA3
NWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFu
ZHMvcXVldWVzdGVzdC5weQpAQCAtMCwwICsxLDk3IEBACisjIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0
IHVuaXR0ZXN0CisKK2Zyb20gbW9kdWxlcy5tb2NrIGltcG9ydCBNb2NrCitmcm9tIG1vZHVsZXMu
bW9ja19idWd6aWxsYXRvb2wgaW1wb3J0IE1vY2tCdWd6aWxsYVRvb2wKK2Zyb20gbW9kdWxlcy5v
dXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCisKKworY2xhc3MgTW9ja1F1ZXVlRW5n
aW5lKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHF1ZXVlKToKKyAgICAg
ICAgcGFzcworCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFF1
ZXVlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vY2tfd29ya19pdGVtID0geworICAg
ICAgICAiaWQiIDogMTIzNCwKKyAgICAgICAgImJ1Z19pZCIgOiAzNDUsCisgICAgfQorCisgICAg
ZGVmIGFzc2VydF9xdWV1ZV9vdXRwdXRzKHNlbGYsIHF1ZXVlLCBhcmdzPU5vbmUsIHdvcmtfaXRl
bT1Ob25lLCBleHBlY3RlZF9zdGRvdXQ9Tm9uZSwgZXhwZWN0ZWRfc3RkZXJyPU5vbmUsIG9wdGlv
bnM9TW9jaygpLCB0b29sPU1vY2tCdWd6aWxsYVRvb2woKSk6CisgICAgICAgIGlmIG5vdCBleHBl
Y3RlZF9zdGRvdXQ6CisgICAgICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSB7fQorICAgICAgICBp
ZiBub3QgZXhwZWN0ZWRfc3RkZXJyOgorICAgICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0ge30K
KyAgICAgICAgaWYgbm90IGFyZ3M6CisgICAgICAgICAgICBhcmdzID0gW10KKyAgICAgICAgaWYg
bm90IHdvcmtfaXRlbToKKyAgICAgICAgICAgIHdvcmtfaXRlbSA9IHNlbGYubW9ja193b3JrX2l0
ZW0KKyAgICAgICAgb3B0aW9ucy5jb25maXJtID0gRmFsc2UgIyBGSVhNRTogV2Ugc2hvdWxkIGhh
dmUgYSB0b29sLnVzZXIgdGhhdCB3ZSBjYW4gbW9jay4KKworICAgICAgICBxdWV1ZS5leGVjdXRl
KG9wdGlvbnMsIGFyZ3MsIHRvb2wsIGVuZ2luZT1Nb2NrUXVldWVFbmdpbmUpCisKKyAgICAgICAg
T3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsCisgICAgICAgICAgICAgICAgcXVl
dWUucXVldWVfbG9nX3BhdGgsCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVj
dGVkX3N0ZG91dC5nZXQoInF1ZXVlX2xvZ19wYXRoIiwgIiIpLAorICAgICAgICAgICAgICAgIGV4
cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIuZ2V0KCJxdWV1ZV9sb2dfcGF0aCIsICIiKSkK
KyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsCisgICAgICAgICAg
ICAgICAgcXVldWUud29ya19pdGVtX2xvZ19wYXRoLAorICAgICAgICAgICAgICAgIGFyZ3M9W3dv
cmtfaXRlbV0sCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91
dC5nZXQoIndvcmtfaXRlbV9sb2dfcGF0aCIsICIiKSwKKyAgICAgICAgICAgICAgICBleHBlY3Rl
ZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLmdldCgid29ya19pdGVtX2xvZ19wYXRoIiwgIiIpKQor
ICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwKKyAgICAgICAgICAg
ICAgICBxdWV1ZS5iZWdpbl93b3JrX3F1ZXVlLAorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3N0
ZG91dD1leHBlY3RlZF9zdGRvdXQuZ2V0KCJiZWdpbl93b3JrX3F1ZXVlIiwgIiIpLAorICAgICAg
ICAgICAgICAgIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIuZ2V0KCJiZWdpbl93b3Jr
X3F1ZXVlIiwgIiIpKQorICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2Vs
ZiwKKyAgICAgICAgICAgICAgICBxdWV1ZS5zaG91bGRfY29udGludWVfd29ya19xdWV1ZSwKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LmdldCgic2hvdWxk
X2NvbnRpbnVlX3dvcmtfcXVldWUiLCAiIiksIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRl
cnIuZ2V0KCJzaG91bGRfY29udGludWVfd29ya19xdWV1ZSIsICIiKSkKKyAgICAgICAgT3V0cHV0
Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsCisgICAgICAgICAgICAgICAgcXVldWUubmV4
dF93b3JrX2l0ZW0sCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0
ZG91dC5nZXQoIm5leHRfd29ya19pdGVtIiwgIiIpLAorICAgICAgICAgICAgICAgIGV4cGVjdGVk
X3N0ZGVycj1leHBlY3RlZF9zdGRlcnIuZ2V0KCJuZXh0X3dvcmtfaXRlbSIsICIiKSkKKyAgICAg
ICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsCisgICAgICAgICAgICAgICAg
cXVldWUuc2hvdWxkX3Byb2NlZWRfd2l0aF93b3JrX2l0ZW0sCisgICAgICAgICAgICAgICAgYXJn
cz1bd29ya19pdGVtXSwKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRf
c3Rkb3V0LmdldCgic2hvdWxkX3Byb2NlZWRfd2l0aF93b3JrX2l0ZW0iLCAiIiksCisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVyci5nZXQoInNob3VsZF9wcm9j
ZWVkX3dpdGhfd29ya19pdGVtIiwgIiIpKQorICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0
X291dHB1dHMoc2VsZiwKKyAgICAgICAgICAgICAgICBxdWV1ZS5wcm9jZXNzX3dvcmtfaXRlbSwK
KyAgICAgICAgICAgICAgICBhcmdzPVt3b3JrX2l0ZW1dLAorICAgICAgICAgICAgICAgIGV4cGVj
dGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQuZ2V0KCJwcm9jZXNzX3dvcmtfaXRlbSIsICIiKSwK
KyAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLmdldCgicHJv
Y2Vzc193b3JrX2l0ZW0iLCAiIikpCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0
cHV0cyhzZWxmLAorICAgICAgICAgICAgICAgIHF1ZXVlLmhhbmRsZV91bmV4cGVjdGVkX2Vycm9y
LAorICAgICAgICAgICAgICAgIGFyZ3M9W3dvcmtfaXRlbSwgIk1vY2sgZXJyb3IgbWVzc2FnZSJd
LAorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQuZ2V0KCJo
YW5kbGVfdW5leHBlY3RlZF9lcnJvciIsICIiKSwKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9z
dGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLmdldCgiaGFuZGxlX3VuZXhwZWN0ZWRfZXJyb3IiLCAiIikp
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvbW9ja19idWd6aWxsYXRv
b2wucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvbW9ja19idWd6aWxsYXRvb2wucHkK
aW5kZXggMGJhOWQwZC4uMzUxMzk4ZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9t
b2R1bGVzL21vY2tfYnVnemlsbGF0b29sLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9k
dWxlcy9tb2NrX2J1Z3ppbGxhdG9vbC5weQpAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBNb2NrQnVn
emlsbGEoTW9jayk6CiAgICAgZGVmIGZldGNoX2F0dGFjaG1lbnRfaWRzX2Zyb21fcmV2aWV3X3F1
ZXVlKHNlbGYpOgogICAgICAgICByZXR1cm4gWzE5NywgMTI4XQogCi0gICAgZGVmIGZldGNoX3Bh
dGNoZXNfZnJvbV9jb21taXRfcXVldWUoc2VsZik6CisgICAgZGVmIGZldGNoX3BhdGNoZXNfZnJv
bV9jb21taXRfcXVldWUoc2VsZiwgcmVqZWN0X2ludmFsaWRfcGF0Y2hlcz1GYWxzZSk6CiAgICAg
ICAgIHJldHVybiBbc2VsZi5wYXRjaDEsIHNlbGYucGF0Y2gyXQogCiAgICAgZGVmIGZldGNoX3Bh
dGNoZXNfZnJvbV9wZW5kaW5nX2NvbW1pdF9saXN0KHNlbGYpOgpAQCAtMTQ2LDYgKzE0NiwxMiBA
QCBjbGFzcyBNb2NrU3RhdHVzQm90KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgog
ICAgICAgICBzZWxmLnN0YXR1c2JvdF9ob3N0ID0gImV4YW1wbGUuY29tIgogCisgICAgZGVmIHBh
dGNoX3N0YXR1cyhzZWxmLCBxdWV1ZV9uYW1lLCBwYXRjaF9pZCk6CisgICAgICAgIHJldHVybiBO
b25lCisKKyAgICBkZWYgdXBkYXRlX3N0YXR1cyhzZWxmLCBxdWV1ZV9uYW1lLCBzdGF0dXMsIHBh
dGNoPU5vbmUsIHJlc3VsdHNfZmlsZT1Ob25lKToKKyAgICAgICAgcmV0dXJuIDE4NworCiAKIGNs
YXNzIE1vY2tCdWd6aWxsYVRvb2woKToKICAgICBkZWYgX19pbml0X18oc2VsZik6CmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvcGF0Y2hjb2xsZWN0aW9uLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3BhdGNoY29sbGVjdGlvbi5weQppbmRleCBhZGQ4MTI5
Li4yNDZmNDg3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvcGF0Y2hj
b2xsZWN0aW9uLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9wYXRjaGNvbGxl
Y3Rpb24ucHkKQEAgLTM5LDkgKzM5LDYgQEAgY2xhc3MgUGVyc2lzdGVudFBhdGNoQ29sbGVjdGlv
bkRlbGVnYXRlOgogCiAKIGNsYXNzIFBlcnNpc3RlbnRQYXRjaENvbGxlY3Rpb246Ci0gICAgX2lu
aXRpYWxfc3RhdHVzID0gIlBlbmRpbmciCi0gICAgX3Bhc3Nfc3RhdHVzID0gIlBhc3MiCi0gICAg
X2ZhaWxfc3RhdHVzID0gIkZhaWwiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlbGVnYXRlKToK
ICAgICAgICAgc2VsZi5fZGVsZWdhdGUgPSBkZWxlZ2F0ZQogICAgICAgICBzZWxmLl9uYW1lID0g
c2VsZi5fZGVsZWdhdGUuY29sbGVjdGlvbl9uYW1lKCkKQEAgLTY0LDggKzYxLDMgQEAgY2xhc3Mg
UGVyc2lzdGVudFBhdGNoQ29sbGVjdGlvbjoKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHBhdGNoX2lkCiAKLSAgICBkZWYgZGlkX3Bhc3Moc2VsZiwg
cGF0Y2gpOgotICAgICAgICBzZWxmLl9zdGF0dXMudXBkYXRlX3N0YXR1cyhzZWxmLl9uYW1lLCBz
ZWxmLl9wYXNzX3N0YXR1cywgcGF0Y2gpCi0KLSAgICBkZWYgZGlkX2ZhaWwoc2VsZiwgcGF0Y2gp
OgotICAgICAgICBzZWxmLl9zdGF0dXMudXBkYXRlX3N0YXR1cyhzZWxmLl9uYW1lLCBzZWxmLl9m
YWlsX3N0YXR1cywgcGF0Y2gpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVs
ZXMvcXVldWVlbmdpbmUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvcXVldWVlbmdp
bmUucHkKaW5kZXggNmNiMWUxMy4uYzI2M2MwNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9tb2R1bGVzL3F1ZXVlZW5naW5lLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9k
dWxlcy9xdWV1ZWVuZ2luZS5weQpAQCAtMzksOSArMzksNiBAQCBmcm9tIG1vZHVsZXMubG9nZ2lu
ZyBpbXBvcnQgbG9nLCBPdXRwdXRUZWUKIGZyb20gbW9kdWxlcy5zdGF0dXNib3QgaW1wb3J0IFN0
YXR1c0JvdAogCiBjbGFzcyBRdWV1ZUVuZ2luZURlbGVnYXRlOgotICAgIGRlZiBxdWV1ZV9uYW1l
KHNlbGYpOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBt
dXN0IGltcGxlbWVudCIKLQogICAgIGRlZiBxdWV1ZV9sb2dfcGF0aChzZWxmKToKICAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC11bml0dGVzdHMgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdW5pdHRlc3RzCmluZGV4IDU3NmE1ZTIuLmM0
MjUyZDIgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC11bml0dGVz
dHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXVuaXR0ZXN0cwpAQCAtMzUs
NiArMzUsNyBAQCBmcm9tIG1vZHVsZXMuYnVpbGRib3RfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20g
bW9kdWxlcy5idWlsZHN0ZXBzX3VuaXR0ZXN0IGltcG9ydCAqCiBmcm9tIG1vZHVsZXMuY2hhbmdl
bG9nc191bml0dGVzdCBpbXBvcnQgKgogZnJvbSBtb2R1bGVzLmNvbW1hbmRzLmRvd25sb2FkX3Vu
aXR0ZXN0IGltcG9ydCAqCitmcm9tIG1vZHVsZXMuY29tbWFuZHMuZWFybHlfd2FybmluZ19zeXN0
ZW1fdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy5jb21tYW5kcy51cGxvYWRfdW5pdHRl
c3QgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy5jb21tYW5kcy5xdWVyaWVzX3VuaXR0ZXN0IGltcG9y
dCAqCiBmcm9tIG1vZHVsZXMuY29tbWFuZHMucXVldWVzX3VuaXR0ZXN0IGltcG9ydCAqCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45302</attachid>
            <date>2009-12-20 17:07:08 -0800</date>
            <delta_ts>2009-12-20 18:42:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32797-20091220170706.patch</filename>
            <type>text/plain</type>
            <size>22519</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA3ZmRkMzAzLi5mYTMxYjRkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMTIt
MjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbYnp0XSBPcHRpbWl6ZSBzdGF0dXMgdXBkYXRl
cyBmb3IgbmV3IGRhc2hib2FyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzI3OTcKKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBxdWV1ZXMg
c2xpZ2h0bHkgbW9yZSBjaGF0dHkgd2l0aCB0aGUgd2ViIHNlcnZpY2UuCisgICAgICAgIEFsc28s
IHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBzb21lIHRlc3RpbmcgZm9yIHRoZSBxdWV1ZXMhCisKKyAg
ICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZWFybHlfd2FybmluZ19zeXN0ZW0ucHk6
CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Vhcmx5X3dhcm5pbmdfc3lzdGVt
X3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY29tbWFuZHMv
cXVldWVzLnB5OgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9xdWV1ZXNfdW5p
dHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXVlc3Rlc3Qu
cHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9tb2NrX2J1Z3ppbGxhdG9vbC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvcGF0Y2hjb2xsZWN0aW9uLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvbW9kdWxlcy9xdWV1ZWVuZ2luZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3J1
bi13ZWJraXQtdW5pdHRlc3RzOgorCiAyMDA5LTEyLTIwICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8
YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBT
aWx2YS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9l
YXJseV93YXJuaW5nX3N5c3RlbS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21t
YW5kcy9lYXJseV93YXJuaW5nX3N5c3RlbS5weQppbmRleCAzZTlkMmM3Li4yNmM4Mjc3IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvZWFybHlfd2Fybmlu
Z19zeXN0ZW0ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Vh
cmx5X3dhcm5pbmdfc3lzdGVtLnB5CkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEFic3RyYWN0RWFy
bHlXYXJuaW5nU3lzdGVtKEFic3RyYWN0UmV2aWV3UXVldWUpOgogICAgIGRlZiBzaG91bGRfcHJv
Y2VlZF93aXRoX3dvcmtfaXRlbShzZWxmLCBwYXRjaCk6CiAgICAgICAgIHRyeToKICAgICAgICAg
ICAgIHNlbGYucnVuX2J1Z3ppbGxhX3Rvb2woWyJidWlsZCIsIHNlbGYucG9ydC5mbGFnKCksICIt
LWZvcmNlLWNsZWFuIiwgIi0tcXVpZXQiXSkKKyAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0
dXMoIkJ1aWxkaW5nLiIsIHBhdGNoKQogICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CiAg
ICAgICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKCJVbmFibGUgdG8gcGVyZm9ybSBhIGJ1aWxk
LiIpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTU4LDIxICs1OSwyMCBAQCBjbGFzcyBB
YnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbShBYnN0cmFjdFJldmlld1F1ZXVlKToKICAgICAgICAg
ICAgICAgICAiLS1wYXJlbnQtY29tbWFuZD0lcyIgJSBzZWxmLm5hbWUsCiAgICAgICAgICAgICAg
ICAgIi0tbm8tdXBkYXRlIiwKICAgICAgICAgICAgICAgICBwYXRjaFsiaWQiXV0pCi0gICAgICAg
ICAgICBzZWxmLl9wYXRjaGVzLmRpZF9wYXNzKHBhdGNoKQorICAgICAgICAgICAgc2VsZi5fZGlk
X3Bhc3MocGF0Y2gpCiAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKLSAgICAgICAgICAg
IHNlbGYuX3BhdGNoZXMuZGlkX2ZhaWwocGF0Y2gpCisgICAgICAgICAgICBzZWxmLl9kaWRfZmFp
bChwYXRjaCkKICAgICAgICAgICAgIHJhaXNlIGUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRl
ZiBoYW5kbGVfc2NyaXB0X2Vycm9yKGNscywgdG9vbCwgc3RhdGUsIHNjcmlwdF9lcnJvcik6Cisg
ICAgICAgIHN0YXR1c19pZCA9IGNscy5fdXBkYXRlX3N0YXR1c19mb3Jfc2NyaXB0X2Vycm9yKHRv
b2wsIHN0YXRlLCBzY3JpcHRfZXJyb3IpCiAgICAgICAgICMgRklYTUU6IFRoaXMgd29uJ3QgYmUg
cmlnaHQgZm9yIHBvcnRzIHRoYXQgZG9uJ3QgdXNlIGJ1aWxkLXdlYmtpdCEKICAgICAgICAgaWYg
bm90IHNjcmlwdF9lcnJvci5jb21tYW5kX25hbWUoKSA9PSAiYnVpbGQtd2Via2l0IjoKICAgICAg
ICAgICAgIHJldHVybgotICAgICAgICBwYXRjaCA9IHN0YXRlWyJwYXRjaCJdCi0gICAgICAgIHN0
YXR1c19pZCA9IHRvb2wuc3RhdHVzX2JvdC51cGRhdGVfc3RhdHVzKGNscy5uYW1lLCAicGF0Y2gg
JXMgZmFpbGVkOiAlcyIgJSAocGF0Y2hbImlkIl0sIHNjcmlwdF9lcnJvci5tZXNzYWdlKSwgcGF0
Y2gsIFN0cmluZ0lPKHNjcmlwdF9lcnJvci5vdXRwdXQpKQogICAgICAgICByZXN1bHRzX2xpbmsg
PSB0b29sLnN0YXR1c19ib3QucmVzdWx0c191cmxfZm9yX3N0YXR1cyhzdGF0dXNfaWQpCi0gICAg
ICAgIG1lc3NhZ2UgPSAiQXR0YWNobWVudCAlcyBkaWQgbm90IGJ1aWxkIG9uICVzOlxuQnVpbGQg
b3V0cHV0OiAlcyIgJSAocGF0Y2hbImlkIl0sIGNscy5wb3J0X25hbWUsIHJlc3VsdHNfbGluaykK
LSAgICAgICAgdG9vbC5idWdzLnBvc3RfY29tbWVudF90b19idWcocGF0Y2hbImJ1Z19pZCJdLCBt
ZXNzYWdlLCBjYz1jbHMud2F0Y2hlcnMpCisgICAgICAgIG1lc3NhZ2UgPSAiQXR0YWNobWVudCAl
cyBkaWQgbm90IGJ1aWxkIG9uICVzOlxuQnVpbGQgb3V0cHV0OiAlcyIgJSAoc3RhdGVbInBhdGNo
Il1bImlkIl0sIGNscy5wb3J0X25hbWUsIHJlc3VsdHNfbGluaykKKyAgICAgICAgdG9vbC5idWdz
LnBvc3RfY29tbWVudF90b19idWcoc3RhdGVbInBhdGNoIl1bImJ1Z19pZCJdLCBtZXNzYWdlLCBj
Yz1jbHMud2F0Y2hlcnMpCiAKIAogY2xhc3MgR3RrRVdTKEFic3RyYWN0RWFybHlXYXJuaW5nU3lz
dGVtKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5kcy9l
YXJseV93YXJuaW5nX3N5c3RlbV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9k
dWxlcy9jb21tYW5kcy9lYXJseV93YXJuaW5nX3N5c3RlbV91bml0dGVzdC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjY0ZmY1Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL2Vhcmx5X3dhcm5pbmdfc3lzdGVtX3Vu
aXR0ZXN0LnB5CkBAIC0wLDAgKzEsNTUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRl
c3QKKworZnJvbSBtb2R1bGVzLmNvbW1hbmRzLmVhcmx5X3dhcm5pbmdfc3lzdGVtIGltcG9ydCAq
Citmcm9tIG1vZHVsZXMuY29tbWFuZHMucXVldWVzdGVzdCBpbXBvcnQgUXVldWVzVGVzdAorZnJv
bSBtb2R1bGVzLm1vY2sgaW1wb3J0IE1vY2sKKworY2xhc3MgRWFybHlXYXJuaW5nU3l0ZW1UZXN0
KFF1ZXVlc1Rlc3QpOgorICAgIGRlZiB0ZXN0X2Nocm9taXVtX2V3cyhzZWxmKToKKyAgICAgICAg
ZXhwZWN0ZWRfc3RkZXJyID0geworICAgICAgICAgICAgImJlZ2luX3dvcmtfcXVldWUiIDogIkNB
VVRJT046IGNocm9taXVtLWV3cyB3aWxsIGRpc2NhcmQgYWxsIGxvY2FsIGNoYW5nZXMgaW4gXCIu
XCJcblJ1bm5pbmcgV2ViS2l0IGNocm9taXVtLWV3cy5cbiIsCisgICAgICAgICAgICAiaGFuZGxl
X3VuZXhwZWN0ZWRfZXJyb3IiIDogIk1vY2sgZXJyb3IgbWVzc2FnZVxuIiwKKyAgICAgICAgfQor
ICAgICAgICBzZWxmLmFzc2VydF9xdWV1ZV9vdXRwdXRzKENocm9taXVtRVdTKCksIGV4cGVjdGVk
X3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisKKyAgICBkZWYgdGVzdF9xdF9ld3Moc2VsZik6Cisg
ICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9IHsKKyAgICAgICAgICAgICJiZWdpbl93b3JrX3F1ZXVl
IiA6ICJDQVVUSU9OOiBxdC1ld3Mgd2lsbCBkaXNjYXJkIGFsbCBsb2NhbCBjaGFuZ2VzIGluIFwi
LlwiXG5SdW5uaW5nIFdlYktpdCBxdC1ld3MuXG4iLAorICAgICAgICAgICAgImhhbmRsZV91bmV4
cGVjdGVkX2Vycm9yIiA6ICJNb2NrIGVycm9yIG1lc3NhZ2VcbiIsCisgICAgICAgIH0KKyAgICAg
ICAgc2VsZi5hc3NlcnRfcXVldWVfb3V0cHV0cyhRdEVXUygpLCBleHBlY3RlZF9zdGRlcnI9ZXhw
ZWN0ZWRfc3RkZXJyKQorCisgICAgZGVmIHRlc3RfZ3RrX2V3cyhzZWxmKToKKyAgICAgICAgZXhw
ZWN0ZWRfc3RkZXJyID0geworICAgICAgICAgICAgImJlZ2luX3dvcmtfcXVldWUiIDogIkNBVVRJ
T046IGd0ay1ld3Mgd2lsbCBkaXNjYXJkIGFsbCBsb2NhbCBjaGFuZ2VzIGluIFwiLlwiXG5SdW5u
aW5nIFdlYktpdCBndGstZXdzLlxuIiwKKyAgICAgICAgICAgICJoYW5kbGVfdW5leHBlY3RlZF9l
cnJvciIgOiAiTW9jayBlcnJvciBtZXNzYWdlXG4iLAorICAgICAgICB9CisgICAgICAgIHNlbGYu
YXNzZXJ0X3F1ZXVlX291dHB1dHMoR3RrRVdTKCksIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9z
dGRlcnIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMv
cXVldWVzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXVlcy5w
eQppbmRleCBlNmUxNTAzLi43MmY4MmNmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L21vZHVsZXMvY29tbWFuZHMvcXVldWVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9k
dWxlcy9jb21tYW5kcy9xdWV1ZXMucHkKQEAgLTQ3LDYgKzQ3LDExIEBAIGNsYXNzIEFic3RyYWN0
UXVldWUoQ29tbWFuZCwgUXVldWVFbmdpbmVEZWxlZ2F0ZSk6CiAgICAgd2F0Y2hlcnMgPSBbCiAg
ICAgICAgICJ3ZWJraXQtYm90LXdhdGNoZXJzQGdvb2dsZWdyb3Vwcy5jb20iLAogICAgIF0KKwor
ICAgIF9wYXNzX3N0YXR1cyA9ICJQYXNzIgorICAgIF9mYWlsX3N0YXR1cyA9ICJGYWlsIgorICAg
IF9lcnJvcl9zdGF0dXMgPSAiRXJyb3IiCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9u
cz1Ob25lKTogIyBEZWZhdWx0IHZhbHVlcyBzaG91bGQgbmV2ZXIgYmUgY29sbGVjdGlvbnMgKGxp
a2UgW10pIGFzIGRlZmF1bHQgdmFsdWVzIGFyZSBzaGFyZWQgYmV0d2VlbiBpbnZvY2F0aW9ucwog
ICAgICAgICBvcHRpb25zX2xpc3QgPSAob3B0aW9ucyBvciBbXSkgKyBbCiAgICAgICAgICAgICBt
YWtlX29wdGlvbigiLS1uby1jb25maXJtIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNv
bmZpcm0iLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvIG5vdCBhc2sgdGhlIHVzZXIgZm9yIGNvbmZp
cm1hdGlvbiBiZWZvcmUgcnVubmluZyB0aGUgcXVldWUuICBEYW5nZXJvdXMhIiksCkBAIC02Miw2
ICs2NywxMiBAQCBjbGFzcyBBYnN0cmFjdFF1ZXVlKENvbW1hbmQsIFF1ZXVlRW5naW5lRGVsZWdh
dGUpOgogICAgIGRlZiBfdXBkYXRlX3N0YXR1cyhzZWxmLCBtZXNzYWdlLCBwYXRjaD1Ob25lLCBy
ZXN1bHRzX2ZpbGU9Tm9uZSk6CiAgICAgICAgIHNlbGYudG9vbC5zdGF0dXNfYm90LnVwZGF0ZV9z
dGF0dXMoc2VsZi5uYW1lLCBtZXNzYWdlLCBwYXRjaCwgcmVzdWx0c19maWxlKQogCisgICAgZGVm
IF9kaWRfcGFzcyhzZWxmLCBwYXRjaCk6CisgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0dXMoc2Vs
Zi5fcGFzc19zdGF0dXMsIHBhdGNoKQorCisgICAgZGVmIF9kaWRfZmFpbChzZWxmLCBwYXRjaCk6
CisgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0dXMoc2VsZi5fZmFpbF9zdGF0dXMsIHBhdGNoKQor
CiAgICAgZGVmIHF1ZXVlX2xvZ19wYXRoKHNlbGYpOgogICAgICAgICByZXR1cm4gIiVzLmxvZyIg
JSBzZWxmLm5hbWUKIApAQCAtNjksMTIgKzgwLDEyIEBAIGNsYXNzIEFic3RyYWN0UXVldWUoQ29t
bWFuZCwgUXVldWVFbmdpbmVEZWxlZ2F0ZSk6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4o
IiVzLWxvZ3MiICUgc2VsZi5uYW1lLCAiJXMubG9nIiAlIHBhdGNoWyJidWdfaWQiXSkKIAogICAg
IGRlZiBiZWdpbl93b3JrX3F1ZXVlKHNlbGYpOgotICAgICAgICBsb2coIkNBVVRJT046ICVzIHdp
bGwgZGlzY2FyZCBhbGwgbG9jYWwgY2hhbmdlcyBpbiAlcyIgJSAoc2VsZi5uYW1lLCBzZWxmLnRv
b2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkpCisgICAgICAgIGxvZygiQ0FVVElPTjogJXMgd2lsbCBk
aXNjYXJkIGFsbCBsb2NhbCBjaGFuZ2VzIGluIFwiJXNcIiIgJSAoc2VsZi5uYW1lLCBvcy5wYXRo
LnJlbHBhdGgoc2VsZi50b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpKSkKICAgICAgICAgaWYgc2Vs
Zi5vcHRpb25zLmNvbmZpcm06CiAgICAgICAgICAgICByZXNwb25zZSA9IHJhd19pbnB1dCgiQXJl
IHlvdSBzdXJlPyAgVHlwZSBcInllc1wiIHRvIGNvbnRpbnVlOiAiKQogICAgICAgICAgICAgaWYg
KHJlc3BvbnNlICE9ICJ5ZXMiKToKICAgICAgICAgICAgICAgICBlcnJvcigiVXNlciBkZWNsaW5l
ZC4iKQotICAgICAgICBsb2coIlJ1bm5pbmcgV2ViS2l0ICVzLiAlcyIgJSAoc2VsZi5uYW1lLCBk
YXRldGltZS5ub3coKS5zdHJmdGltZShRdWV1ZUVuZ2luZS5sb2dfZGF0ZV9mb3JtYXQpKSkKKyAg
ICAgICAgbG9nKCJSdW5uaW5nIFdlYktpdCAlcy4iICUgc2VsZi5uYW1lKQogCiAgICAgZGVmIHNo
b3VsZF9jb250aW51ZV93b3JrX3F1ZXVlKHNlbGYpOgogICAgICAgICByZXR1cm4gVHJ1ZQpAQCAt
MTAxLDEyICsxMTIsMTYgQEAgY2xhc3MgQWJzdHJhY3RRdWV1ZShDb21tYW5kLCBRdWV1ZUVuZ2lu
ZURlbGVnYXRlKToKICAgICBkZWYgbG9nX3Byb2dyZXNzKHNlbGYsIHBhdGNoX2lkcyk6CiAgICAg
ICAgIGxvZygiJXMgaW4gJXMgWyVzXSIgJSAocGx1cmFsaXplKCJwYXRjaCIsIGxlbihwYXRjaF9p
ZHMpKSwgc2VsZi5uYW1lLCAiLCAiLmpvaW4obWFwKHN0ciwgcGF0Y2hfaWRzKSkpKQogCi0gICAg
ZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgZGVmIGV4ZWN1dGUo
c2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCwgZW5naW5lPVF1ZXVlRW5naW5lKToKICAgICAgICAg
c2VsZi5vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLnRvb2wgPSB0b29sCi0gICAgICAg
IHdvcmtfcXVldWUgPSBRdWV1ZUVuZ2luZShzZWxmLm5hbWUsIHNlbGYpCisgICAgICAgIHdvcmtf
cXVldWUgPSBlbmdpbmUoc2VsZi5uYW1lLCBzZWxmKQogICAgICAgICByZXR1cm4gd29ya19xdWV1
ZS5ydW4oKQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF91cGRhdGVfc3RhdHVzX2Zvcl9z
Y3JpcHRfZXJyb3IoY2xzLCB0b29sLCBzdGF0ZSwgc2NyaXB0X2Vycm9yKToKKyAgICAgICAgcmV0
dXJuIHRvb2wuc3RhdHVzX2JvdC51cGRhdGVfc3RhdHVzKGNscy5uYW1lLCBzY3JpcHRfZXJyb3Iu
bWVzc2FnZSwgc3RhdGVbInBhdGNoIl0sIFN0cmluZ0lPKHNjcmlwdF9lcnJvci5vdXRwdXQpKQor
CiAKIGNsYXNzIENvbW1pdFF1ZXVlKEFic3RyYWN0UXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFu
ZGxlcik6CiAgICAgbmFtZSA9ICJjb21taXQtcXVldWUiCkBAIC0xMzMsMTIgKzE0OCwxNyBAQCBj
bGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIp
OgogICAgICAgICAgICAgcmVkX2J1aWxkZXJzX25hbWVzID0gbWFwKGxhbWJkYSBuYW1lOiAiXCIl
c1wiIiAlIG5hbWUsIHJlZF9idWlsZGVyc19uYW1lcykgIyBBZGQgcXVvdGVzIGFyb3VuZCB0aGUg
bmFtZXMuCiAgICAgICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKCJCdWlsZGVycyBbJXNdIGFy
ZSByZWQuIFNlZSBodHRwOi8vYnVpbGQud2Via2l0Lm9yZy4iICUgIiwgIi5qb2luKHJlZF9idWls
ZGVyc19uYW1lcyksIE5vbmUpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgc2Vs
Zi5fdXBkYXRlX3N0YXR1cygiTGFuZGluZyBwYXRjaCAlcyBmcm9tIGJ1ZyAlcy4iICUgKHBhdGNo
WyJpZCJdLCBwYXRjaFsiYnVnX2lkIl0pLCBwYXRjaCkKKyAgICAgICAgc2VsZi5fdXBkYXRlX3N0
YXR1cygiTGFuZGluZyBwYXRjaC4iLCBwYXRjaCkKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAg
IGRlZiBwcm9jZXNzX3dvcmtfaXRlbShzZWxmLCBwYXRjaCk6Ci0gICAgICAgIHNlbGYuX2NjX3dh
dGNoZXJzKHBhdGNoWyJidWdfaWQiXSkKLSAgICAgICAgc2VsZi5ydW5fYnVnemlsbGFfdG9vbChb
ImxhbmQtYXR0YWNobWVudCIsICItLWZvcmNlLWNsZWFuIiwgIi0tbm9uLWludGVyYWN0aXZlIiwg
Ii0tcGFyZW50LWNvbW1hbmQ9Y29tbWl0LXF1ZXVlIiwgIi0tcXVpZXQiLCBwYXRjaFsiaWQiXV0p
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX2NjX3dhdGNoZXJzKHBhdGNoWyJidWdf
aWQiXSkKKyAgICAgICAgICAgIHNlbGYucnVuX2J1Z3ppbGxhX3Rvb2woWyJsYW5kLWF0dGFjaG1l
bnQiLCAiLS1mb3JjZS1jbGVhbiIsICItLW5vbi1pbnRlcmFjdGl2ZSIsICItLXBhcmVudC1jb21t
YW5kPWNvbW1pdC1xdWV1ZSIsICItLXF1aWV0IiwgcGF0Y2hbImlkIl1dKQorICAgICAgICAgICAg
c2VsZi5fZGlkX3Bhc3MocGF0Y2gpCisgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKKyAg
ICAgICAgICAgIHNlbGYuX2RpZF9mYWlsKHBhdGNoKQorICAgICAgICAgICAgcmFpc2UgZQogCiAg
ICAgZGVmIGhhbmRsZV91bmV4cGVjdGVkX2Vycm9yKHNlbGYsIHBhdGNoLCBtZXNzYWdlKToKICAg
ICAgICAgc2VsZi50b29sLmJ1Z3MucmVqZWN0X3BhdGNoX2Zyb21fY29tbWl0X3F1ZXVlKHBhdGNo
WyJpZCJdLCBtZXNzYWdlKQpAQCAtMTU0LDkgKzE3NCw4IEBAIGNsYXNzIENvbW1pdFF1ZXVlKEFi
c3RyYWN0UXVldWUsIFN0ZXBTZXF1ZW5jZUVycm9ySGFuZGxlcik6CiAKICAgICBAY2xhc3NtZXRo
b2QKICAgICBkZWYgaGFuZGxlX3NjcmlwdF9lcnJvcihjbHMsIHRvb2wsIHN0YXRlLCBzY3JpcHRf
ZXJyb3IpOgotICAgICAgICBwYXRjaCA9IHN0YXRlWyJwYXRjaCJdCi0gICAgICAgIHN0YXR1c19p
ZCA9IHRvb2wuc3RhdHVzX2JvdC51cGRhdGVfc3RhdHVzKGNscy5uYW1lLCAicGF0Y2ggJXMgZmFp
bGVkOiAlcyIgJSAocGF0Y2hbJ2lkJ10sIHNjcmlwdF9lcnJvci5tZXNzYWdlKSwgcGF0Y2gsIFN0
cmluZ0lPKHNjcmlwdF9lcnJvci5vdXRwdXQpKQotICAgICAgICB0b29sLmJ1Z3MucmVqZWN0X3Bh
dGNoX2Zyb21fY29tbWl0X3F1ZXVlKHBhdGNoWyJpZCJdLCBjbHMuX2Vycm9yX21lc3NhZ2VfZm9y
X2J1Zyh0b29sLCBzdGF0dXNfaWQsIHNjcmlwdF9lcnJvcikpCisgICAgICAgIHN0YXR1c19pZCA9
IGNscy5fdXBkYXRlX3N0YXR1c19mb3Jfc2NyaXB0X2Vycm9yKHRvb2wsIHN0YXRlLCBzY3JpcHRf
ZXJyb3IpCisgICAgICAgIHRvb2wuYnVncy5yZWplY3RfcGF0Y2hfZnJvbV9jb21taXRfcXVldWUo
c3RhdGVbInBhdGNoIl1bImlkIl0sIGNscy5fZXJyb3JfbWVzc2FnZV9mb3JfYnVnKHRvb2wsIHN0
YXR1c19pZCwgc2NyaXB0X2Vycm9yKSkKIAogCiBjbGFzcyBBYnN0cmFjdFJldmlld1F1ZXVlKEFi
c3RyYWN0UXVldWUsIFBlcnNpc3RlbnRQYXRjaENvbGxlY3Rpb25EZWxlZ2F0ZSwgU3RlcFNlcXVl
bmNlRXJyb3JIYW5kbGVyKToKQEAgLTIwOCw3ICsyMjcsNyBAQCBjbGFzcyBTdHlsZVF1ZXVlKEFi
c3RyYWN0UmV2aWV3UXVldWUpOgogICAgICAgICBBYnN0cmFjdFJldmlld1F1ZXVlLl9faW5pdF9f
KHNlbGYpCiAKICAgICBkZWYgc2hvdWxkX3Byb2NlZWRfd2l0aF93b3JrX2l0ZW0oc2VsZiwgcGF0
Y2gpOgotICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKCJDaGVja2luZyBzdHlsZSBmb3IgcGF0
Y2ggJXMgb24gYnVnICVzLiIgJSAocGF0Y2hbImlkIl0sIHBhdGNoWyJidWdfaWQiXSksIHBhdGNo
KQorICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKCJDaGVja2luZyBzdHlsZS4iLCBwYXRjaCkK
ICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBwcm9jZXNzX3dvcmtfaXRlbShzZWxmLCBw
YXRjaCk6CkBAIC0yMTYsMTQgKzIzNSwxNSBAQCBjbGFzcyBTdHlsZVF1ZXVlKEFic3RyYWN0UmV2
aWV3UXVldWUpOgogICAgICAgICAgICAgc2VsZi5ydW5fYnVnemlsbGFfdG9vbChbImNoZWNrLXN0
eWxlIiwgIi0tZm9yY2UtY2xlYW4iLCAiLS1ub24taW50ZXJhY3RpdmUiLCAiLS1wYXJlbnQtY29t
bWFuZD1zdHlsZS1xdWV1ZSIsIHBhdGNoWyJpZCJdXSkKICAgICAgICAgICAgIG1lc3NhZ2UgPSAi
JXMgcmFuIGNoZWNrLXdlYmtpdC1zdHlsZSBvbiBhdHRhY2htZW50ICVzIHdpdGhvdXQgYW55IGVy
cm9ycy4iICUgKHNlbGYubmFtZSwgcGF0Y2hbImlkIl0pCiAgICAgICAgICAgICBzZWxmLnRvb2wu
YnVncy5wb3N0X2NvbW1lbnRfdG9fYnVnKHBhdGNoWyJidWdfaWQiXSwgbWVzc2FnZSwgY2M9c2Vs
Zi53YXRjaGVycykKLSAgICAgICAgICAgIHNlbGYuX3BhdGNoZXMuZGlkX3Bhc3MocGF0Y2gpCisg
ICAgICAgICAgICBzZWxmLl9kaWRfcGFzcyhwYXRjaCkKICAgICAgICAgZXhjZXB0IFNjcmlwdEVy
cm9yLCBlOgotICAgICAgICAgICAgc2VsZi5fcGF0Y2hlcy5kaWRfZmFpbChwYXRjaCkKKyAgICAg
ICAgICAgIHNlbGYuX2RpZF9mYWlsKHBhdGNoKQogICAgICAgICAgICAgcmFpc2UgZQogCiAgICAg
QGNsYXNzbWV0aG9kCiAgICAgZGVmIGhhbmRsZV9zY3JpcHRfZXJyb3IoY2xzLCB0b29sLCBzdGF0
ZSwgc2NyaXB0X2Vycm9yKToKKyAgICAgICAgc3RhdHVzX2lkID0gY2xzLl91cGRhdGVfc3RhdHVz
X2Zvcl9zY3JpcHRfZXJyb3IodG9vbCwgc3RhdGUsIHNjcmlwdF9lcnJvcikKICAgICAgICAgaWYg
bm90IHNjcmlwdF9lcnJvci5jb21tYW5kX25hbWUoKSA9PSAiY2hlY2std2Via2l0LXN0eWxlIjoK
ICAgICAgICAgICAgIHJldHVybgotICAgICAgICBtZXNzYWdlID0gIkF0dGFjaG1lbnQgJXMgZGlk
IG5vdCBwYXNzICVzOlxuXG4lcyIgJSAoc3RhdGVbInBhdGNoIl1bImlkIl0sIGNscy5uYW1lLCBz
Y3JpcHRfZXJyb3IubWVzc2FnZV93aXRoX291dHB1dChvdXRwdXRfbGltaXQ9NSoxMDI0KSkKKyAg
ICAgICAgbWVzc2FnZSA9ICJBdHRhY2htZW50ICVzIGRpZCBub3QgcGFzcyAlczpcblxuJXMiICUg
KHN0YXRlWyJwYXRjaCJdWyJpZCJdLCBjbHMubmFtZSwgc2NyaXB0X2Vycm9yLm1lc3NhZ2Vfd2l0
aF9vdXRwdXQob3V0cHV0X2xpbWl0PTMqMTAyNCkpCiAgICAgICAgIHRvb2wuYnVncy5wb3N0X2Nv
bW1lbnRfdG9fYnVnKHN0YXRlWyJwYXRjaCJdWyJidWdfaWQiXSwgbWVzc2FnZSwgY2M9Y2xzLndh
dGNoZXJzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRz
L3F1ZXVlc191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21tYW5k
cy9xdWV1ZXNfdW5pdHRlc3QucHkKaW5kZXggOWE2NDYwNC4uZjUxMGU3MiAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0
LnB5CkBAIC0zMCw2ICszMCw3IEBAIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIG1vZHVsZXMuY29t
bWFuZHMuY29tbWFuZHRlc3QgaW1wb3J0IENvbW1hbmRzVGVzdAogZnJvbSBtb2R1bGVzLmNvbW1h
bmRzLnF1ZXVlcyBpbXBvcnQgKgorZnJvbSBtb2R1bGVzLmNvbW1hbmRzLnF1ZXVlc3Rlc3QgaW1w
b3J0IFF1ZXVlc1Rlc3QKIGZyb20gbW9kdWxlcy5tb2NrX2J1Z3ppbGxhdG9vbCBpbXBvcnQgTW9j
a0J1Z3ppbGxhVG9vbAogZnJvbSBtb2R1bGVzLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENh
cHR1cmUKIApAQCAtNTksMyArNjAsMjEgQEAgY2xhc3MgQWJzdHJhY3RRdWV1ZVRlc3QoQ29tbWFu
ZHNUZXN0KToKICAgICBkZWYgdGVzdF9ydW5fYnVnemlsbGFfdG9vbChzZWxmKToKICAgICAgICAg
c2VsZi5fYXNzZXJ0X3J1bl9idWd6aWxsYV90b29sKFsxXSkKICAgICAgICAgc2VsZi5fYXNzZXJ0
X3J1bl9idWd6aWxsYV90b29sKFsib25lIiwgMl0pCisKKworY2xhc3MgQ29tbWl0UXVldWVUZXN0
KFF1ZXVlc1Rlc3QpOgorICAgIGRlZiB0ZXN0X3N0eWxlX3F1ZXVlKHNlbGYpOgorICAgICAgICBl
eHBlY3RlZF9zdGRlcnIgPSB7CisgICAgICAgICAgICAiYmVnaW5fd29ya19xdWV1ZSIgOiAiQ0FV
VElPTjogY29tbWl0LXF1ZXVlIHdpbGwgZGlzY2FyZCBhbGwgbG9jYWwgY2hhbmdlcyBpbiBcIi5c
IlxuUnVubmluZyBXZWJLaXQgY29tbWl0LXF1ZXVlLlxuIiwKKyAgICAgICAgICAgICJuZXh0X3dv
cmtfaXRlbSIgOiAiMiBwYXRjaGVzIGluIGNvbW1pdC1xdWV1ZSBbMTk3LCAxMjhdXG4iLAorICAg
ICAgICB9CisgICAgICAgIHNlbGYuYXNzZXJ0X3F1ZXVlX291dHB1dHMoQ29tbWl0UXVldWUoKSwg
ZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKworCitjbGFzcyBTdHlsZVF1ZXVlVGVz
dChRdWV1ZXNUZXN0KToKKyAgICBkZWYgdGVzdF9zdHlsZV9xdWV1ZShzZWxmKToKKyAgICAgICAg
ZXhwZWN0ZWRfc3RkZXJyID0geworICAgICAgICAgICAgImJlZ2luX3dvcmtfcXVldWUiIDogIkNB
VVRJT046IHN0eWxlLXF1ZXVlIHdpbGwgZGlzY2FyZCBhbGwgbG9jYWwgY2hhbmdlcyBpbiBcIi5c
IlxuUnVubmluZyBXZWJLaXQgc3R5bGUtcXVldWUuXG4iLAorICAgICAgICAgICAgImhhbmRsZV91
bmV4cGVjdGVkX2Vycm9yIiA6ICJNb2NrIGVycm9yIG1lc3NhZ2VcbiIsCisgICAgICAgIH0KKyAg
ICAgICAgc2VsZi5hc3NlcnRfcXVldWVfb3V0cHV0cyhTdHlsZVF1ZXVlKCksIGV4cGVjdGVkX3N0
ZGVycj1leHBlY3RlZF9zdGRlcnIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21v
ZHVsZXMvY29tbWFuZHMvcXVldWVzdGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9jb21tYW5kcy9xdWV1ZXN0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjAzZjA3NWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVs
ZXMvY29tbWFuZHMvcXVldWVzdGVzdC5weQpAQCAtMCwwICsxLDk3IEBACisjIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gbW9kdWxlcy5tb2NrIGltcG9ydCBNb2NrCitmcm9t
IG1vZHVsZXMubW9ja19idWd6aWxsYXRvb2wgaW1wb3J0IE1vY2tCdWd6aWxsYVRvb2wKK2Zyb20g
bW9kdWxlcy5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCisKKworY2xhc3MgTW9j
a1F1ZXVlRW5naW5lKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHF1ZXVl
KToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgcGFzcworCisK
K2NsYXNzIFF1ZXVlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vY2tfd29ya19pdGVt
ID0geworICAgICAgICAiaWQiIDogMTIzNCwKKyAgICAgICAgImJ1Z19pZCIgOiAzNDUsCisgICAg
fQorCisgICAgZGVmIGFzc2VydF9xdWV1ZV9vdXRwdXRzKHNlbGYsIHF1ZXVlLCBhcmdzPU5vbmUs
IHdvcmtfaXRlbT1Ob25lLCBleHBlY3RlZF9zdGRvdXQ9Tm9uZSwgZXhwZWN0ZWRfc3RkZXJyPU5v
bmUsIG9wdGlvbnM9TW9jaygpLCB0b29sPU1vY2tCdWd6aWxsYVRvb2woKSk6CisgICAgICAgIGlm
IG5vdCBleHBlY3RlZF9zdGRvdXQ6CisgICAgICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSB7fQor
ICAgICAgICBpZiBub3QgZXhwZWN0ZWRfc3RkZXJyOgorICAgICAgICAgICAgZXhwZWN0ZWRfc3Rk
ZXJyID0ge30KKyAgICAgICAgaWYgbm90IGFyZ3M6CisgICAgICAgICAgICBhcmdzID0gW10KKyAg
ICAgICAgaWYgbm90IHdvcmtfaXRlbToKKyAgICAgICAgICAgIHdvcmtfaXRlbSA9IHNlbGYubW9j
a193b3JrX2l0ZW0KKyAgICAgICAgb3B0aW9ucy5jb25maXJtID0gRmFsc2UgIyBGSVhNRTogV2Ug
c2hvdWxkIGhhdmUgYSB0b29sLnVzZXIgdGhhdCB3ZSBjYW4gbW9jay4KKworICAgICAgICBxdWV1
ZS5leGVjdXRlKG9wdGlvbnMsIGFyZ3MsIHRvb2wsIGVuZ2luZT1Nb2NrUXVldWVFbmdpbmUpCisK
KyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsCisgICAgICAgICAg
ICAgICAgcXVldWUucXVldWVfbG9nX3BhdGgsCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3Rk
b3V0PWV4cGVjdGVkX3N0ZG91dC5nZXQoInF1ZXVlX2xvZ19wYXRoIiwgIiIpLAorICAgICAgICAg
ICAgICAgIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIuZ2V0KCJxdWV1ZV9sb2dfcGF0
aCIsICIiKSkKKyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsCisg
ICAgICAgICAgICAgICAgcXVldWUud29ya19pdGVtX2xvZ19wYXRoLAorICAgICAgICAgICAgICAg
IGFyZ3M9W3dvcmtfaXRlbV0sCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVj
dGVkX3N0ZG91dC5nZXQoIndvcmtfaXRlbV9sb2dfcGF0aCIsICIiKSwKKyAgICAgICAgICAgICAg
ICBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLmdldCgid29ya19pdGVtX2xvZ19wYXRo
IiwgIiIpKQorICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwKKyAg
ICAgICAgICAgICAgICBxdWV1ZS5iZWdpbl93b3JrX3F1ZXVlLAorICAgICAgICAgICAgICAgIGV4
cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQuZ2V0KCJiZWdpbl93b3JrX3F1ZXVlIiwgIiIp
LAorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIuZ2V0KCJi
ZWdpbl93b3JrX3F1ZXVlIiwgIiIpKQorICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291
dHB1dHMoc2VsZiwKKyAgICAgICAgICAgICAgICBxdWV1ZS5zaG91bGRfY29udGludWVfd29ya19x
dWV1ZSwKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0Lmdl
dCgic2hvdWxkX2NvbnRpbnVlX3dvcmtfcXVldWUiLCAiIiksIGV4cGVjdGVkX3N0ZGVycj1leHBl
Y3RlZF9zdGRlcnIuZ2V0KCJzaG91bGRfY29udGludWVfd29ya19xdWV1ZSIsICIiKSkKKyAgICAg
ICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsCisgICAgICAgICAgICAgICAg
cXVldWUubmV4dF93b3JrX2l0ZW0sCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0PWV4
cGVjdGVkX3N0ZG91dC5nZXQoIm5leHRfd29ya19pdGVtIiwgIiIpLAorICAgICAgICAgICAgICAg
IGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIuZ2V0KCJuZXh0X3dvcmtfaXRlbSIsICIi
KSkKKyAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsCisgICAgICAg
ICAgICAgICAgcXVldWUuc2hvdWxkX3Byb2NlZWRfd2l0aF93b3JrX2l0ZW0sCisgICAgICAgICAg
ICAgICAgYXJncz1bd29ya19pdGVtXSwKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGRvdXQ9
ZXhwZWN0ZWRfc3Rkb3V0LmdldCgic2hvdWxkX3Byb2NlZWRfd2l0aF93b3JrX2l0ZW0iLCAiIiks
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVyci5nZXQoInNo
b3VsZF9wcm9jZWVkX3dpdGhfd29ya19pdGVtIiwgIiIpKQorICAgICAgICBPdXRwdXRDYXB0dXJl
KCkuYXNzZXJ0X291dHB1dHMoc2VsZiwKKyAgICAgICAgICAgICAgICBxdWV1ZS5wcm9jZXNzX3dv
cmtfaXRlbSwKKyAgICAgICAgICAgICAgICBhcmdzPVt3b3JrX2l0ZW1dLAorICAgICAgICAgICAg
ICAgIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQuZ2V0KCJwcm9jZXNzX3dvcmtfaXRl
bSIsICIiKSwKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJy
LmdldCgicHJvY2Vzc193b3JrX2l0ZW0iLCAiIikpCisgICAgICAgIE91dHB1dENhcHR1cmUoKS5h
c3NlcnRfb3V0cHV0cyhzZWxmLAorICAgICAgICAgICAgICAgIHF1ZXVlLmhhbmRsZV91bmV4cGVj
dGVkX2Vycm9yLAorICAgICAgICAgICAgICAgIGFyZ3M9W3dvcmtfaXRlbSwgIk1vY2sgZXJyb3Ig
bWVzc2FnZSJdLAorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRv
dXQuZ2V0KCJoYW5kbGVfdW5leHBlY3RlZF9lcnJvciIsICIiKSwKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLmdldCgiaGFuZGxlX3VuZXhwZWN0ZWRfZXJy
b3IiLCAiIikpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvbW9ja19i
dWd6aWxsYXRvb2wucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvbW9ja19idWd6aWxs
YXRvb2wucHkKaW5kZXggMGJhOWQwZC4uMzUxMzk4ZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL21vY2tfYnVnemlsbGF0b29sLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvbW9kdWxlcy9tb2NrX2J1Z3ppbGxhdG9vbC5weQpAQCAtNTcsNyArNTcsNyBAQCBjbGFz
cyBNb2NrQnVnemlsbGEoTW9jayk6CiAgICAgZGVmIGZldGNoX2F0dGFjaG1lbnRfaWRzX2Zyb21f
cmV2aWV3X3F1ZXVlKHNlbGYpOgogICAgICAgICByZXR1cm4gWzE5NywgMTI4XQogCi0gICAgZGVm
IGZldGNoX3BhdGNoZXNfZnJvbV9jb21taXRfcXVldWUoc2VsZik6CisgICAgZGVmIGZldGNoX3Bh
dGNoZXNfZnJvbV9jb21taXRfcXVldWUoc2VsZiwgcmVqZWN0X2ludmFsaWRfcGF0Y2hlcz1GYWxz
ZSk6CiAgICAgICAgIHJldHVybiBbc2VsZi5wYXRjaDEsIHNlbGYucGF0Y2gyXQogCiAgICAgZGVm
IGZldGNoX3BhdGNoZXNfZnJvbV9wZW5kaW5nX2NvbW1pdF9saXN0KHNlbGYpOgpAQCAtMTQ2LDYg
KzE0NiwxMiBAQCBjbGFzcyBNb2NrU3RhdHVzQm90KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9f
KHNlbGYpOgogICAgICAgICBzZWxmLnN0YXR1c2JvdF9ob3N0ID0gImV4YW1wbGUuY29tIgogCisg
ICAgZGVmIHBhdGNoX3N0YXR1cyhzZWxmLCBxdWV1ZV9uYW1lLCBwYXRjaF9pZCk6CisgICAgICAg
IHJldHVybiBOb25lCisKKyAgICBkZWYgdXBkYXRlX3N0YXR1cyhzZWxmLCBxdWV1ZV9uYW1lLCBz
dGF0dXMsIHBhdGNoPU5vbmUsIHJlc3VsdHNfZmlsZT1Ob25lKToKKyAgICAgICAgcmV0dXJuIDE4
NworCiAKIGNsYXNzIE1vY2tCdWd6aWxsYVRvb2woKToKICAgICBkZWYgX19pbml0X18oc2VsZik6
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvcGF0Y2hjb2xsZWN0aW9u
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3BhdGNoY29sbGVjdGlvbi5weQppbmRl
eCBhZGQ4MTI5Li4yNDZmNDg3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVs
ZXMvcGF0Y2hjb2xsZWN0aW9uLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9w
YXRjaGNvbGxlY3Rpb24ucHkKQEAgLTM5LDkgKzM5LDYgQEAgY2xhc3MgUGVyc2lzdGVudFBhdGNo
Q29sbGVjdGlvbkRlbGVnYXRlOgogCiAKIGNsYXNzIFBlcnNpc3RlbnRQYXRjaENvbGxlY3Rpb246
Ci0gICAgX2luaXRpYWxfc3RhdHVzID0gIlBlbmRpbmciCi0gICAgX3Bhc3Nfc3RhdHVzID0gIlBh
c3MiCi0gICAgX2ZhaWxfc3RhdHVzID0gIkZhaWwiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRl
bGVnYXRlKToKICAgICAgICAgc2VsZi5fZGVsZWdhdGUgPSBkZWxlZ2F0ZQogICAgICAgICBzZWxm
Ll9uYW1lID0gc2VsZi5fZGVsZWdhdGUuY29sbGVjdGlvbl9uYW1lKCkKQEAgLTY0LDggKzYxLDMg
QEAgY2xhc3MgUGVyc2lzdGVudFBhdGNoQ29sbGVjdGlvbjoKICAgICAgICAgICAgIGlmIG5vdCBz
dGF0dXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdGNoX2lkCiAKLSAgICBkZWYgZGlkX3Bh
c3Moc2VsZiwgcGF0Y2gpOgotICAgICAgICBzZWxmLl9zdGF0dXMudXBkYXRlX3N0YXR1cyhzZWxm
Ll9uYW1lLCBzZWxmLl9wYXNzX3N0YXR1cywgcGF0Y2gpCi0KLSAgICBkZWYgZGlkX2ZhaWwoc2Vs
ZiwgcGF0Y2gpOgotICAgICAgICBzZWxmLl9zdGF0dXMudXBkYXRlX3N0YXR1cyhzZWxmLl9uYW1l
LCBzZWxmLl9mYWlsX3N0YXR1cywgcGF0Y2gpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL21vZHVsZXMvcXVldWVlbmdpbmUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
cXVldWVlbmdpbmUucHkKaW5kZXggNmNiMWUxMy4uYzI2M2MwNSAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3F1ZXVlZW5naW5lLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvbW9kdWxlcy9xdWV1ZWVuZ2luZS5weQpAQCAtMzksOSArMzksNiBAQCBmcm9tIG1vZHVs
ZXMubG9nZ2luZyBpbXBvcnQgbG9nLCBPdXRwdXRUZWUKIGZyb20gbW9kdWxlcy5zdGF0dXNib3Qg
aW1wb3J0IFN0YXR1c0JvdAogCiBjbGFzcyBRdWV1ZUVuZ2luZURlbGVnYXRlOgotICAgIGRlZiBx
dWV1ZV9uYW1lKHNlbGYpOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3Vi
Y2xhc3NlcyBtdXN0IGltcGxlbWVudCIKLQogICAgIGRlZiBxdWV1ZV9sb2dfcGF0aChzZWxmKToK
ICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBs
ZW1lbnQiCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC11bml0
dGVzdHMgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdW5pdHRlc3RzCmluZGV4IDU3
NmE1ZTIuLmM0MjUyZDIgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtp
dC11bml0dGVzdHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXVuaXR0ZXN0
cwpAQCAtMzUsNiArMzUsNyBAQCBmcm9tIG1vZHVsZXMuYnVpbGRib3RfdW5pdHRlc3QgaW1wb3J0
ICoKIGZyb20gbW9kdWxlcy5idWlsZHN0ZXBzX3VuaXR0ZXN0IGltcG9ydCAqCiBmcm9tIG1vZHVs
ZXMuY2hhbmdlbG9nc191bml0dGVzdCBpbXBvcnQgKgogZnJvbSBtb2R1bGVzLmNvbW1hbmRzLmRv
d25sb2FkX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIG1vZHVsZXMuY29tbWFuZHMuZWFybHlfd2Fy
bmluZ19zeXN0ZW1fdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy5jb21tYW5kcy51cGxv
YWRfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gbW9kdWxlcy5jb21tYW5kcy5xdWVyaWVzX3VuaXR0
ZXN0IGltcG9ydCAqCiBmcm9tIG1vZHVsZXMuY29tbWFuZHMucXVldWVzX3VuaXR0ZXN0IGltcG9y
dCAqCg==
</data>
<flag name="review"
          id="27311"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="27314"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>