<?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>83026</bug_id>
          
          <creation_ts>2012-04-03 06:37:30 -0700</creation_ts>
          <short_desc>REGRESSION(r112177): listStyleType CSS property gets converted into listStyle</short_desc>
          <delta_ts>2012-04-26 19:37:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>http://tinymce.moxiecode.com/webkit/list_style_type.html</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="Johan &quot;Spocke&quot; Sörlin">spocke</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>dbates</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>594435</commentid>
    <comment_count>0</comment_count>
    <who name="Johan &quot;Spocke&quot; Sörlin">spocke</who>
    <bug_when>2012-04-03 06:37:30 -0700</bug_when>
    <thetext>When you set the listStyleType property on an OL element style it gets converted into a listStyle property when you retrieve it using element.style.cssText. This is a change in behavior from previous versions and it&apos;s also not producing the same results as other browsers.

Expected results:
It should return &quot;list-style-type: value&quot;.

Actual results:
It now returns &quot;list-style: value&quot; in other words an combined/shorthand style.

Steps to reproduce:
1. Open the attached test URL.
2. Observe that it fails on latest WebKit but not on FF, IE 9, Opera or older WebKit versions.

Seems to be related to this change:
http://trac.webkit.org/changeset/112880</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594442</commentid>
    <comment_count>1</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-03 06:47:33 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; When you set the listStyleType property on an OL element style it gets converted into a listStyle property when you retrieve it using element.style.cssText. This is a change in behavior from previous versions and it&apos;s also not producing the same results as other browsers.
&gt; 
&gt; Expected results:
&gt; It should return &quot;list-style-type: value&quot;.
&gt; 
&gt; Actual results:
&gt; It now returns &quot;list-style: value&quot; in other words an combined/shorthand style.
&gt; 
&gt; Steps to reproduce:
&gt; 1. Open the attached test URL.
&gt; 2. Observe that it fails on latest WebKit but not on FF, IE 9, Opera or older WebKit versions.
&gt; 
&gt; Seems to be related to this change:
&gt; http://trac.webkit.org/changeset/112880

I don&apos;t think it is related to this change. The bug seems to be in StylePropertySet::asText() because of http://trac.webkit.org/changeset/112177

I&apos;m adding Ryosuke as CC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594713</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-03 12:04:53 -0700</bug_when>
    <thetext>I could certainly fix this particular case by using longhand notations when not all longhand properties are set.

But in general, WebKit cannot preserve the list of properties set by the script because we don&apos;t store that information anywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594818</commentid>
    <comment_count>3</comment_count>
    <who name="Johan &quot;Spocke&quot; Sörlin">spocke</who>
    <bug_when>2012-04-03 13:34:12 -0700</bug_when>
    <thetext>Hmm, this was breaking some unit test we had. We could add a workaround in the unit tets for this specific case though it might break compatibility for other code out there so it&apos;s not important for our needs now when I know why it happens.

Having the auto combine feature in there is a great thing to reduce the number of styles needed that is a feature that other browsers don&apos;t have since we needed to add similar functionality in our serialization logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594836</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-03 13:41:09 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Hmm, this was breaking some unit test we had. We could add a workaround in the unit tets for this specific case though it might break compatibility for other code out there so it&apos;s not important for our needs now when I know why it happens.

Yeah, we need a better spec for shorthand/longhand notations and serialization of them :(

&gt; Having the auto combine feature in there is a great thing to reduce the number of styles needed that is a feature that other browsers don&apos;t have since we needed to add similar functionality in our serialization logic.

Right, that was the point of the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609034</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-24 14:06:58 -0700</bug_when>
    <thetext>*** Bug 84618 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609035</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-24 14:07:51 -0700</bug_when>
    <thetext>Okay, we do have to fix this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609100</commentid>
    <comment_count>7</comment_count>
      <attachid>138654</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-24 14:53:45 -0700</bug_when>
    <thetext>Created attachment 138654
Fixes the regression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609108</commentid>
    <comment_count>8</comment_count>
      <attachid>138654</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 15:00:48 -0700</bug_when>
    <thetext>Comment on attachment 138654
Fixes the regression

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

&gt; Source/WebCore/css/StylePropertySet.cpp:635
&gt; +                value = getPropertyValue(CSSPropertyBorder, ReturnNullOnUncommonValues);

the name uncommon is a bit confusing here. In fact what you want is the &quot;expanded&quot; version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609109</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-24 15:01:56 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 138654 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138654&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/StylePropertySet.cpp:635
&gt; &gt; +                value = getPropertyValue(CSSPropertyBorder, ReturnNullOnUncommonValues);
&gt; 
&gt; the name uncommon is a bit confusing here. In fact what you want is the &quot;expanded&quot; version.

I know... but getPropertyValue can&apos;t return multiple properties. I&apos;m open for a better name though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609129</commentid>
    <comment_count>10</comment_count>
      <attachid>138654</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-24 15:16:42 -0700</bug_when>
    <thetext>Comment on attachment 138654
Fixes the regression

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

&gt; Source/WebCore/css/StylePropertySet.cpp:97
&gt;  {

Only border use this valueMode, what about extracting the code in the &quot;case&quot; into a separate function that you can reuse in asText() (you already special case there anyway). Then you can make that enum name less generic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609216</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-24 16:16:50 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 138654 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138654&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/StylePropertySet.cpp:97
&gt; &gt;  {
&gt; 
&gt; Only border use this valueMode, what about extracting the code in the &quot;case&quot; into a separate function that you can reuse in asText() (you already special case there anyway). Then you can make that enum name less generic.

Good idea. That&apos;ll make the change local to StylePropertySet.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609224</commentid>
    <comment_count>12</comment_count>
      <attachid>138654</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-24 16:28:47 -0700</bug_when>
    <thetext>Comment on attachment 138654
Fixes the regression

Attachment 138654 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12525369</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609240</commentid>
    <comment_count>13</comment_count>
      <attachid>138654</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-24 16:43:43 -0700</bug_when>
    <thetext>Comment on attachment 138654
Fixes the regression

Attachment 138654 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12528378</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609260</commentid>
    <comment_count>14</comment_count>
      <attachid>138692</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-24 16:56:56 -0700</bug_when>
    <thetext>Created attachment 138692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609299</commentid>
    <comment_count>15</comment_count>
      <attachid>138692</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-04-24 17:29:44 -0700</bug_when>
    <thetext>Comment on attachment 138692
Patch

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

&gt; Source/WebCore/css/StylePropertySet.cpp:258
&gt; +    if (!top || !top-&gt;value() || !right || !right-&gt;value() || !bottom || !bottom-&gt;value() || !left || !left-&gt;value()
&gt; +        || top-&gt;value()-&gt;isInitialValue() || right-&gt;value()-&gt;isInitialValue() || bottom-&gt;value()-&gt;isInitialValue() || bottom-&gt;value()-&gt;isInitialValue()
&gt; +        || top-&gt;isImportant() != right-&gt;isImportant() || right-&gt;isImportant() != bottom-&gt;isImportant()
&gt; +        || bottom-&gt;isImportant() != left-&gt;isImportant())
&gt;          return String();

This if statement is hard to read.

How about breaking it up into three separate if statements?

&gt; Source/WebCore/css/StylePropertySet.cpp:398
&gt; +    bool isImportant = false;

Maybe name this lastPropertyWasImportant?

&gt; Source/WebCore/css/StylePropertySet.cpp:420
&gt; +enum CommonValueMode { OmitShorthandWithUncommonValues, ReturnNullOnUncommonValues };

This enum should not be here. We defined it in the header.

&gt; Source/WebCore/css/StylePropertySet.cpp:425
&gt; +    String result;

String is not a good way to build up a result; we’ll have to re-allocate 5 times. Instead we should use StringBuilder. I know the code you moved here was using String.

&gt; Source/WebCore/css/StylePropertySet.h:126
&gt; +    enum CommonValueMode { OmitShorthandWithUncommonValues, ReturnNullOnUncommonValues };

Wouldn’t the name of the first just be OmitUncommonValues? What is a “common value” anyway?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609320</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-24 17:48:11 -0700</bug_when>
    <thetext>Common value means the value of properties when they all match. I&apos;m all ears if you know of a better name. I&apos;m particularly unhappy with uncommon value :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609891</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-25 10:43:35 -0700</bug_when>
    <thetext>Committed r115227: &lt;http://trac.webkit.org/changeset/115227&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610054</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-25 14:36:16 -0700</bug_when>
    <thetext>Build fix landed in http://trac.webkit.org/changeset/115244.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610141</commentid>
    <comment_count>19</comment_count>
      <attachid>138692</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-04-25 16:24:25 -0700</bug_when>
    <thetext>Comment on attachment 138692
Patch

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

&gt; Source/WebCore/css/StylePropertySet.cpp:255
&gt; +        || top-&gt;value()-&gt;isInitialValue() || right-&gt;value()-&gt;isInitialValue() || bottom-&gt;value()-&gt;isInitialValue() || bottom-&gt;value()-&gt;isInitialValue()

I believe you forgot to check for &quot;left-&gt;value()-&gt;isInitialValue()&quot; here (you repeat bottom twice).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610261</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-25 18:12:57 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 138692 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138692&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/StylePropertySet.cpp:255
&gt; &gt; +        || top-&gt;value()-&gt;isInitialValue() || right-&gt;value()-&gt;isInitialValue() || bottom-&gt;value()-&gt;isInitialValue() || bottom-&gt;value()-&gt;isInitialValue()
&gt; 
&gt; I believe you forgot to check for &quot;left-&gt;value()-&gt;isInitialValue()&quot; here (you repeat bottom twice).

:( Thanks for pointing that out. Fixing it in a minute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610504</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-26 04:44:34 -0700</bug_when>
    <thetext>Another build fix landed in http://trac.webkit.org/changeset/115302.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611193</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-26 19:37:18 -0700</bug_when>
    <thetext>Committed r115399: &lt;http://trac.webkit.org/changeset/115399&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138654</attachid>
            <date>2012-04-24 14:53:45 -0700</date>
            <delta_ts>2012-04-24 16:56:49 -0700</delta_ts>
            <desc>Fixes the regression</desc>
            <filename>bug-83026-20120424145611.patch</filename>
            <type>text/plain</type>
            <size>19403</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTExNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA0LTI0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjExMjE3Nyk6
IGxpc3RTdHlsZVR5cGUgQ1NTIHByb3BlcnR5IGdldHMgY29udmVydGVkIGludG8gbGlzdFN0eWxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzAyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIHRo
ZSBidWcgYnkgbm90IHVzaW5nIHNob3J0aGFuZCBub3RhdGlvbnMgd2hlbiBzb21lIHZhbHVlcyBh
cmUgbWlzc2luZy4KKworICAgICAgICBIb3dldmVyLCB3ZSBzdGlsbCB3YW50IHRvIHJldHVybiBh
IHZhbHVlIHdoZW4gc2hvcnRoYW5kIGJvcmRlciBwcm9wZXJ0eSBpcyBleHBsaWNpdGx5CisgICAg
ICAgIHJlcXVlc3RlZCBzbyBhZGQgYSBmbGFnIHRvIFN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3Bl
cnR5VmFsdWUgdG8gc3VwcG9ydCB0aGF0LgorCisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlT
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKTog
RG9uJ3QgcmV0dXJuIHZhbHVlcyB3aGVuIHByaW9yaXR5IGRvbid0IG1hdGNoLgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0U2hvcnRoYW5kVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0Q29tbW9uVmFsdWUpOiBEb24ndCByZXR1cm4g
bnVsbCBzdHJpbmcgZm9yIGluaXRpYWwgdmFsdWVzCisgICAgICAgIHRvIGRpc2FtYmlndWF0ZSBt
aXNzaW5nIHZhbHVlcyBhbmQgImluaXRpYWwiIGluIGdldFByb3BlcnR5VmFsdWUuIEFsc28gY2hl
Y2sgcHJvcHJpZXR5LgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6YXNUZXh0
KTogU3VwcG9ydCBlbWl0dGluZyBib3JkZXItd2lkdGgsIGJvcmRlci1zdHlsZSwgYW5kCisgICAg
ICAgIGJvcmRlci1jb2xvciB3aGVuIGJvcmRlciBkb2Vzbid0IHdvcmsgYnV0IHRoZSBmb3JtZXIg
cHJvcGVydGllcyBkby4KKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgorCiAyMDEy
LTA0LTI0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVy
dCByMTE1MDA5OyBJdCBkb2Vzbid0IG1ha2UgbmVjZXNzYXJ5IGNoYW5nZXMgdG8gTm9kZVJhcmVE
YXRhIGFuZCBOb2RlLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cAkocmV2aXNpb24gMTE0OTUxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlT
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgU3R5bGVQcm9wZXJ0
eVNldDo6Y29weVByb3BlcnRpZXNGcm8KICAgICBtX3Byb3BlcnRpZXMgPSBvdGhlci5tX3Byb3Bl
cnRpZXM7CiB9CiAKLVN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRQcm9wZXJ0eVZhbHVlKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgY29uc3QKK1N0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojpn
ZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgQ29tbW9uVmFsdWVNb2Rl
IHZhbHVlTW9kZSkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJv
cGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKICAgICBpZiAodmFsdWUpCkBAIC0xMTQsMTEgKzEx
NCwxNyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlWYWx1CiAgICAgICAg
IFN0cmluZyByZXM7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xF
TkdUSChwcm9wZXJ0aWVzKTsgKytpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBnZXRD
b21tb25WYWx1ZShwcm9wZXJ0aWVzW2ldKTsKLSAgICAgICAgICAgIGlmICghdmFsdWUuaXNOdWxs
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXJlcy5pc051bGwoKSkKLSAgICAgICAgICAgICAg
ICAgICAgcmVzICs9ICIgIjsKLSAgICAgICAgICAgICAgICByZXMgKz0gdmFsdWU7CisgICAgICAg
ICAgICBpZiAodmFsdWUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWVNb2Rl
ID09IFJldHVybk51bGxPblVuY29tbW9uVmFsdWVzKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHZhbHVlTW9kZSA9PSBPbWl0U2hv
cnRoYW5kV2l0aFVuY29tbW9uVmFsdWVzKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAiaW5pdGlhbCIpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIXJlcy5pc051bGwoKSkKKyAgICAg
ICAgICAgICAgICByZXMgKz0gIiAiOworICAgICAgICAgICAgcmVzICs9IHZhbHVlOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQpAQCAtMjU2LDI2ICsyNjIsMjkgQEAgU3Ry
aW5nIFN0eWxlUHJvcGVydHlTZXQ6OmZvbnRWYWx1ZSgpIGNvbgogU3RyaW5nIFN0eWxlUHJvcGVy
dHlTZXQ6OmdldDRWYWx1ZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5k
KSBjb25zdAogewogICAgIC8vIEFzc3VtZSB0aGUgcHJvcGVydGllcyBhcmUgaW4gdGhlIHVzdWFs
IG9yZGVyIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdC4KLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHRv
cFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShzaG9ydGhhbmQucHJvcGVydGllcygpWzBdKTsK
LSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0VmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNo
b3J0aGFuZC5wcm9wZXJ0aWVzKClbMV0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gYm90dG9tVmFs
dWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMl0pOwotICAg
IFJlZlB0cjxDU1NWYWx1ZT4gbGVmdFZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShzaG9ydGhh
bmQucHJvcGVydGllcygpWzNdKTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eSogdG9wID0gZmluZFBy
b3BlcnR5V2l0aElkKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMF0pOworICAgIGNvbnN0IENTU1By
b3BlcnR5KiByaWdodCA9IGZpbmRQcm9wZXJ0eVdpdGhJZChzaG9ydGhhbmQucHJvcGVydGllcygp
WzFdKTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eSogYm90dG9tID0gZmluZFByb3BlcnR5V2l0aElk
KHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbMl0pOworICAgIGNvbnN0IENTU1Byb3BlcnR5KiBsZWZ0
ID0gZmluZFByb3BlcnR5V2l0aElkKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbM10pOwogCiAgICAg
Ly8gQWxsIDQgcHJvcGVydGllcyBtdXN0IGJlIHNwZWNpZmllZC4KLSAgICBpZiAoIXRvcFZhbHVl
IHx8ICFyaWdodFZhbHVlIHx8ICFib3R0b21WYWx1ZSB8fCAhbGVmdFZhbHVlKQorICAgIGlmICgh
dG9wIHx8ICF0b3AtPnZhbHVlKCkgfHwgIXJpZ2h0IHx8ICFyaWdodC0+dmFsdWUoKSB8fCAhYm90
dG9tIHx8ICFib3R0b20tPnZhbHVlKCkgfHwgIWxlZnQgfHwgIWxlZnQtPnZhbHVlKCkKKyAgICAg
ICAgfHwgdG9wLT52YWx1ZSgpLT5pc0luaXRpYWxWYWx1ZSgpIHx8IHJpZ2h0LT52YWx1ZSgpLT5p
c0luaXRpYWxWYWx1ZSgpIHx8IGJvdHRvbS0+dmFsdWUoKS0+aXNJbml0aWFsVmFsdWUoKSB8fCBi
b3R0b20tPnZhbHVlKCktPmlzSW5pdGlhbFZhbHVlKCkKKyAgICAgICAgfHwgdG9wLT5pc0ltcG9y
dGFudCgpICE9IHJpZ2h0LT5pc0ltcG9ydGFudCgpIHx8IHJpZ2h0LT5pc0ltcG9ydGFudCgpICE9
IGJvdHRvbS0+aXNJbXBvcnRhbnQoKQorICAgICAgICB8fCBib3R0b20tPmlzSW1wb3J0YW50KCkg
IT0gbGVmdC0+aXNJbXBvcnRhbnQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAg
Ym9vbCBzaG93TGVmdCA9IHJpZ2h0VmFsdWUtPmNzc1RleHQoKSAhPSBsZWZ0VmFsdWUtPmNzc1Rl
eHQoKTsKLSAgICBib29sIHNob3dCb3R0b20gPSAodG9wVmFsdWUtPmNzc1RleHQoKSAhPSBib3R0
b21WYWx1ZS0+Y3NzVGV4dCgpKSB8fCBzaG93TGVmdDsKLSAgICBib29sIHNob3dSaWdodCA9ICh0
b3BWYWx1ZS0+Y3NzVGV4dCgpICE9IHJpZ2h0VmFsdWUtPmNzc1RleHQoKSkgfHwgc2hvd0JvdHRv
bTsKKyAgICBib29sIHNob3dMZWZ0ID0gcmlnaHQtPnZhbHVlKCktPmNzc1RleHQoKSAhPSBsZWZ0
LT52YWx1ZSgpLT5jc3NUZXh0KCk7CisgICAgYm9vbCBzaG93Qm90dG9tID0gKHRvcC0+dmFsdWUo
KS0+Y3NzVGV4dCgpICE9IGJvdHRvbS0+dmFsdWUoKS0+Y3NzVGV4dCgpKSB8fCBzaG93TGVmdDsK
KyAgICBib29sIHNob3dSaWdodCA9ICh0b3AtPnZhbHVlKCktPmNzc1RleHQoKSAhPSByaWdodC0+
dmFsdWUoKS0+Y3NzVGV4dCgpKSB8fCBzaG93Qm90dG9tOwogCi0gICAgU3RyaW5nIHJlcyA9IHRv
cFZhbHVlLT5jc3NUZXh0KCk7CisgICAgU3RyaW5nIHJlcyA9IHRvcC0+dmFsdWUoKS0+Y3NzVGV4
dCgpOwogICAgIGlmIChzaG93UmlnaHQpCi0gICAgICAgIHJlcyArPSAiICIgKyByaWdodFZhbHVl
LT5jc3NUZXh0KCk7CisgICAgICAgIHJlcyArPSAiICIgKyByaWdodC0+dmFsdWUoKS0+Y3NzVGV4
dCgpOwogICAgIGlmIChzaG93Qm90dG9tKQotICAgICAgICByZXMgKz0gIiAiICsgYm90dG9tVmFs
dWUtPmNzc1RleHQoKTsKKyAgICAgICAgcmVzICs9ICIgIiArIGJvdHRvbS0+dmFsdWUoKS0+Y3Nz
VGV4dCgpOwogICAgIGlmIChzaG93TGVmdCkKLSAgICAgICAgcmVzICs9ICIgIiArIGxlZnRWYWx1
ZS0+Y3NzVGV4dCgpOworICAgICAgICByZXMgKz0gIiAiICsgbGVmdC0+dmFsdWUoKS0+Y3NzVGV4
dCgpOwogCiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTM4NywxMCArMzk2LDEwIEBAIFN0cmluZyBT
dHlsZVByb3BlcnR5U2V0OjpnZXRTaG9ydGhhbmRWYWwKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgaWYgKCFpc1Byb3BlcnR5
SW1wbGljaXQoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSkpIHsKICAgICAgICAgICAgIFJlZlB0
cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0
aWVzKClbaV0pOwotICAgICAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLT5pc0luaXRpYWxWYWx1
ZSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgICAgICBpZiAodmFsdWUt
PmlzSW5pdGlhbFZhbHVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBpZiAoIXJlcy5pc051bGwoKSkKICAgICAgICAgICAgICAgICByZXMgKz0gIiAiOwogICAgICAg
ICAgICAgcmVzICs9IHZhbHVlLT5jc3NUZXh0KCk7CkBAIC00MDMsMTAgKzQxMiwxMSBAQCBTdHJp
bmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0U2hvcnRoYW5kVmFsCiBTdHJpbmcgU3R5bGVQcm9wZXJ0
eVNldDo6Z2V0Q29tbW9uVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRo
YW5kKSBjb25zdAogewogICAgIFN0cmluZyByZXM7CisgICAgYm9vbCBpc0ltcG9ydGFudDsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2hvcnRoYW5kLmxlbmd0aCgpOyArK2kpIHsKICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUoc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVtpXSk7CiAgICAgICAgIC8vIEZJWE1FOiBDU1NJbml0aWFsVmFsdWU6
OmNzc1RleHQgc2hvdWxkIGdlbmVyYXRlIHRoZSByaWdodCB2YWx1ZS4KLSAgICAgICAgaWYgKCF2
YWx1ZSB8fCB2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkKKyAgICAgICAgaWYgKCF2YWx1ZSkKICAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgU3RyaW5nIHRleHQgPSB2YWx1ZS0+
Y3NzVGV4dCgpOwogICAgICAgICBpZiAodGV4dC5pc051bGwoKSkKQEAgLTQxNSw2ICs0MjUsMTEg
QEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldENvbW1vblZhbHVlKAogICAgICAgICAgICAg
cmVzID0gdGV4dDsKICAgICAgICAgZWxzZSBpZiAocmVzICE9IHRleHQpCiAgICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisKKyAgICAgICAgYm9vbCBjdXJyZW50UHJvcGVydHlJc0ltcG9ydGFu
dCA9IHByb3BlcnR5SXNJbXBvcnRhbnQoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSk7CisgICAg
ICAgIGlmIChpICYmIGlzSW1wb3J0YW50ICE9IGN1cnJlbnRQcm9wZXJ0eUlzSW1wb3J0YW50KQor
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICBpc0ltcG9ydGFudCA9IGN1cnJl
bnRQcm9wZXJ0eUlzSW1wb3J0YW50OwogICAgIH0KICAgICByZXR1cm4gcmVzOwogfQpAQCAtNTgw
LDYgKzU5NSw4IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojphc1RleHQoKSBjb25zdAogICAg
ICAgICBjb25zdCBDU1NQcm9wZXJ0eSYgcHJvcCA9IG1fcHJvcGVydGllc1tuXTsKICAgICAgICAg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gcHJvcC5pZCgpOwogICAgICAgICBDU1NQcm9wZXJ0
eUlEIHNob3J0aGFuZFByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUludmFsaWQ7CisgICAgICAgIENT
U1Byb3BlcnR5SUQgYm9yZGVyRmFsbGJhY2tTaG9ydGhhbmRQcm9wZXJ0eSA9IENTU1Byb3BlcnR5
SW52YWxpZDsKKyAgICAgICAgU3RyaW5nIHZhbHVlOwogCiAgICAgICAgIHN3aXRjaCAocHJvcGVy
dHlJRCkgewogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWDoKQEAg
LTU5NCw0NCArNjExLDM2IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojphc1RleHQoKSBjb25z
dAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk6CiAgICAgICAgICAg
ICByZXBlYXRZUHJvcCA9ICZwcm9wOwogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
clRvcFdpZHRoOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoOgotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
U3R5bGU6CisgICAgICAgICAgICBpZiAoIWJvcmRlckZhbGxiYWNrU2hvcnRoYW5kUHJvcGVydHkp
CisgICAgICAgICAgICAgICAgYm9yZGVyRmFsbGJhY2tTaG9ydGhhbmRQcm9wZXJ0eSA9IENTU1By
b3BlcnR5Qm9yZGVyV2lkdGg7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHls
ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGU6CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlckxlZnRTdHlsZToKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgor
ICAgICAgICAgICAgaWYgKCFib3JkZXJGYWxsYmFja1Nob3J0aGFuZFByb3BlcnR5KQorICAgICAg
ICAgICAgICAgIGJvcmRlckZhbGxiYWNrU2hvcnRoYW5kUHJvcGVydHkgPSBDU1NQcm9wZXJ0eUJv
cmRlclN0eWxlOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yOgogICAgICAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0Q29sb3I6CisgICAgICAgICAgICBpZiAoIWJvcmRlckZhbGxiYWNrU2hvcnRoYW5kUHJvcGVy
dHkpCisgICAgICAgICAgICAgICAgYm9yZGVyRmFsbGJhY2tTaG9ydGhhbmRQcm9wZXJ0eSA9IENT
U1Byb3BlcnR5Qm9yZGVyQ29sb3I7CisKICAgICAgICAgICAgIC8vIEZJWE1FOiBEZWFsIHdpdGgg
Y2FzZXMgd2hlcmUgb25seSBzb21lIG9mIGJvcmRlci0odG9wfHJpZ2h0fGJvdHRvbXxsZWZ0KSBh
cmUgc3BlY2lmaWVkLgotICAgICAgICAgICAgc2hvcnRoYW5kUHJvcGVydHlJRCA9IENTU1Byb3Bl
cnR5Qm9yZGVyOwotICAgICAgICAgICAgaWYgKHNob3J0aGFuZFByb3BlcnR5QXBwZWFyZWQuZ2V0
KENTU1Byb3BlcnR5Qm9yZGVyIC0gZmlyc3RDU1NQcm9wZXJ0eSkpCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm9yZGVyQWJyaWRn
ZWRTaG9ydGhhbmQoKS5sZW5ndGgoKSAmJiBzaG9ydGhhbmRQcm9wZXJ0eUlEOyBpKyspIHsKLSAg
ICAgICAgICAgICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQgPSAq
KGJvcmRlckFicmlkZ2VkU2hvcnRoYW5kKCkucHJvcGVydGllc0ZvckluaXRpYWxpemF0aW9uKClb
aV0pOwotICAgICAgICAgICAgICAgIFN0cmluZyBjb21tb25WYWx1ZTsKLSAgICAgICAgICAgICAg
ICBib29sIGNvbW1vbkltcG9ydGFuY2UgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBmb3IgKHNp
emVfdCBqID0gMDsgaiA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytqKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5SUQgaWQgPSBzaG9ydGhhbmQucHJvcGVydGllcygpW2pdOwotICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NW
YWx1ZShpZCk7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBjdXJyZW50VmFsdWUgPSB2YWx1
ZSA/IHZhbHVlLT5jc3NUZXh0KCkgOiBTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc0ltcG9ydGFudCA9IHByb3BlcnR5SXNJbXBvcnRhbnQoaWQpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoaiAmJiAoY3VycmVudFZhbHVlICE9IGNvbW1vblZhbHVlIHx8IGNvbW1vbkltcG9y
dGFuY2UgIT0gaXNJbXBvcnRhbnQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaG9ydGhh
bmRQcm9wZXJ0eUlEID0gQ1NTUHJvcGVydHlJbnZhbGlkOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tb25WYWx1ZSA9IGN1cnJlbnRWYWx1
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbkltcG9ydGFuY2UgPSBpc0ltcG9ydGFu
dDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICghc2hvcnRoYW5kUHJvcGVydHlBcHBlYXJlZC5nZXQoQ1NTUHJv
cGVydHlCb3JkZXIgLSBmaXJzdENTU1Byb3BlcnR5KSkgeworICAgICAgICAgICAgICAgIHZhbHVl
ID0gZ2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUJvcmRlciwgUmV0dXJuTnVsbE9uVW5jb21t
b25WYWx1ZXMpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKKyAgICAgICAg
ICAgICAgICAgICAgc2hvcnRoYW5kUHJvcGVydHlBcHBlYXJlZC5lbnN1cmVTaXplQW5kU2V0KENT
U1Byb3BlcnR5Qm9yZGVyIC0gZmlyc3RDU1NQcm9wZXJ0eSwgbnVtQ1NTUHJvcGVydGllcyk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzaG9ydGhhbmRQcm9wZXJ0
eUlEID0gQ1NTUHJvcGVydHlCb3JkZXI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHNob3J0aGFu
ZFByb3BlcnR5VXNlZC5nZXQoQ1NTUHJvcGVydHlCb3JkZXIgLSBmaXJzdENTU1Byb3BlcnR5KSkK
KyAgICAgICAgICAgICAgICBzaG9ydGhhbmRQcm9wZXJ0eUlEID0gQ1NTUHJvcGVydHlCb3JkZXI7
CisgICAgICAgICAgICBpZiAoIXNob3J0aGFuZFByb3BlcnR5SUQpCisgICAgICAgICAgICAgICAg
c2hvcnRoYW5kUHJvcGVydHlJRCA9IGJvcmRlckZhbGxiYWNrU2hvcnRoYW5kUHJvcGVydHk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhv
cml6b250YWxTcGFjaW5nOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVy
dGljYWxTcGFjaW5nOgpAQCAtNzE2LDEzICs3MjUsMTIgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlT
ZXQ6OmFzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAg
ICAgIFN0cmluZyB2YWx1ZTsKICAgICAgICAgdW5zaWduZWQgc2hvcnRQcm9wZXJ0eUluZGV4ID0g
c2hvcnRoYW5kUHJvcGVydHlJRCAtIGZpcnN0Q1NTUHJvcGVydHk7CiAgICAgICAgIGlmIChzaG9y
dGhhbmRQcm9wZXJ0eUlEKSB7CiAgICAgICAgICAgICBpZiAoc2hvcnRoYW5kUHJvcGVydHlVc2Vk
LmdldChzaG9ydFByb3BlcnR5SW5kZXgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgaWYgKCFzaG9ydGhhbmRQcm9wZXJ0eUFwcGVhcmVkLmdldChzaG9ydFByb3BlcnR5
SW5kZXgpKQotICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0UHJvcGVydHlWYWx1ZShzaG9ydGhh
bmRQcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgIGlmICghc2hvcnRoYW5kUHJvcGVydHlBcHBlYXJl
ZC5nZXQoc2hvcnRQcm9wZXJ0eUluZGV4KSAmJiB2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGdldFByb3BlcnR5VmFsdWUoc2hvcnRoYW5kUHJvcGVydHlJRCwgUmV0dXJu
TnVsbE9uVW5jb21tb25WYWx1ZXMpOwogICAgICAgICAgICAgc2hvcnRoYW5kUHJvcGVydHlBcHBl
YXJlZC5lbnN1cmVTaXplQW5kU2V0KHNob3J0UHJvcGVydHlJbmRleCwgbnVtQ1NTUHJvcGVydGll
cyk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlT
ZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5o
CShyZXZpc2lvbiAxMTQ5NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNl
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNo
cmlua1RvRml0KCkgeyBtX3Byb3BlcnRpZXMuc2hyaW5rVG9GaXQoKTsgfQogCiAgICAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsK
LSAgICBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICBl
bnVtIENvbW1vblZhbHVlTW9kZSB7IE9taXRTaG9ydGhhbmRXaXRoVW5jb21tb25WYWx1ZXMsIFJl
dHVybk51bGxPblVuY29tbW9uVmFsdWVzIH07CisgICAgU3RyaW5nIGdldFByb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlJRCwgQ29tbW9uVmFsdWVNb2RlID0gT21pdFNob3J0aGFuZFdpdGhVbmNvbW1v
blZhbHVlcykgY29uc3Q7CiAgICAgYm9vbCBwcm9wZXJ0eUlzSW1wb3J0YW50KENTU1Byb3BlcnR5
SUQpIGNvbnN0OwogICAgIENTU1Byb3BlcnR5SUQgZ2V0UHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJv
cGVydHlJRCkgY29uc3Q7CiAgICAgYm9vbCBpc1Byb3BlcnR5SW1wbGljaXQoQ1NTUHJvcGVydHlJ
RCkgY29uc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTUxMTQpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNC0yNCAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSRUdSRVNTSU9OKHIxMTIxNzcp
OiBsaXN0U3R5bGVUeXBlIENTUyBwcm9wZXJ0eSBnZXRzIGNvbnZlcnRlZCBpbnRvIGxpc3RTdHls
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwMjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0
ZXN0IGNhc2VzIHRvIGNzc1RleHQtc2hvcnRoYW5kLmh0bWwgYW5kIHJlYmFzZWxpbmVkIHNvbWUg
dGVzdHMuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9jc3NUZXh0LXNob3J0aGFuZC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9jc3MvY3NzVGV4dC1zaG9ydGhhbmQuaHRtbDogQWRkZWQgbW9y
ZSB0ZXN0IGNhc2VzLgorICAgICAgICAqIGZhc3QvY3NzL3JlbW92ZS1zaG9ydGhhbmQtZXhwZWN0
ZWQudHh0OiBDb3JyZWN0bHkgYWRkcyBib3RoIGJvcmRlci13aWR0aCBhbmQgYm9yZGVyLXN0eWxl
CisgICAgICAgIHdoZW4gYm9yZGVyLWNvbG9yIGlzIG1pc3NpbmcuCisgICAgICAgICogcHJpbnRp
bmcvcGFnZS1ydWxlLWNzcy10ZXh0LWV4cGVjdGVkLnR4dDogQ29ycmVjdGx5IHVzZXMgYm9yZGVy
LXdpZHRoIGluc3RlYWQgb2YgYm9yZGVyLgorCiAyMDEyLTA0LTI0ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCByMTE1MDA5OyBJdCBkb2Vzbid0IG1h
a2UgbmVjZXNzYXJ5IGNoYW5nZXMgdG8gTm9kZVJhcmVEYXRhIGFuZCBOb2RlLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MvY3NzVGV4dC1zaG9ydGhhbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2Nzc1RleHQtc2hvcnRoYW5kLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTE0OTUxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzVGV4dC1zaG9y
dGhhbmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04LDE4ICs4LDIxIEBAIFBBU1Mg
bm9ybWFsaXplQ3NzVGV4dChlbGVtZW50LnN0eWxlLmNzc1QKIFBBU1Mgbm9ybWFsaXplQ3NzVGV4
dChlbGVtZW50LnN0eWxlLmNzc1RleHQpIGlzICJib3JkZXI6IDFweCByZWQiCiBQQVNTIG5vcm1h
bGl6ZUNzc1RleHQoZWxlbWVudC5zdHlsZS5jc3NUZXh0KSBpcyAiYm9yZGVyOiByZWQiCiBQQVNT
IG5vcm1hbGl6ZUNzc1RleHQoZWxlbWVudC5zdHlsZS5jc3NUZXh0KSBpcyAiYm9yZGVyOiAxcHgi
Ci1QQVNTIG5vcm1hbGl6ZUNzc1RleHQoZWxlbWVudC5zdHlsZS5jc3NUZXh0KSBpcyAiYm9yZGVy
LWJvdHRvbS13aWR0aDogM3B4OyBib3JkZXItbGVmdC13aWR0aDogNHB4OyBib3JkZXItcmlnaHQt
d2lkdGg6IDJweDsgYm9yZGVyLXRvcC13aWR0aDogMXB4IgotUEFTUyBub3JtYWxpemVDc3NUZXh0
KGVsZW1lbnQuc3R5bGUuY3NzVGV4dCkgaXMgImJvcmRlci1ib3R0b20td2lkdGg6IDFweDsgYm9y
ZGVyLWxlZnQtd2lkdGg6IDFweDsgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7IGJvcmRlci10b3At
d2lkdGg6IDJweCIKK1BBU1Mgbm9ybWFsaXplQ3NzVGV4dChlbGVtZW50LnN0eWxlLmNzc1RleHQp
IGlzICJib3JkZXItd2lkdGg6IDFweCAycHggM3B4IDRweCIKK1BBU1Mgbm9ybWFsaXplQ3NzVGV4
dChlbGVtZW50LnN0eWxlLmNzc1RleHQpIGlzICJib3JkZXItd2lkdGg6IDJweCAxcHggMXB4Igog
UEFTUyBub3JtYWxpemVDc3NUZXh0KGVsZW1lbnQuc3R5bGUuY3NzVGV4dCkgaXMgImJvcmRlci1i
b3R0b20td2lkdGg6IDFweDsgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsgYm9yZGVyLXJpZ2h0LXdp
ZHRoOiAxcHg7IGJvcmRlci10b3Atd2lkdGg6IDFweCAhaW1wb3J0YW50IgotUEFTUyBub3JtYWxp
emVDc3NUZXh0KGVsZW1lbnQuc3R5bGUuY3NzVGV4dCkgaXMgImJvcmRlci1ib3R0b20td2lkdGg6
IDFweDsgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7IGJv
cmRlci10b3AtY29sb3I6IHJlZDsgYm9yZGVyLXRvcC13aWR0aDogMXB4IgorUEFTUyBub3JtYWxp
emVDc3NUZXh0KGVsZW1lbnQuc3R5bGUuY3NzVGV4dCkgaXMgImJvcmRlci10b3AtY29sb3I6IHJl
ZDsgYm9yZGVyLXdpZHRoOiAxcHgiCiBQQVNTIG5vcm1hbGl6ZUNzc1RleHQoZWxlbWVudC5zdHls
ZS5jc3NUZXh0KSBpcyAiYm9yZGVyOiBkb3R0ZWQiCitQQVNTIG5vcm1hbGl6ZUNzc1RleHQoZWxl
bWVudC5zdHlsZS5jc3NUZXh0KSBpcyAiYm9yZGVyLXdpZHRoOiAxcHgiCiBQQVNTIG5vcm1hbGl6
ZUNzc1RleHQoZWxlbWVudC5zdHlsZS5jc3NUZXh0KSBpcyAiYm9yZGVyLXNwYWNpbmc6IDFweCAy
cHgiCiBQQVNTIG5vcm1hbGl6ZUNzc1RleHQoZWxlbWVudC5zdHlsZS5jc3NUZXh0KSBpcyAiZm9u
dC1mYW1pbHk6IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogM2VtOyBmb250LXN0eWxlOiBpdGFsaWM7
IGZvbnQtd2VpZ2h0OiBib2xkOyBsaW5lLWhlaWdodDogMmVtIgogUEFTUyBub3JtYWxpemVDc3NU
ZXh0KGVsZW1lbnQuc3R5bGUuY3NzVGV4dCkgaXMgImxpc3Qtc3R5bGU6IGNpcmNsZSBpbnNpZGUi
CiBQQVNTIG5vcm1hbGl6ZUNzc1RleHQoZWxlbWVudC5zdHlsZS5jc3NUZXh0KSBpcyAibWFyZ2lu
OiAxcHggMnB4IDNweCA0cHgiCiBQQVNTIG5vcm1hbGl6ZUNzc1RleHQoZWxlbWVudC5zdHlsZS5j
c3NUZXh0KSBpcyAib3V0bGluZTogYmx1ZSBkb3R0ZWQgMnB4IgogRkFJTCBub3JtYWxpemVDc3NU
ZXh0KGVsZW1lbnQuc3R5bGUuY3NzVGV4dCkgc2hvdWxkIGJlIG92ZXJmbG93OiBzY3JvbGwgaGlk
ZGVuLiBXYXMgb3ZlcmZsb3cteDogc2Nyb2xsOyBvdmVyZmxvdy15OiBoaWRkZW4uCitQQVNTIG5v
cm1hbGl6ZUNzc1RleHQoZWxlbWVudC5zdHlsZS5jc3NUZXh0KSBpcyAib3ZlcmZsb3c6IHNjcm9s
bCIKIFBBU1Mgbm9ybWFsaXplQ3NzVGV4dChlbGVtZW50LnN0eWxlLmNzc1RleHQpIGlzICJwYWRk
aW5nOiAxcHggMnB4IDNweCA0cHgiCitQQVNTIG5vcm1hbGl6ZUNzc1RleHQoZWxlbWVudC5zdHls
ZS5jc3NUZXh0KSBpcyAibGlzdC1zdHlsZS10eXBlOiBsb3dlci1hbHBoYSIKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvY3NzVGV4dC1zaG9ydGhhbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9jc3NUZXh0LXNob3J0aGFuZC5odG1sCShyZXZpc2lvbiAxMTQ5NTEpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3NUZXh0LXNob3J0aGFuZC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMywxNSArMTMsMTQgQEAgdmFyIHRlc3RzID0gWwogICAgIFsnYm9yZGVyOiAxcHggcmVk
OycsICdib3JkZXI6IDFweCByZWQ7J10sCiAgICAgWydib3JkZXI6IHJlZDsnLCAnYm9yZGVyOiBy
ZWQ7J10sCiAgICAgWydib3JkZXItdG9wOiAxcHg7IGJvcmRlci1yaWdodDogMXB4OyBib3JkZXIt
Ym90dG9tOiAxcHg7IGJvcmRlci1sZWZ0OiAxcHg7JywgJ2JvcmRlcjogMXB4OyddLAotICAgIFsn
Ym9yZGVyLXRvcDogMXB4OyBib3JkZXItcmlnaHQ6IDJweDsgYm9yZGVyLWJvdHRvbTogM3B4OyBi
b3JkZXItbGVmdDogNHB4OycsCi0gICAgJ2JvcmRlci10b3Atd2lkdGg6IDFweDsgYm9yZGVyLXJp
Z2h0LXdpZHRoOiAycHg7IGJvcmRlci1ib3R0b20td2lkdGg6IDNweDsgYm9yZGVyLWxlZnQtd2lk
dGg6IDRweDsnXSwKLSAgICBbJ2JvcmRlcjogMXB4OyBib3JkZXItdG9wOiAycHg7JywKLSAgICAn
Ym9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7IGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsgYm9yZGVy
LWxlZnQtd2lkdGg6IDFweDsgYm9yZGVyLXRvcC13aWR0aDogMnB4OyddLAorICAgIFsnYm9yZGVy
LXRvcDogMXB4OyBib3JkZXItcmlnaHQ6IDJweDsgYm9yZGVyLWJvdHRvbTogM3B4OyBib3JkZXIt
bGVmdDogNHB4OycsICdib3JkZXItd2lkdGg6IDFweCAycHggM3B4IDRweDsnXSwKKyAgICBbJ2Jv
cmRlcjogMXB4OyBib3JkZXItdG9wOiAycHg7JywgJ2JvcmRlci13aWR0aDogMnB4IDFweCAxcHg7
J10sCiAgICAgWydib3JkZXI6IDFweDsgYm9yZGVyLXRvcDogMXB4ICFpbXBvcnRhbnQ7JywKICAg
ICAnYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7IGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsgYm9y
ZGVyLWxlZnQtd2lkdGg6IDFweDsgYm9yZGVyLXRvcC13aWR0aDogMXB4ICFpbXBvcnRhbnQ7J10s
Ci0gICAgWydib3JkZXI6IDFweDsgYm9yZGVyLXRvcC1jb2xvcjogcmVkOycsCi0gICAgJ2JvcmRl
ci1yaWdodC13aWR0aDogMXB4OyBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IGJvcmRlci1sZWZ0
LXdpZHRoOiAxcHg7IGJvcmRlci10b3Atd2lkdGg6IDFweDsgYm9yZGVyLXRvcC1jb2xvcjogcmVk
OyddLAorCisgICAgWydib3JkZXI6IDFweDsgYm9yZGVyLXRvcC1jb2xvcjogcmVkOycsICdib3Jk
ZXItd2lkdGg6IDFweDsgYm9yZGVyLXRvcC1jb2xvcjogcmVkOyddLAogICAgIFsnYm9yZGVyOiBz
b2xpZDsgYm9yZGVyLXN0eWxlOiBkb3R0ZWQnLCAnYm9yZGVyOiBkb3R0ZWQ7J10sCisgICAgWydi
b3JkZXItd2lkdGg6IDFweDsnLCAnYm9yZGVyLXdpZHRoOiAxcHg7J10sCiAKICAgICBbJy13ZWJr
aXQtYm9yZGVyLWhvcml6b250YWwtc3BhY2luZzogMXB4OyAtd2Via2l0LWJvcmRlci12ZXJ0aWNh
bC1zcGFjaW5nOiAycHg7JywgJ2JvcmRlci1zcGFjaW5nOiAxcHggMnB4OyddLAogCkBAIC0zMyw3
ICszMiwxMCBAQCB2YXIgdGVzdHMgPSBbCiAgICAgWydtYXJnaW4tdG9wOiAxcHg7IG1hcmdpbi1y
aWdodDogMnB4OyBtYXJnaW4tYm90dG9tOiAzcHg7IG1hcmdpbi1sZWZ0OiA0cHg7JywgJ21hcmdp
bjogMXB4IDJweCAzcHggNHB4OyddLAogICAgIFsnb3V0bGluZS13aWR0aDogMnB4OyBvdXRsaW5l
LXN0eWxlOiBkb3R0ZWQ7IG91dGxpbmUtY29sb3I6IGJsdWU7JywgJ291dGxpbmU6IGJsdWUgZG90
dGVkIDJweDsnXSwKICAgICBbJ292ZXJmbG93LXg6IHNjcm9sbDsgb3ZlcmZsb3cteTogaGlkZGVu
OycsICdvdmVyZmxvdzogc2Nyb2xsIGhpZGRlbjsnXSwKKyAgICBbJ292ZXJmbG93LXg6IHNjcm9s
bDsgb3ZlcmZsb3cteTogc2Nyb2xsOycsICdvdmVyZmxvdzogc2Nyb2xsOyddLAogICAgIFsncGFk
ZGluZy10b3A6IDFweDsgcGFkZGluZy1yaWdodDogMnB4OyBwYWRkaW5nLWJvdHRvbTogM3B4OyBw
YWRkaW5nLWxlZnQ6IDRweDsnLCAncGFkZGluZzogMXB4IDJweCAzcHggNHB4OyddLAorCisJWyds
aXN0LXN0eWxlLXR5cGU6IGxvd2VyLWFscGhhOycsICdsaXN0LXN0eWxlLXR5cGU6IGxvd2VyLWFs
cGhhOyddCiBdOwogCiBmdW5jdGlvbiBub3JtYWxpemVDc3NUZXh0KHRleHQpIHsgcmV0dXJuIHRl
eHQudHJpbSgpLnNwbGl0KC87XHMqLykuc29ydCgpLnNsaWNlKDEpLmpvaW4oIjsgIik7IH0KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3JlbW92ZS1zaG9ydGhhbmQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3JlbW92ZS1zaG9ydGhhbmQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxMTQ5NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZW1vdmUt
c2hvcnRoYW5kLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTMgKzI1LDEzIEBA
IHJlbW92ZXMgImJvcmRlciIKIGFuZCBhZGRzICJib3JkZXItdG9wLXdpZHRoLCBib3JkZXItcmln
aHQtd2lkdGgsIGJvcmRlci1ib3R0b20td2lkdGgsIGJvcmRlci10b3Atc3R5bGUsIGJvcmRlci1y
aWdodC1zdHlsZSwgYm9yZGVyLWJvdHRvbS1zdHlsZSwgYm9yZGVyLXRvcC1jb2xvciwgYm9yZGVy
LXJpZ2h0LWNvbG9yLCBib3JkZXItYm90dG9tLWNvbG9yIi4KIFJlbW92aW5nIGJvcmRlci1jb2xv
cgogcmVtb3ZlcyAiYm9yZGVyIgotYW5kIGFkZHMgImJvcmRlciIuCithbmQgYWRkcyAiYm9yZGVy
LXdpZHRoLCBib3JkZXItc3R5bGUiLgogUmVtb3ZpbmcgYm9yZGVyLXN0eWxlCiByZW1vdmVzICJi
b3JkZXIiCi1hbmQgYWRkcyAiYm9yZGVyIi4KK2FuZCBhZGRzICJib3JkZXItd2lkdGgsIGJvcmRl
ci1jb2xvciIuCiBSZW1vdmluZyBib3JkZXItd2lkdGgKIHJlbW92ZXMgImJvcmRlciIKLWFuZCBh
ZGRzICJib3JkZXIiLgorYW5kIGFkZHMgImJvcmRlci1zdHlsZSwgYm9yZGVyLWNvbG9yIi4KIFJl
bW92aW5nIGJvcmRlci1yYWRpdXMKIHJlbW92ZXMgImJvcmRlci10b3AtbGVmdC1yYWRpdXMsIGJv
cmRlci10b3AtcmlnaHQtcmFkaXVzLCBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cywgYm9yZGVy
LWJvdHRvbS1sZWZ0LXJhZGl1cyIKIGFuZCBhZGRzICIiLgpJbmRleDogTGF5b3V0VGVzdHMvcHJp
bnRpbmcvcGFnZS1ydWxlLWNzcy10ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxMTQ5NTEpCisrKyBMYXlvdXRUZXN0cy9wcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogQHBhZ2UgeyBtYXJnaW4t
dG9wOiA1Y207IG1hcmdpbi1ib3R0b206IDEwY207IH0KIEBwYWdlIDpsZWZ0IHsgbWFyZ2luLXJp
Z2h0OiAzY207IH0KIEBwYWdlIDpyaWdodCB7IG1hcmdpbi1sZWZ0OiAzY207IH0KLUBwYWdlIDpm
aXJzdCB7IGJvcmRlcjogMXB4OyB9CitAcGFnZSA6Zmlyc3QgeyBib3JkZXItd2lkdGg6IDFweDsg
fQogQHBhZ2UgaGVsbG8geyBjb2xvcjogZ3JlZW47IH0KIEBwYWdlIHdvcmxkOnJpZ2h0IHsgYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW47IH0KIEBtZWRpYSBwcmludCB7IEBwYWdlIHNvbWVwYWdlOmZp
cnN0IHsgbWFyZ2luOiAzY207IH0gfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138692</attachid>
            <date>2012-04-24 16:56:56 -0700</date>
            <delta_ts>2012-04-25 16:24:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83026-20120424165922.patch</filename>
            <type>text/plain</type>
            <size>20098</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTExNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA0LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjExMjE3Nyk6
IGxpc3RTdHlsZVR5cGUgQ1NTIHByb3BlcnR5IGdldHMgY29udmVydGVkIGludG8gbGlzdFN0eWxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzAyNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIHRo
ZSBidWcgYnkgbm90IHVzaW5nIHNob3J0aGFuZCBub3RhdGlvbnMgd2hlbiBzb21lIHZhbHVlcyBh
cmUgbWlzc2luZy4KKworICAgICAgICBIb3dldmVyLCB3ZSBzdGlsbCB3YW50IHRvIHJldHVybiBh
IHZhbHVlIHdoZW4gc2hvcnRoYW5kIGJvcmRlciBwcm9wZXJ0eSBpcyBleHBsaWNpdGx5CisgICAg
ICAgIHJlcXVlc3RlZCBzbyBleHRyYWN0IGJvcmRlclByb3BlcnR5VmFsdWUgd2l0aCBhIGZsYWcg
dG8gc3VwcG9ydCBib3RoIGJlaGF2aW9ycy4KKworICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5
U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclByb3BlcnR5VmFsdWUpOiBFeHRyYWN0
ZWQgZnJvbSBnZXRQcm9wZXJ0eVZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0
eVNldDo6Z2V0UHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5
U2V0OjpnZXQ0VmFsdWVzKTogRG9uJ3QgcmV0dXJuIHZhbHVlcyB3aGVuIHByaW9yaXR5IGRvbid0
IG1hdGNoLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0U2hvcnRoYW5k
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0Q29tbW9uVmFs
dWUpOiBEb24ndCByZXR1cm4gbnVsbCBzdHJpbmcgZm9yIGluaXRpYWwgdmFsdWVzCisgICAgICAg
IHRvIGRpc2FtYmlndWF0ZSBtaXNzaW5nIHZhbHVlcyBhbmQgImluaXRpYWwiIGluIGdldFByb3Bl
cnR5VmFsdWUuIEFsc28gY2hlY2sgcHJvcHJpZXR5LgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQ
cm9wZXJ0eVNldDo6YXNUZXh0KTogU3VwcG9ydCBlbWl0dGluZyBib3JkZXItd2lkdGgsIGJvcmRl
ci1zdHlsZSwgYW5kCisgICAgICAgIGJvcmRlci1jb2xvciB3aGVuIGJvcmRlciBkb2Vzbid0IHdv
cmsgYnV0IHRoZSBmb3JtZXIgcHJvcGVydGllcyBkby4KKwogMjAxMi0wNC0yNCAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZlcnQgcjExNTAwOTsgSXQgZG9l
c24ndCBtYWtlIG5lY2Vzc2FyeSBjaGFuZ2VzIHRvIE5vZGVSYXJlRGF0YSBhbmQgTm9kZS4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAJKHJldmlzaW9uIDExNDk1
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA5LDE5ICsxMDksOCBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJv
cGVydHlWYWx1CiAgICAgICAgIHJldHVybiBnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoYmFja2dy
b3VuZFJlcGVhdFNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDoK
ICAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShiYWNrZ3JvdW5kU2hvcnRo
YW5kKCkpOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6IHsKLSAgICAgICAgY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCBwcm9wZXJ0aWVzWzNdID0geyBib3JkZXJXaWR0aFNob3J0aGFu
ZCgpLCBib3JkZXJTdHlsZVNob3J0aGFuZCgpLCBib3JkZXJDb2xvclNob3J0aGFuZCgpIH07Ci0g
ICAgICAgIFN0cmluZyByZXM7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FS
UkFZX0xFTkdUSChwcm9wZXJ0aWVzKTsgKytpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgdmFsdWUg
PSBnZXRDb21tb25WYWx1ZShwcm9wZXJ0aWVzW2ldKTsKLSAgICAgICAgICAgIGlmICghdmFsdWUu
aXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXJlcy5pc051bGwoKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmVzICs9ICIgIjsKLSAgICAgICAgICAgICAgICByZXMgKz0gdmFsdWU7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKKyAgICAgICAgcmV0dXJuIGJvcmRlclByb3BlcnR5VmFs
dWUoT21pdFNob3J0aGFuZFdpdGhVbmNvbW1vblZhbHVlcyk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclRvcDoKICAgICAgICAgcmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKGJvcmRlclRvcFNo
b3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQ6CkBAIC0yNTYsMjYg
KzI0NSwyOSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Zm9udFZhbHVlKCkgY29uCiBTdHJp
bmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kJiBzaG9ydGhhbmQpIGNvbnN0CiB7CiAgICAgLy8gQXNzdW1lIHRoZSBwcm9wZXJ0aWVzIGFy
ZSBpbiB0aGUgdXN1YWwgb3JkZXIgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LgotICAgIFJlZlB0
cjxDU1NWYWx1ZT4gdG9wVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNob3J0aGFuZC5wcm9w
ZXJ0aWVzKClbMF0pOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmlnaHRWYWx1ZSA9IGdldFByb3Bl
cnR5Q1NTVmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVsxXSk7Ci0gICAgUmVmUHRyPENTU1Zh
bHVlPiBib3R0b21WYWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUoc2hvcnRoYW5kLnByb3BlcnRp
ZXMoKVsyXSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBsZWZ0VmFsdWUgPSBnZXRQcm9wZXJ0eUNT
U1ZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbM10pOworICAgIGNvbnN0IENTU1Byb3BlcnR5
KiB0b3AgPSBmaW5kUHJvcGVydHlXaXRoSWQoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVswXSk7Cisg
ICAgY29uc3QgQ1NTUHJvcGVydHkqIHJpZ2h0ID0gZmluZFByb3BlcnR5V2l0aElkKHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbMV0pOworICAgIGNvbnN0IENTU1Byb3BlcnR5KiBib3R0b20gPSBmaW5k
UHJvcGVydHlXaXRoSWQoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVsyXSk7CisgICAgY29uc3QgQ1NT
UHJvcGVydHkqIGxlZnQgPSBmaW5kUHJvcGVydHlXaXRoSWQoc2hvcnRoYW5kLnByb3BlcnRpZXMo
KVszXSk7CiAKICAgICAvLyBBbGwgNCBwcm9wZXJ0aWVzIG11c3QgYmUgc3BlY2lmaWVkLgotICAg
IGlmICghdG9wVmFsdWUgfHwgIXJpZ2h0VmFsdWUgfHwgIWJvdHRvbVZhbHVlIHx8ICFsZWZ0VmFs
dWUpCisgICAgaWYgKCF0b3AgfHwgIXRvcC0+dmFsdWUoKSB8fCAhcmlnaHQgfHwgIXJpZ2h0LT52
YWx1ZSgpIHx8ICFib3R0b20gfHwgIWJvdHRvbS0+dmFsdWUoKSB8fCAhbGVmdCB8fCAhbGVmdC0+
dmFsdWUoKQorICAgICAgICB8fCB0b3AtPnZhbHVlKCktPmlzSW5pdGlhbFZhbHVlKCkgfHwgcmln
aHQtPnZhbHVlKCktPmlzSW5pdGlhbFZhbHVlKCkgfHwgYm90dG9tLT52YWx1ZSgpLT5pc0luaXRp
YWxWYWx1ZSgpIHx8IGJvdHRvbS0+dmFsdWUoKS0+aXNJbml0aWFsVmFsdWUoKQorICAgICAgICB8
fCB0b3AtPmlzSW1wb3J0YW50KCkgIT0gcmlnaHQtPmlzSW1wb3J0YW50KCkgfHwgcmlnaHQtPmlz
SW1wb3J0YW50KCkgIT0gYm90dG9tLT5pc0ltcG9ydGFudCgpCisgICAgICAgIHx8IGJvdHRvbS0+
aXNJbXBvcnRhbnQoKSAhPSBsZWZ0LT5pc0ltcG9ydGFudCgpKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAKLSAgICBib29sIHNob3dMZWZ0ID0gcmlnaHRWYWx1ZS0+Y3NzVGV4dCgpICE9IGxl
ZnRWYWx1ZS0+Y3NzVGV4dCgpOwotICAgIGJvb2wgc2hvd0JvdHRvbSA9ICh0b3BWYWx1ZS0+Y3Nz
VGV4dCgpICE9IGJvdHRvbVZhbHVlLT5jc3NUZXh0KCkpIHx8IHNob3dMZWZ0OwotICAgIGJvb2wg
c2hvd1JpZ2h0ID0gKHRvcFZhbHVlLT5jc3NUZXh0KCkgIT0gcmlnaHRWYWx1ZS0+Y3NzVGV4dCgp
KSB8fCBzaG93Qm90dG9tOworICAgIGJvb2wgc2hvd0xlZnQgPSByaWdodC0+dmFsdWUoKS0+Y3Nz
VGV4dCgpICE9IGxlZnQtPnZhbHVlKCktPmNzc1RleHQoKTsKKyAgICBib29sIHNob3dCb3R0b20g
PSAodG9wLT52YWx1ZSgpLT5jc3NUZXh0KCkgIT0gYm90dG9tLT52YWx1ZSgpLT5jc3NUZXh0KCkp
IHx8IHNob3dMZWZ0OworICAgIGJvb2wgc2hvd1JpZ2h0ID0gKHRvcC0+dmFsdWUoKS0+Y3NzVGV4
dCgpICE9IHJpZ2h0LT52YWx1ZSgpLT5jc3NUZXh0KCkpIHx8IHNob3dCb3R0b207CiAKLSAgICBT
dHJpbmcgcmVzID0gdG9wVmFsdWUtPmNzc1RleHQoKTsKKyAgICBTdHJpbmcgcmVzID0gdG9wLT52
YWx1ZSgpLT5jc3NUZXh0KCk7CiAgICAgaWYgKHNob3dSaWdodCkKLSAgICAgICAgcmVzICs9ICIg
IiArIHJpZ2h0VmFsdWUtPmNzc1RleHQoKTsKKyAgICAgICAgcmVzICs9ICIgIiArIHJpZ2h0LT52
YWx1ZSgpLT5jc3NUZXh0KCk7CiAgICAgaWYgKHNob3dCb3R0b20pCi0gICAgICAgIHJlcyArPSAi
ICIgKyBib3R0b21WYWx1ZS0+Y3NzVGV4dCgpOworICAgICAgICByZXMgKz0gIiAiICsgYm90dG9t
LT52YWx1ZSgpLT5jc3NUZXh0KCk7CiAgICAgaWYgKHNob3dMZWZ0KQotICAgICAgICByZXMgKz0g
IiAiICsgbGVmdFZhbHVlLT5jc3NUZXh0KCk7CisgICAgICAgIHJlcyArPSAiICIgKyBsZWZ0LT52
YWx1ZSgpLT5jc3NUZXh0KCk7CiAKICAgICByZXR1cm4gcmVzOwogfQpAQCAtMzg3LDEwICszNzks
MTAgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkgewogICAgICAgICBp
ZiAoIWlzUHJvcGVydHlJbXBsaWNpdChzaG9ydGhhbmQucHJvcGVydGllcygpW2ldKSkgewogICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUoc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtpXSk7Ci0gICAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUt
PmlzSW5pdGlhbFZhbHVlKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAg
ICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGlmICghcmVzLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJlcyAr
PSAiICI7CiAgICAgICAgICAgICByZXMgKz0gdmFsdWUtPmNzc1RleHQoKTsKQEAgLTQwMywxMCAr
Mzk1LDExIEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRTaG9ydGhhbmRWYWwKIFN0cmlu
ZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRDb21tb25WYWx1ZShjb25zdCBTdHlsZVByb3BlcnR5U2hv
cnRoYW5kJiBzaG9ydGhhbmQpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlczsKKyAgICBib29sIGlz
SW1wb3J0YW50ID0gZmFsc2U7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNob3J0aGFu
ZC5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBnZXRQ
cm9wZXJ0eUNTU1ZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0pOwogICAgICAgICAvLyBG
SVhNRTogQ1NTSW5pdGlhbFZhbHVlOjpjc3NUZXh0IHNob3VsZCBnZW5lcmF0ZSB0aGUgcmlnaHQg
dmFsdWUuCi0gICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpCisg
ICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAg
IFN0cmluZyB0ZXh0ID0gdmFsdWUtPmNzc1RleHQoKTsKICAgICAgICAgaWYgKHRleHQuaXNOdWxs
KCkpCkBAIC00MTUsMTAgKzQwOCwzOCBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0Q29t
bW9uVmFsdWUoCiAgICAgICAgICAgICByZXMgPSB0ZXh0OwogICAgICAgICBlbHNlIGlmIChyZXMg
IT0gdGV4dCkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgICAgICBib29sIGN1
cnJlbnRQcm9wZXJ0eUlzSW1wb3J0YW50ID0gcHJvcGVydHlJc0ltcG9ydGFudChzaG9ydGhhbmQu
cHJvcGVydGllcygpW2ldKTsKKyAgICAgICAgaWYgKGkgJiYgaXNJbXBvcnRhbnQgIT0gY3VycmVu
dFByb3BlcnR5SXNJbXBvcnRhbnQpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
ICAgIGlzSW1wb3J0YW50ID0gY3VycmVudFByb3BlcnR5SXNJbXBvcnRhbnQ7CiAgICAgfQogICAg
IHJldHVybiByZXM7CiB9CiAKK2VudW0gQ29tbW9uVmFsdWVNb2RlIHsgT21pdFNob3J0aGFuZFdp
dGhVbmNvbW1vblZhbHVlcywgUmV0dXJuTnVsbE9uVW5jb21tb25WYWx1ZXMgfTsKKworU3RyaW5n
IFN0eWxlUHJvcGVydHlTZXQ6OmJvcmRlclByb3BlcnR5VmFsdWUoQ29tbW9uVmFsdWVNb2RlIHZh
bHVlTW9kZSkgY29uc3QKK3sKKyAgICBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHByb3Bl
cnRpZXNbM10gPSB7IGJvcmRlcldpZHRoU2hvcnRoYW5kKCksIGJvcmRlclN0eWxlU2hvcnRoYW5k
KCksIGJvcmRlckNvbG9yU2hvcnRoYW5kKCkgfTsKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKTsgKytpKSB7
CisgICAgICAgIFN0cmluZyB2YWx1ZSA9IGdldENvbW1vblZhbHVlKHByb3BlcnRpZXNbaV0pOwor
ICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGlmICh2YWx1ZU1vZGUg
PT0gUmV0dXJuTnVsbE9uVW5jb21tb25WYWx1ZXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0
cmluZygpOworICAgICAgICAgICAgQVNTRVJUKHZhbHVlTW9kZSA9PSBPbWl0U2hvcnRoYW5kV2l0
aFVuY29tbW9uVmFsdWVzKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIGlmICh2YWx1ZSA9PSAiaW5pdGlhbCIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaWYgKCFyZXN1bHQuaXNOdWxsKCkpCisgICAgICAgICAgICByZXN1bHQgKz0gIiAiOworICAg
ICAgICByZXN1bHQgKz0gdmFsdWU7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IFN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKSBjb25zdAogewogICAgIGNvbnN0IENTU1Byb3BlcnR5
KiBwcm9wZXJ0eSA9IGZpbmRQcm9wZXJ0eVdpdGhJZChwcm9wZXJ0eUlEKTsKQEAgLTU4MCw2ICs2
MDEsOCBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6YXNUZXh0KCkgY29uc3QKICAgICAgICAg
Y29uc3QgQ1NTUHJvcGVydHkmIHByb3AgPSBtX3Byb3BlcnRpZXNbbl07CiAgICAgICAgIENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCA9IHByb3AuaWQoKTsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBz
aG9ydGhhbmRQcm9wZXJ0eUlEID0gQ1NTUHJvcGVydHlJbnZhbGlkOworICAgICAgICBDU1NQcm9w
ZXJ0eUlEIGJvcmRlckZhbGxiYWNrU2hvcnRoYW5kUHJvcGVydHkgPSBDU1NQcm9wZXJ0eUludmFs
aWQ7CisgICAgICAgIFN0cmluZyB2YWx1ZTsKIAogICAgICAgICBzd2l0Y2ggKHByb3BlcnR5SUQp
IHsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6CkBAIC01OTQs
NDQgKzYxNywzNiBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6YXNUZXh0KCkgY29uc3QKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZOgogICAgICAgICAgICAgcmVw
ZWF0WVByb3AgPSAmcHJvcDsKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyV2lkdGg6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BX
aWR0aDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGg6CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aDoKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRXaWR0aDoKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxl
OgorICAgICAgICAgICAgaWYgKCFib3JkZXJGYWxsYmFja1Nob3J0aGFuZFByb3BlcnR5KQorICAg
ICAgICAgICAgICAgIGJvcmRlckZhbGxiYWNrU2hvcnRoYW5kUHJvcGVydHkgPSBDU1NQcm9wZXJ0
eUJvcmRlcldpZHRoOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGU6CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0U3R5bGU6Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcjoKKyAgICAg
ICAgICAgIGlmICghYm9yZGVyRmFsbGJhY2tTaG9ydGhhbmRQcm9wZXJ0eSkKKyAgICAgICAgICAg
ICAgICBib3JkZXJGYWxsYmFja1Nob3J0aGFuZFByb3BlcnR5ID0gQ1NTUHJvcGVydHlCb3JkZXJT
dHlsZTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOgogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUNvbG9yOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENv
bG9yOgorICAgICAgICAgICAgaWYgKCFib3JkZXJGYWxsYmFja1Nob3J0aGFuZFByb3BlcnR5KQor
ICAgICAgICAgICAgICAgIGJvcmRlckZhbGxiYWNrU2hvcnRoYW5kUHJvcGVydHkgPSBDU1NQcm9w
ZXJ0eUJvcmRlckNvbG9yOworCiAgICAgICAgICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGNhc2Vz
IHdoZXJlIG9ubHkgc29tZSBvZiBib3JkZXItKHRvcHxyaWdodHxib3R0b218bGVmdCkgYXJlIHNw
ZWNpZmllZC4KLSAgICAgICAgICAgIHNob3J0aGFuZFByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUJv
cmRlcjsKLSAgICAgICAgICAgIGlmIChzaG9ydGhhbmRQcm9wZXJ0eUFwcGVhcmVkLmdldChDU1NQ
cm9wZXJ0eUJvcmRlciAtIGZpcnN0Q1NTUHJvcGVydHkpKQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvcmRlckFicmlkZ2VkU2hv
cnRoYW5kKCkubGVuZ3RoKCkgJiYgc2hvcnRoYW5kUHJvcGVydHlJRDsgaSsrKSB7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0gKihib3Jk
ZXJBYnJpZGdlZFNob3J0aGFuZCgpLnByb3BlcnRpZXNGb3JJbml0aWFsaXphdGlvbigpW2ldKTsK
LSAgICAgICAgICAgICAgICBTdHJpbmcgY29tbW9uVmFsdWU7Ci0gICAgICAgICAgICAgICAgYm9v
bCBjb21tb25JbXBvcnRhbmNlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aiA9IDA7IGogPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraikgewotICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eUlEIGlkID0gc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtqXTsKLSAgICAgICAg
ICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUo
aWQpOwotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY3VycmVudFZhbHVlID0gdmFsdWUgPyB2
YWx1ZS0+Y3NzVGV4dCgpIDogU3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgaXNJ
bXBvcnRhbnQgPSBwcm9wZXJ0eUlzSW1wb3J0YW50KGlkKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGogJiYgKGN1cnJlbnRWYWx1ZSAhPSBjb21tb25WYWx1ZSB8fCBjb21tb25JbXBvcnRhbmNl
ICE9IGlzSW1wb3J0YW50KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kUHJv
cGVydHlJRCA9IENTU1Byb3BlcnR5SW52YWxpZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICghaikg
ewotICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uVmFsdWUgPSBjdXJyZW50VmFsdWU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjb21tb25JbXBvcnRhbmNlID0gaXNJbXBvcnRhbnQ7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoIXNob3J0aGFuZFByb3BlcnR5QXBwZWFyZWQuZ2V0KENTU1Byb3BlcnR5
Qm9yZGVyIC0gZmlyc3RDU1NQcm9wZXJ0eSkpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGJv
cmRlclByb3BlcnR5VmFsdWUoUmV0dXJuTnVsbE9uVW5jb21tb25WYWx1ZXMpOworICAgICAgICAg
ICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5k
UHJvcGVydHlBcHBlYXJlZC5lbnN1cmVTaXplQW5kU2V0KENTU1Byb3BlcnR5Qm9yZGVyIC0gZmly
c3RDU1NQcm9wZXJ0eSwgbnVtQ1NTUHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBzaG9ydGhhbmRQcm9wZXJ0eUlEID0gQ1NTUHJvcGVydHlCb3Jk
ZXI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHNob3J0aGFuZFByb3BlcnR5VXNlZC5nZXQoQ1NT
UHJvcGVydHlCb3JkZXIgLSBmaXJzdENTU1Byb3BlcnR5KSkKKyAgICAgICAgICAgICAgICBzaG9y
dGhhbmRQcm9wZXJ0eUlEID0gQ1NTUHJvcGVydHlCb3JkZXI7CisgICAgICAgICAgICBpZiAoIXNo
b3J0aGFuZFByb3BlcnR5SUQpCisgICAgICAgICAgICAgICAgc2hvcnRoYW5kUHJvcGVydHlJRCA9
IGJvcmRlckZhbGxiYWNrU2hvcnRoYW5kUHJvcGVydHk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nOgogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nOgpAQCAtNzE2
LDEyICs3MzEsMTEgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmFzVGV4dCgpIGNvbnN0CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyB2YWx1ZTsKICAg
ICAgICAgdW5zaWduZWQgc2hvcnRQcm9wZXJ0eUluZGV4ID0gc2hvcnRoYW5kUHJvcGVydHlJRCAt
IGZpcnN0Q1NTUHJvcGVydHk7CiAgICAgICAgIGlmIChzaG9ydGhhbmRQcm9wZXJ0eUlEKSB7CiAg
ICAgICAgICAgICBpZiAoc2hvcnRoYW5kUHJvcGVydHlVc2VkLmdldChzaG9ydFByb3BlcnR5SW5k
ZXgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCFzaG9ydGhh
bmRQcm9wZXJ0eUFwcGVhcmVkLmdldChzaG9ydFByb3BlcnR5SW5kZXgpKQorICAgICAgICAgICAg
aWYgKCFzaG9ydGhhbmRQcm9wZXJ0eUFwcGVhcmVkLmdldChzaG9ydFByb3BlcnR5SW5kZXgpICYm
IHZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0UHJvcGVydHlWYWx1
ZShzaG9ydGhhbmRQcm9wZXJ0eUlEKTsKICAgICAgICAgICAgIHNob3J0aGFuZFByb3BlcnR5QXBw
ZWFyZWQuZW5zdXJlU2l6ZUFuZFNldChzaG9ydFByb3BlcnR5SW5kZXgsIG51bUNTU1Byb3BlcnRp
ZXMpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNl
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgJ
KHJldmlzaW9uIDExNDk1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBwcml2YXRlOgogCiAgICAgU3Ry
aW5nIGdldFNob3J0aGFuZFZhbHVlKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKSBjb25z
dDsKICAgICBTdHJpbmcgZ2V0Q29tbW9uVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZCYpIGNvbnN0OworICAgIGVudW0gQ29tbW9uVmFsdWVNb2RlIHsgT21pdFNob3J0aGFuZFdpdGhV
bmNvbW1vblZhbHVlcywgUmV0dXJuTnVsbE9uVW5jb21tb25WYWx1ZXMgfTsKKyAgICBTdHJpbmcg
Ym9yZGVyUHJvcGVydHlWYWx1ZShDb21tb25WYWx1ZU1vZGUpIGNvbnN0OwogICAgIFN0cmluZyBn
ZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpIGNv
bnN0OwogICAgIFN0cmluZyBnZXQ0VmFsdWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQm
KSBjb25zdDsKICAgICBTdHJpbmcgYm9yZGVyU3BhY2luZ1ZhbHVlKGNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmKSBjb25zdDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNTExNCkKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA0
LTI0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJ
T04ocjExMjE3Nyk6IGxpc3RTdHlsZVR5cGUgQ1NTIHByb3BlcnR5IGdldHMgY29udmVydGVkIGlu
dG8gbGlzdFN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MzAyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIHRlc3QgY2FzZXMgdG8gY3NzVGV4dC1zaG9ydGhhbmQuaHRtbCBhbmQgcmViYXNl
bGluZWQgc29tZSB0ZXN0cy4KKworICAgICAgICAqIGZhc3QvY3NzL2Nzc1RleHQtc2hvcnRoYW5k
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Nzcy9jc3NUZXh0LXNob3J0aGFuZC5odG1s
OiBBZGRlZCBtb3JlIHRlc3QgY2FzZXMuCisgICAgICAgICogZmFzdC9jc3MvcmVtb3ZlLXNob3J0
aGFuZC1leHBlY3RlZC50eHQ6IENvcnJlY3RseSBhZGRzIGJvdGggYm9yZGVyLXdpZHRoIGFuZCBi
b3JkZXItc3R5bGUKKyAgICAgICAgd2hlbiBib3JkZXItY29sb3IgaXMgbWlzc2luZy4KKyAgICAg
ICAgKiBwcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQtZXhwZWN0ZWQudHh0OiBDb3JyZWN0bHkg
dXNlcyBib3JkZXItd2lkdGggaW5zdGVhZCBvZiBib3JkZXIuCisKIDIwMTItMDQtMjQgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IHIxMTUwMDk7IEl0
IGRvZXNuJ3QgbWFrZSBuZWNlc3NhcnkgY2hhbmdlcyB0byBOb2RlUmFyZURhdGEgYW5kIE5vZGUu
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3NUZXh0LXNob3J0aGFuZC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3NzVGV4dC1zaG9ydGhhbmQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMTQ5NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
c3NUZXh0LXNob3J0aGFuZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgsMTggKzgs
MjEgQEAgUEFTUyBub3JtYWxpemVDc3NUZXh0KGVsZW1lbnQuc3R5bGUuY3NzVAogUEFTUyBub3Jt
YWxpemVDc3NUZXh0KGVsZW1lbnQuc3R5bGUuY3NzVGV4dCkgaXMgImJvcmRlcjogMXB4IHJlZCIK
IFBBU1Mgbm9ybWFsaXplQ3NzVGV4dChlbGVtZW50LnN0eWxlLmNzc1RleHQpIGlzICJib3JkZXI6
IHJlZCIKIFBBU1Mgbm9ybWFsaXplQ3NzVGV4dChlbGVtZW50LnN0eWxlLmNzc1RleHQpIGlzICJi
b3JkZXI6IDFweCIKLVBBU1Mgbm9ybWFsaXplQ3NzVGV4dChlbGVtZW50LnN0eWxlLmNzc1RleHQp
IGlzICJib3JkZXItYm90dG9tLXdpZHRoOiAzcHg7IGJvcmRlci1sZWZ0LXdpZHRoOiA0cHg7IGJv
cmRlci1yaWdodC13aWR0aDogMnB4OyBib3JkZXItdG9wLXdpZHRoOiAxcHgiCi1QQVNTIG5vcm1h
bGl6ZUNzc1RleHQoZWxlbWVudC5zdHlsZS5jc3NUZXh0KSBpcyAiYm9yZGVyLWJvdHRvbS13aWR0
aDogMXB4OyBib3JkZXItbGVmdC13aWR0aDogMXB4OyBib3JkZXItcmlnaHQtd2lkdGg6IDFweDsg
Ym9yZGVyLXRvcC13aWR0aDogMnB4IgorUEFTUyBub3JtYWxpemVDc3NUZXh0KGVsZW1lbnQuc3R5
bGUuY3NzVGV4dCkgaXMgImJvcmRlci13aWR0aDogMXB4IDJweCAzcHggNHB4IgorUEFTUyBub3Jt
YWxpemVDc3NUZXh0KGVsZW1lbnQuc3R5bGUuY3NzVGV4dCkgaXMgImJvcmRlci13aWR0aDogMnB4
IDFweCAxcHgiCiBQQVNTIG5vcm1hbGl6ZUNzc1RleHQoZWxlbWVudC5zdHlsZS5jc3NUZXh0KSBp
cyAiYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OyBib3JkZXItbGVmdC13aWR0aDogMXB4OyBib3Jk
ZXItcmlnaHQtd2lkdGg6IDFweDsgYm9yZGVyLXRvcC13aWR0aDogMXB4ICFpbXBvcnRhbnQiCi1Q
QVNTIG5vcm1hbGl6ZUNzc1RleHQoZWxlbWVudC5zdHlsZS5jc3NUZXh0KSBpcyAiYm9yZGVyLWJv
dHRvbS13aWR0aDogMXB4OyBib3JkZXItbGVmdC13aWR0aDogMXB4OyBib3JkZXItcmlnaHQtd2lk
dGg6IDFweDsgYm9yZGVyLXRvcC1jb2xvcjogcmVkOyBib3JkZXItdG9wLXdpZHRoOiAxcHgiCitQ
QVNTIG5vcm1hbGl6ZUNzc1RleHQoZWxlbWVudC5zdHlsZS5jc3NUZXh0KSBpcyAiYm9yZGVyLXRv
cC1jb2xvcjogcmVkOyBib3JkZXItd2lkdGg6IDFweCIKIFBBU1Mgbm9ybWFsaXplQ3NzVGV4dChl
bGVtZW50LnN0eWxlLmNzc1RleHQpIGlzICJib3JkZXI6IGRvdHRlZCIKK1BBU1Mgbm9ybWFsaXpl
Q3NzVGV4dChlbGVtZW50LnN0eWxlLmNzc1RleHQpIGlzICJib3JkZXItd2lkdGg6IDFweCIKIFBB
U1Mgbm9ybWFsaXplQ3NzVGV4dChlbGVtZW50LnN0eWxlLmNzc1RleHQpIGlzICJib3JkZXItc3Bh
Y2luZzogMXB4IDJweCIKIFBBU1Mgbm9ybWFsaXplQ3NzVGV4dChlbGVtZW50LnN0eWxlLmNzc1Rl
eHQpIGlzICJmb250LWZhbWlseTogc2Fucy1zZXJpZjsgZm9udC1zaXplOiAzZW07IGZvbnQtc3R5
bGU6IGl0YWxpYzsgZm9udC13ZWlnaHQ6IGJvbGQ7IGxpbmUtaGVpZ2h0OiAyZW0iCiBQQVNTIG5v
cm1hbGl6ZUNzc1RleHQoZWxlbWVudC5zdHlsZS5jc3NUZXh0KSBpcyAibGlzdC1zdHlsZTogY2ly
Y2xlIGluc2lkZSIKIFBBU1Mgbm9ybWFsaXplQ3NzVGV4dChlbGVtZW50LnN0eWxlLmNzc1RleHQp
IGlzICJtYXJnaW46IDFweCAycHggM3B4IDRweCIKIFBBU1Mgbm9ybWFsaXplQ3NzVGV4dChlbGVt
ZW50LnN0eWxlLmNzc1RleHQpIGlzICJvdXRsaW5lOiBibHVlIGRvdHRlZCAycHgiCiBGQUlMIG5v
cm1hbGl6ZUNzc1RleHQoZWxlbWVudC5zdHlsZS5jc3NUZXh0KSBzaG91bGQgYmUgb3ZlcmZsb3c6
IHNjcm9sbCBoaWRkZW4uIFdhcyBvdmVyZmxvdy14OiBzY3JvbGw7IG92ZXJmbG93LXk6IGhpZGRl
bi4KK1BBU1Mgbm9ybWFsaXplQ3NzVGV4dChlbGVtZW50LnN0eWxlLmNzc1RleHQpIGlzICJvdmVy
Zmxvdzogc2Nyb2xsIgogUEFTUyBub3JtYWxpemVDc3NUZXh0KGVsZW1lbnQuc3R5bGUuY3NzVGV4
dCkgaXMgInBhZGRpbmc6IDFweCAycHggM3B4IDRweCIKK1BBU1Mgbm9ybWFsaXplQ3NzVGV4dChl
bGVtZW50LnN0eWxlLmNzc1RleHQpIGlzICJsaXN0LXN0eWxlLXR5cGU6IGxvd2VyLWFscGhhIgog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9jc3NUZXh0LXNob3J0aGFuZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY3NzL2Nzc1RleHQtc2hvcnRoYW5kLmh0bWwJKHJldmlzaW9uIDEx
NDk1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL2Nzc1RleHQtc2hvcnRoYW5kLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEzLDE1ICsxMywxNCBAQCB2YXIgdGVzdHMgPSBbCiAgICAgWydib3Jk
ZXI6IDFweCByZWQ7JywgJ2JvcmRlcjogMXB4IHJlZDsnXSwKICAgICBbJ2JvcmRlcjogcmVkOycs
ICdib3JkZXI6IHJlZDsnXSwKICAgICBbJ2JvcmRlci10b3A6IDFweDsgYm9yZGVyLXJpZ2h0OiAx
cHg7IGJvcmRlci1ib3R0b206IDFweDsgYm9yZGVyLWxlZnQ6IDFweDsnLCAnYm9yZGVyOiAxcHg7
J10sCi0gICAgWydib3JkZXItdG9wOiAxcHg7IGJvcmRlci1yaWdodDogMnB4OyBib3JkZXItYm90
dG9tOiAzcHg7IGJvcmRlci1sZWZ0OiA0cHg7JywKLSAgICAnYm9yZGVyLXRvcC13aWR0aDogMXB4
OyBib3JkZXItcmlnaHQtd2lkdGg6IDJweDsgYm9yZGVyLWJvdHRvbS13aWR0aDogM3B4OyBib3Jk
ZXItbGVmdC13aWR0aDogNHB4OyddLAotICAgIFsnYm9yZGVyOiAxcHg7IGJvcmRlci10b3A6IDJw
eDsnLAotICAgICdib3JkZXItcmlnaHQtd2lkdGg6IDFweDsgYm9yZGVyLWJvdHRvbS13aWR0aDog
MXB4OyBib3JkZXItbGVmdC13aWR0aDogMXB4OyBib3JkZXItdG9wLXdpZHRoOiAycHg7J10sCisg
ICAgWydib3JkZXItdG9wOiAxcHg7IGJvcmRlci1yaWdodDogMnB4OyBib3JkZXItYm90dG9tOiAz
cHg7IGJvcmRlci1sZWZ0OiA0cHg7JywgJ2JvcmRlci13aWR0aDogMXB4IDJweCAzcHggNHB4Oydd
LAorICAgIFsnYm9yZGVyOiAxcHg7IGJvcmRlci10b3A6IDJweDsnLCAnYm9yZGVyLXdpZHRoOiAy
cHggMXB4IDFweDsnXSwKICAgICBbJ2JvcmRlcjogMXB4OyBib3JkZXItdG9wOiAxcHggIWltcG9y
dGFudDsnLAogICAgICdib3JkZXItcmlnaHQtd2lkdGg6IDFweDsgYm9yZGVyLWJvdHRvbS13aWR0
aDogMXB4OyBib3JkZXItbGVmdC13aWR0aDogMXB4OyBib3JkZXItdG9wLXdpZHRoOiAxcHggIWlt
cG9ydGFudDsnXSwKLSAgICBbJ2JvcmRlcjogMXB4OyBib3JkZXItdG9wLWNvbG9yOiByZWQ7JywK
LSAgICAnYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7IGJvcmRlci1ib3R0b20td2lkdGg6IDFweDsg
Ym9yZGVyLWxlZnQtd2lkdGg6IDFweDsgYm9yZGVyLXRvcC13aWR0aDogMXB4OyBib3JkZXItdG9w
LWNvbG9yOiByZWQ7J10sCisKKyAgICBbJ2JvcmRlcjogMXB4OyBib3JkZXItdG9wLWNvbG9yOiBy
ZWQ7JywgJ2JvcmRlci13aWR0aDogMXB4OyBib3JkZXItdG9wLWNvbG9yOiByZWQ7J10sCiAgICAg
Wydib3JkZXI6IHNvbGlkOyBib3JkZXItc3R5bGU6IGRvdHRlZCcsICdib3JkZXI6IGRvdHRlZDsn
XSwKKyAgICBbJ2JvcmRlci13aWR0aDogMXB4OycsICdib3JkZXItd2lkdGg6IDFweDsnXSwKIAog
ICAgIFsnLXdlYmtpdC1ib3JkZXItaG9yaXpvbnRhbC1zcGFjaW5nOiAxcHg7IC13ZWJraXQtYm9y
ZGVyLXZlcnRpY2FsLXNwYWNpbmc6IDJweDsnLCAnYm9yZGVyLXNwYWNpbmc6IDFweCAycHg7J10s
CiAKQEAgLTMzLDcgKzMyLDEwIEBAIHZhciB0ZXN0cyA9IFsKICAgICBbJ21hcmdpbi10b3A6IDFw
eDsgbWFyZ2luLXJpZ2h0OiAycHg7IG1hcmdpbi1ib3R0b206IDNweDsgbWFyZ2luLWxlZnQ6IDRw
eDsnLCAnbWFyZ2luOiAxcHggMnB4IDNweCA0cHg7J10sCiAgICAgWydvdXRsaW5lLXdpZHRoOiAy
cHg7IG91dGxpbmUtc3R5bGU6IGRvdHRlZDsgb3V0bGluZS1jb2xvcjogYmx1ZTsnLCAnb3V0bGlu
ZTogYmx1ZSBkb3R0ZWQgMnB4OyddLAogICAgIFsnb3ZlcmZsb3cteDogc2Nyb2xsOyBvdmVyZmxv
dy15OiBoaWRkZW47JywgJ292ZXJmbG93OiBzY3JvbGwgaGlkZGVuOyddLAorICAgIFsnb3ZlcmZs
b3cteDogc2Nyb2xsOyBvdmVyZmxvdy15OiBzY3JvbGw7JywgJ292ZXJmbG93OiBzY3JvbGw7J10s
CiAgICAgWydwYWRkaW5nLXRvcDogMXB4OyBwYWRkaW5nLXJpZ2h0OiAycHg7IHBhZGRpbmctYm90
dG9tOiAzcHg7IHBhZGRpbmctbGVmdDogNHB4OycsICdwYWRkaW5nOiAxcHggMnB4IDNweCA0cHg7
J10sCisKKwlbJ2xpc3Qtc3R5bGUtdHlwZTogbG93ZXItYWxwaGE7JywgJ2xpc3Qtc3R5bGUtdHlw
ZTogbG93ZXItYWxwaGE7J10KIF07CiAKIGZ1bmN0aW9uIG5vcm1hbGl6ZUNzc1RleHQodGV4dCkg
eyByZXR1cm4gdGV4dC50cmltKCkuc3BsaXQoLztccyovKS5zb3J0KCkuc2xpY2UoMSkuam9pbigi
OyAiKTsgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVtb3ZlLXNob3J0aGFuZC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVtb3ZlLXNob3J0
aGFuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDExNDk1MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3JlbW92ZS1zaG9ydGhhbmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNSwx
MyArMjUsMTMgQEAgcmVtb3ZlcyAiYm9yZGVyIgogYW5kIGFkZHMgImJvcmRlci10b3Atd2lkdGgs
IGJvcmRlci1yaWdodC13aWR0aCwgYm9yZGVyLWJvdHRvbS13aWR0aCwgYm9yZGVyLXRvcC1zdHls
ZSwgYm9yZGVyLXJpZ2h0LXN0eWxlLCBib3JkZXItYm90dG9tLXN0eWxlLCBib3JkZXItdG9wLWNv
bG9yLCBib3JkZXItcmlnaHQtY29sb3IsIGJvcmRlci1ib3R0b20tY29sb3IiLgogUmVtb3Zpbmcg
Ym9yZGVyLWNvbG9yCiByZW1vdmVzICJib3JkZXIiCi1hbmQgYWRkcyAiYm9yZGVyIi4KK2FuZCBh
ZGRzICJib3JkZXItd2lkdGgsIGJvcmRlci1zdHlsZSIuCiBSZW1vdmluZyBib3JkZXItc3R5bGUK
IHJlbW92ZXMgImJvcmRlciIKLWFuZCBhZGRzICJib3JkZXIiLgorYW5kIGFkZHMgImJvcmRlci13
aWR0aCwgYm9yZGVyLWNvbG9yIi4KIFJlbW92aW5nIGJvcmRlci13aWR0aAogcmVtb3ZlcyAiYm9y
ZGVyIgotYW5kIGFkZHMgImJvcmRlciIuCithbmQgYWRkcyAiYm9yZGVyLXN0eWxlLCBib3JkZXIt
Y29sb3IiLgogUmVtb3ZpbmcgYm9yZGVyLXJhZGl1cwogcmVtb3ZlcyAiYm9yZGVyLXRvcC1sZWZ0
LXJhZGl1cywgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMsIGJvcmRlci1ib3R0b20tcmlnaHQtcmFk
aXVzLCBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIgogYW5kIGFkZHMgIiIuCkluZGV4OiBMYXlv
dXRUZXN0cy9wcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDExNDk1MSkKKysrIExheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1j
c3MtdGV4dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiBAcGFn
ZSB7IG1hcmdpbi10b3A6IDVjbTsgbWFyZ2luLWJvdHRvbTogMTBjbTsgfQogQHBhZ2UgOmxlZnQg
eyBtYXJnaW4tcmlnaHQ6IDNjbTsgfQogQHBhZ2UgOnJpZ2h0IHsgbWFyZ2luLWxlZnQ6IDNjbTsg
fQotQHBhZ2UgOmZpcnN0IHsgYm9yZGVyOiAxcHg7IH0KK0BwYWdlIDpmaXJzdCB7IGJvcmRlci13
aWR0aDogMXB4OyB9CiBAcGFnZSBoZWxsbyB7IGNvbG9yOiBncmVlbjsgfQogQHBhZ2Ugd29ybGQ6
cmlnaHQgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfQogQG1lZGlhIHByaW50IHsgQHBhZ2Ug
c29tZXBhZ2U6Zmlyc3QgeyBtYXJnaW46IDNjbTsgfSB9Cg==
</data>
<flag name="review"
          id="144114"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>