<?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>84413</bug_id>
          
          <creation_ts>2012-04-19 19:32:55 -0700</creation_ts>
          <short_desc>Use Vector&lt;Attribute&gt; directly instead of encapsulating it in AttributeVector</short_desc>
          <delta_ts>2012-04-30 09:57:40 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>83440</dependson>
    
    <dependson>84809</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Marcelo de Oliveira Filho">cmarcelo</reporter>
          <assigned_to name="Caio Marcelo de Oliveira Filho">cmarcelo</assigned_to>
          <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>606301</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-04-19 19:32:55 -0700</bug_when>
    <thetext>Use a typedef instead of inheriting WTF::Vector for AttributeVector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606310</commentid>
    <comment_count>1</comment_count>
      <attachid>138031</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-04-19 19:52:23 -0700</bug_when>
    <thetext>Created attachment 138031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606313</commentid>
    <comment_count>2</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-04-19 19:54:32 -0700</bug_when>
    <thetext>Trying to address comment https://bugs.webkit.org/show_bug.cgi?id=79963#c16.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606316</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-19 20:00:12 -0700</bug_when>
    <thetext>Better wait until more complex bug 83440 lands to minimize disruption.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606648</commentid>
    <comment_count>4</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-04-20 09:44:43 -0700</bug_when>
    <thetext>Ack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608752</commentid>
    <comment_count>5</comment_count>
      <attachid>138577</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-04-24 09:26:49 -0700</bug_when>
    <thetext>Created attachment 138577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608765</commentid>
    <comment_count>6</comment_count>
      <attachid>138577</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-04-24 09:41:46 -0700</bug_when>
    <thetext>Comment on attachment 138577
Patch

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

Looks good, but let&apos;s fix up some things and make it great!

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:579
&gt; -        attributes.removeAttribute(nameAttr);
&gt; -        attributes.removeAttribute(actionAttr);
&gt; -        attributes.removeAttribute(promptAttr);
&gt; +        removeAttribute(&amp;attributes, nameAttr);
&gt; +        removeAttribute(&amp;attributes, actionAttr);
&gt; +        removeAttribute(&amp;attributes, promptAttr);

Since this is the only user of removeAttribute(), we could write it as a loop that does a single pass across the attribute vector instead of 3 passes.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:583
&gt; -    attributes.insertAttribute(Attribute(nameAttr, isindexTag.localName()));
&gt; +    if (!getAttributeFromVector(&amp;attributes, nameAttr))
&gt; +        attributes.append(Attribute(nameAttr, isindexTag.localName()));

Given that the nameAttr is always removed just above, you don&apos;t need the getAttributeFromVector() check here.

&gt; Source/WebCore/html/parser/TextDocumentParser.cpp:64
&gt; -    attributes.insertAttribute(Attribute(&quot;style&quot;, &quot;word-wrap: break-word; white-space: pre-wrap;&quot;));
&gt; +    attributes.append(Attribute(&quot;style&quot;, &quot;word-wrap: break-word; white-space: pre-wrap;&quot;));

It would be slightly more efficient to pass HTMLNames::styleAttr rather than &quot;style&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608775</commentid>
    <comment_count>7</comment_count>
      <attachid>138577</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-24 09:48:52 -0700</bug_when>
    <thetext>Comment on attachment 138577
Patch

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

&gt; Source/WebCore/dom/ElementAttributeData.h:39
&gt; +typedef Vector&lt;Attribute&gt; AttributeVector;

I think you should get rid of the AttributeVector type completely. Vector&lt;Attribute&gt;is not any harder to write and way less opaque.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608777</commentid>
    <comment_count>8</comment_count>
      <attachid>138582</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-04-24 09:51:14 -0700</bug_when>
    <thetext>Created attachment 138582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608825</commentid>
    <comment_count>9</comment_count>
      <attachid>138594</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-04-24 10:45:57 -0700</bug_when>
    <thetext>Created attachment 138594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608834</commentid>
    <comment_count>10</comment_count>
      <attachid>138594</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-04-24 10:51:52 -0700</bug_when>
    <thetext>Comment on attachment 138594
Patch

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

r=me with these fixes:

&gt; Source/WebCore/dom/ElementAttributeData.h:39
&gt; +inline Attribute* getAttributeFromVector(const Vector&lt;Attribute&gt;* attributes, const QualifiedName&amp; name)

- getAttributeFromVector doesn&apos;t sound very WebKit. findAttributeInVector would be slightly better.
- The &apos;attributes&apos; argument could be a const Vector&lt;Attribute&gt;&amp;, that would remove the need for the ASSERT.
- Also no need for the inline keyword.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608837</commentid>
    <comment_count>11</comment_count>
      <attachid>138594</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-24 10:54:12 -0700</bug_when>
    <thetext>Comment on attachment 138594
Patch

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

&gt;&gt; Source/WebCore/dom/ElementAttributeData.h:39
&gt;&gt; +inline Attribute* getAttributeFromVector(const Vector&lt;Attribute&gt;* attributes, const QualifiedName&amp; name)
&gt; 
&gt; - getAttributeFromVector doesn&apos;t sound very WebKit. findAttributeInVector would be slightly better.
&gt; - The &apos;attributes&apos; argument could be a const Vector&lt;Attribute&gt;&amp;, that would remove the need for the ASSERT.
&gt; - Also no need for the inline keyword.

Yup, we use &quot;get&quot; prefix iff we have an out argument.

&gt; Source/WebCore/dom/ElementAttributeData.h:151
&gt; +inline size_t ElementAttributeData::getAttributeItemIndex(const QualifiedName&amp; name) const

Ditto.

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:571
&gt; +        if (name.matches(nameAttr) || name.matches(actionAttr) || name.matches(promptAttr)) {
&gt; +            attributes.remove(i);
&gt; +            --i;
&gt; +        }

Would it be better to remember the indexes and bulk remove? Modifying a vector while iterating over the vector might be too clever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608851</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-24 11:04:11 -0700</bug_when>
    <thetext>http://cdn.memegenerator.net/instances/400x/19307123.jpg
awesomekling beats rniwa</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608965</commentid>
    <comment_count>13</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-04-24 12:59:38 -0700</bug_when>
    <thetext>Committed r115099: &lt;http://trac.webkit.org/changeset/115099&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608983</commentid>
    <comment_count>14</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-04-24 13:18:25 -0700</bug_when>
    <thetext>You appear to have broken the debug build :-(

/Volumes/Data/git/WebKit/OpenSource/Source/WebCore/dom/ElementAttributeData.h:41:5: error: invalid argument type &apos;const Vector&lt;WebCore::Attribute&gt;&apos; to unary expression
    ASSERT(attributes);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608993</commentid>
    <comment_count>15</comment_count>
      <attachid>138594</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-04-24 13:41:59 -0700</bug_when>
    <thetext>Comment on attachment 138594
Patch

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

&gt; Source/WebCore/dom/ElementAttributeData.h:41
&gt; +    ASSERT(attributes);

Reopen, because it broke the debug build:
../../../../Source/WebCore/dom/ElementAttributeData.h: In function ‘WebCore::Attribute* WebCore::findAttributeInVector(const WTF::Vector&lt;WebCore::Attribute, 0ul&gt;&amp;, const WebCore::QualifiedName&amp;)’:
../../../../Source/WebCore/dom/ElementAttributeData.h:41: error: no match for ‘operator!’ in ‘!attributes’
../../../../Source/WebCore/dom/ElementAttributeData.h:41: note: candidates are: operator!(bool) &lt;built-in&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609001</commentid>
    <comment_count>16</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-04-24 13:46:18 -0700</bug_when>
    <thetext>Sorry folks. This should be fixed in http://trac.webkit.org/changeset/115102</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609005</commentid>
    <comment_count>17</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-04-24 13:48:07 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Sorry folks. This should be fixed in http://trac.webkit.org/changeset/115102

Not problem, but I have to share this with you :)) http://webkitmemes.tumblr.com/post/21640883992/scumbag-good-guy-awesomekling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609294</commentid>
    <comment_count>18</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-04-24 17:20:43 -0700</bug_when>
    <thetext>Reopening since this is being rolled out. My blind fix stopped the crashing but left html5lib/runner.html with incorrect results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609322</commentid>
    <comment_count>19</comment_count>
      <attachid>138594</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-04-24 17:51:59 -0700</bug_when>
    <thetext>Comment on attachment 138594
Patch

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

&gt; Source/WebCore/xml/parser/MarkupTokenBase.h:542
&gt; +        const QualifiedName name = nameForAttribute(attribute);

I think you mean to say:

   const QualifiedName&amp; name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609885</commentid>
    <comment_count>20</comment_count>
      <attachid>138838</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-04-25 10:34:59 -0700</bug_when>
    <thetext>Created attachment 138838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612666</commentid>
    <comment_count>21</comment_count>
      <attachid>139457</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-04-30 08:45:26 -0700</bug_when>
    <thetext>Created attachment 139457
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612712</commentid>
    <comment_count>22</comment_count>
      <attachid>139457</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-30 09:57:32 -0700</bug_when>
    <thetext>Comment on attachment 139457
Patch for landing

Clearing flags on attachment: 139457

Committed r115645: &lt;http://trac.webkit.org/changeset/115645&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612713</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-30 09:57:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138031</attachid>
            <date>2012-04-19 19:52:23 -0700</date>
            <delta_ts>2012-04-24 09:26:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84413-20120419235222.patch</filename>
            <type>text/plain</type>
            <size>19858</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWUyNTk3ZDllN2RkODll
NTEwZDk2ZWM0M2JhZDY5NjVmMWI1Yzc2Ny4uYWIwOTY1ZmYyOWNiZWNhZDc3YzRmYTlmM2UxYmY4
OTM0ZWY3ZjNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA0LTE5ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgVXNlIGEgdHlwZWRlZiBpbnN0ZWFkIG9mIHN1YmNsYXNzaW5nIFdURjo6VmVj
dG9yIGZvciBBdHRyaWJ1dGVWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0NDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQXMgc3VnZ2VzdGVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03OTk2MyNjMTYgd2UgZG8gbm90CisgICAgICAgIHVzdWFsbHkgc3ViY2xh
c3MgYmFzaWMgdHlwZXMgbGlrZSBWZWN0b3IuIFNvIHdlIGNoYW5nZSB0byB1c2UgYSB0eXBlZGVm
IGFuZCBtb3ZlCisgICAgICAgIGFyb3VuZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZm9ybWVy
IG1ldGhvZHMgdG8gbW9yZSBzcGVjaWZpYyBoZWxwZXIgZnVuY3Rpb25zCisgICAgICAgIG9yIGlu
bGluZSBjb2RlIGF0IHRoZSBjYWxsZXJzLCB3aGVuIGl0IG1ha2VzIHNlbnNlLgorCisgICAgICAg
ICogZG9tL0F0dHIuaDoKKyAgICAgICAgKEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6
ZGV0YWNoRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6cmVtb3ZlQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpkZXRhY2hBdHRy
aWJ1dGVzRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURh
dGE6OnJlcGxhY2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50QXR0cmlidXRlRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRBdHRyaWJ1dGVJ
dGVtRnJvbUF0dHJpYnV0ZVZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmli
dXRlRGF0YTo6YXR0cmlidXRlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmli
dXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbSk6CisgICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRl
SXRlbUluZGV4KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6bWVyZ2VBdHRyaWJ1
dGVzRnJvbVRva2VuSW50b0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6cmVtb3ZlQXR0cmlidXRlRnJvbVZlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6YXR0cmlidXRlc0ZvcklzaW5k
ZXhJbnB1dCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHREb2N1bWVudFBhcnNlcjo6aW5zZXJ0RmFrZVByZUVsZW1lbnQpOgorICAgICAgICAq
IHhtbC9YTUxFcnJvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlWEhUTUxQYXJzZXJF
cnJvckhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJvcnM6Omluc2VydEVycm9yTWVz
c2FnZUJsb2NrKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6QXRvbWljTWFya3VwVG9rZW5CYXNlOjpnZXRBdHRyaWJ1dGVJdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6Ojo6aW5pdGlhbGl6ZUF0dHJpYnV0ZXMpOgorICAgICAgICAqIHht
bC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NOYW1lc3BhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRyZWVCdWls
ZGVyOjpwcm9jZXNzQXR0cmlidXRlcyk6CisKIDIwMTItMDQtMTkgIEtlbiBCdWNoYW5hbiAgPGtl
bnJiQGNocm9taXVtLm9yZz4KIAogICAgICAgICBQb3NpdGlvbmVkIGNoaWxkcmVuIG9mIHJ1Ynkg
cnVucyBub3QgaGFuZGxlZCBjb3JyZWN0bHkgZHVyaW5nIGxheW91dApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0F0dHIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKaW5kZXgg
N2UxZDI5M2Y2MGVkNGZhYzE4MmVhMTk0Njk4OWE0NDY3NjkwY2Q2ZC4uYTdhN2JlZjNlZWNhMGRh
N2MxNDQ2ZTU0YjIyMTI2NTYyNjQyZjVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0F0dHIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCkBAIC00MCw4ICs0MCw4IEBA
IGNsYXNzIFN0eWxlUHJvcGVydHlTZXQ7CiAvLyBkZXN0cnVjdGlvbi4gaG93ZXZlciwgdGhpcyBp
cyBub3QgeWV0IGltcGxlbWVudGVkLgogCiBjbGFzcyBBdHRyIDogcHVibGljIENvbnRhaW5lck5v
ZGUgewotICAgIGZyaWVuZCBjbGFzcyBBdHRyaWJ1dGVWZWN0b3I7CiAgICAgZnJpZW5kIGNsYXNz
IEVsZW1lbnRBdHRyaWJ1dGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBIVE1MVHJlZUJ1aWxkZXI7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXR0cj4gY3JlYXRlKEVsZW1lbnQqLCBE
b2N1bWVudCosIFBhc3NSZWZQdHI8QXR0cmlidXRlPik7CiAgICAgdmlydHVhbCB+QXR0cigpOwpA
QCAtNjYsNiArNjYsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEF0dHIoRWxlbWVudCosIERv
Y3VtZW50KiwgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+KTsKIAorICAgIHZvaWQgZGV0YWNoRnJvbUVs
ZW1lbnQoKSB7IG1fZWxlbWVudCA9IDA7IH0KKwogICAgIHZvaWQgY3JlYXRlVGV4dENoaWxkKCk7
CiAKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAKaW5kZXggZTNiMzg2Njk3MWU0OTY4MzFmZDU4
ZTQ0NDJkYTJhMzMxNTc3YWJlOC4uMzgxNDhiMzdlZTkwODI5MjNlMzIyNGIyOWRlNjMxMmNmYWZm
NDVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCkBA
IC0zMSwxOCArMzEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQXR0cmlidXRl
VmVjdG9yOjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKLXsKLSAg
ICBzaXplX3QgaW5kZXggPSBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSk7Ci0gICAgaWYgKGlu
ZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8QXR0cmlidXRl
PiBhdHRyaWJ1dGUgPSBhdChpbmRleCk7Ci0gICAgaWYgKEF0dHIqIGF0dHIgPSBhdHRyaWJ1dGUt
PmF0dHIoKSkKLSAgICAgICAgYXR0ci0+bV9lbGVtZW50ID0gMDsKLSAgICByZW1vdmUoaW5kZXgp
OwotfQotCiBFbGVtZW50QXR0cmlidXRlRGF0YTo6fkVsZW1lbnRBdHRyaWJ1dGVEYXRhKCkKIHsK
ICAgICBkZXRhY2hBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoKTsKQEAgLTExOSw3ICsxMDcsNyBAQCB2
b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZW1vdmVBdHRyaWJ1dGUoc2l6ZV90IGluZGV4LCBF
bGVtZW50KiBlbGVtZW50LCBFSW5VcAogICAgICAgICBlbGVtZW50LT53aWxsUmVtb3ZlQXR0cmli
dXRlKGF0dHJpYnV0ZS0+bmFtZSgpLCBhdHRyaWJ1dGUtPnZhbHVlKCkpOwogCiAgICAgaWYgKEF0
dHIqIGF0dHIgPSBhdHRyaWJ1dGUtPmF0dHIoKSkKLSAgICAgICAgYXR0ci0+bV9lbGVtZW50ID0g
MDsKKyAgICAgICAgYXR0ci0+ZGV0YWNoRnJvbUVsZW1lbnQoKTsKICAgICBtX2F0dHJpYnV0ZXMu
cmVtb3ZlKGluZGV4KTsKIAogICAgIGlmIChlbGVtZW50ICYmIGluVXBkYXRlU3R5bGVBdHRyaWJ1
dGUgPT0gTm90SW5VcGRhdGVTdHlsZUF0dHJpYnV0ZSkKQEAgLTE2MCw3ICsxNDgsNyBAQCB2b2lk
IEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpkZXRhY2hBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoKQogICAg
IHNpemVfdCBzaXplID0gbV9hdHRyaWJ1dGVzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICBpZiAoQXR0ciogYXR0ciA9IG1fYXR0cmlidXRl
c1tpXS0+YXR0cigpKQotICAgICAgICAgICAgYXR0ci0+bV9lbGVtZW50ID0gMDsKKyAgICAgICAg
ICAgIGF0dHItPmRldGFjaEZyb21FbGVtZW50KCk7CiAgICAgfQogfQogCkBAIC0yMzcsNyArMjI1
LDcgQEAgdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6cmVwbGFjZUF0dHJpYnV0ZShzaXplX3Qg
aW5kZXgsIFBhc3NSZWZQdHI8QXR0cmlidXRlPgogICAgIGVsZW1lbnQtPndpbGxNb2RpZnlBdHRy
aWJ1dGUoYXR0cmlidXRlLT5uYW1lKCksIG9sZC0+dmFsdWUoKSwgYXR0cmlidXRlLT52YWx1ZSgp
KTsKIAogICAgIGlmIChBdHRyKiBhdHRyID0gb2xkLT5hdHRyKCkpCi0gICAgICAgIGF0dHItPm1f
ZWxlbWVudCA9IDA7CisgICAgICAgIGF0dHItPmRldGFjaEZyb21FbGVtZW50KCk7CiAgICAgbV9h
dHRyaWJ1dGVzW2luZGV4XSA9IGF0dHJpYnV0ZTsKICAgICBpZiAoQXR0ciogYXR0ciA9IGF0dHJp
YnV0ZS0+YXR0cigpKQogICAgICAgICBhdHRyLT5tX2VsZW1lbnQgPSBlbGVtZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaAppbmRleCBmODU0MzI4MWU1NTU1NGMx
NGYzZmE3M2Y5YjgzM2QyZmFlM2ZhZmFiLi41M2RlYjU1N2Q2MTFlNzAwNjUyZTBiMjJhYzM5OTkz
ODNjM2UwYTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaApA
QCAtMzYsNDggKzM2LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsK
IAotY2xhc3MgQXR0cmlidXRlVmVjdG9yIDogcHVibGljIFZlY3RvcjxSZWZQdHI8QXR0cmlidXRl
PiwgND4gewotICAgIGZyaWVuZCBjbGFzcyBFbGVtZW50QXR0cmlidXRlRGF0YTsKK3R5cGVkZWYg
VmVjdG9yPFJlZlB0cjxBdHRyaWJ1dGU+LCA0PiBBdHRyaWJ1dGVWZWN0b3I7CiAKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc093blB0cjxBdHRyaWJ1dGVWZWN0b3I+IGNyZWF0ZSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF0dHJpYnV0ZVZlY3RvcigpKTsKLSAgICB9Ci0K
LSAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIGF0KGluZGV4KS5nZXQoKTsgfQotICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0gICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1J
bmRleChjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0KLSAgICAvLyBVc2VkIGR1cmluZyBw
YXJzaW5nOiBvbmx5IGluc2VydHMgaWYgbm90IGFscmVhZHkgdGhlcmUuCi0gICAgdm9pZCBpbnNl
cnRBdHRyaWJ1dGUoUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IG5ld0F0dHJpYnV0ZSk7Ci0gICAgdm9p
ZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCi1wcml2YXRlOgotICAg
IEF0dHJpYnV0ZVZlY3RvcigpIHsgfQotfTsKLQotaW5saW5lIEF0dHJpYnV0ZSogQXR0cmlidXRl
VmVjdG9yOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
CitpbmxpbmUgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVtRnJvbUF0dHJpYnV0ZVZlY3Rvcihj
b25zdCBBdHRyaWJ1dGVWZWN0b3IqIGF0dHJpYnV0ZXMsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUpCiB7Ci0gICAgc2l6ZV90IGluZGV4ID0gZ2V0QXR0cmlidXRlSXRlbUluZGV4KG5hbWUpOwot
ICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIGF0KGluZGV4KS5nZXQo
KTsKLSAgICByZXR1cm4gMDsKLX0KLQotaW5saW5lIHNpemVfdCBBdHRyaWJ1dGVWZWN0b3I6Omdl
dEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAotewot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewotICAgICAgICBpZiAo
YXQoaSktPm5hbWUoKS5tYXRjaGVzKG5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIGk7CisgICAg
QVNTRVJUKGF0dHJpYnV0ZXMpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1
dGVzLT5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoYXR0cmlidXRlcy0+YXQoaSktPm5hbWUo
KS5tYXRjaGVzKG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMtPmF0KGkpLmdl
dCgpOwogICAgIH0KLSAgICByZXR1cm4gbm90Rm91bmQ7Ci19Ci0KLWlubGluZSB2b2lkIEF0dHJp
YnV0ZVZlY3Rvcjo6aW5zZXJ0QXR0cmlidXRlKFBhc3NSZWZQdHI8QXR0cmlidXRlPiBuZXdBdHRy
aWJ1dGUpCi17Ci0gICAgaWYgKCFnZXRBdHRyaWJ1dGVJdGVtKG5ld0F0dHJpYnV0ZS0+bmFtZSgp
KSkKLSAgICAgICAgYXBwZW5kKG5ld0F0dHJpYnV0ZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKIGVu
dW0gRUluVXBkYXRlU3R5bGVBdHRyaWJ1dGUgeyBOb3RJblVwZGF0ZVN0eWxlQXR0cmlidXRlLCBJ
blVwZGF0ZVN0eWxlQXR0cmlidXRlIH07CkBAIC0xMTQsOSArODIsOSBAQCBwdWJsaWM6CiAgICAg
UGFzc1JlZlB0cjxBdHRyPiBnZXRBdHRyaWJ1dGVOb2RlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBF
bGVtZW50KikgY29uc3Q7CiAKICAgICAvLyBJbnRlcm5hbCBpbnRlcmZhY2UuCi0gICAgQXR0cmli
dXRlKiBhdHRyaWJ1dGVJdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2F0dHJp
YnV0ZXMuYXR0cmlidXRlSXRlbShpbmRleCk7IH0KLSAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0
ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1
dGVzLmdldEF0dHJpYnV0ZUl0ZW0obmFtZSk7IH0KLSAgICBzaXplX3QgZ2V0QXR0cmlidXRlSXRl
bUluZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmli
dXRlcy5nZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSk7IH0KKyAgICBBdHRyaWJ1dGUqIGF0dHJp
YnV0ZUl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5hdChp
bmRleCkuZ2V0KCk7IH0KKyAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSkgY29uc3QgeyByZXR1cm4gZ2V0QXR0cmlidXRlSXRlbUZyb21BdHRy
aWJ1dGVWZWN0b3IoJm1fYXR0cmlidXRlcywgbmFtZSk7IH0KKyAgICBzaXplX3QgZ2V0QXR0cmli
dXRlSXRlbUluZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBzaXplX3QgZ2V0
QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVB
dHRyaWJ1dGVDYXNlKSBjb25zdDsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBkbyBubyBlcnJv
ciBjaGVja2luZy4KQEAgLTE4Nyw2ICsxNTUsMTUgQEAgaW5saW5lIEF0dHJpYnV0ZSogRWxlbWVu
dEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBib28K
ICAgICByZXR1cm4gMDsKIH0KIAoraW5saW5lIHNpemVfdCBFbGVtZW50QXR0cmlidXRlRGF0YTo6
Z2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0Cit7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXR0cmlidXRlcy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAobV9hdHRyaWJ1dGVzW2ldLT5uYW1lKCkubWF0Y2hlcyhuYW1lKSkKKyAg
ICAgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1cm4gbm90Rm91bmQ7Cit9CisKIC8v
IFdlIHVzZSBhIGJvb2xlYW4gcGFyYW1ldGVyIGluc3RlYWQgb2YgY2FsbGluZyBzaG91bGRJZ25v
cmVBdHRyaWJ1dGVDYXNlIHNvIHRoYXQgdGhlIGNhbGxlcgogLy8gY2FuIHR1bmUgdGhlIGJlaGF2
aW9yIChoYXNBdHRyaWJ1dGUgaXMgY2FzZSBzZW5zaXRpdmUgd2hlcmVhcyBnZXRBdHRyaWJ1dGUg
aXMgbm90KS4KIGlubGluZSBzaXplX3QgRWxlbWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0
ZUl0ZW1JbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxD
b25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25z
dHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA5ZmE1ZDM3NjBmMDhhNmQzN2E3ZGQ1OTg3NDgyMTc4ZTdl
OWQ0N2E5Li5hNjc4MWUxYWU3NDM3NjYwZDViMDgyNDRmNWU5YTdhZTFjOWQ2NTgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6bWVyZ2VBdHRy
aWJ1dGVzRnJvbVRva2VuSW50b0VsZW1lbnQoQXRvbWljSFRNTFRva2VuJgogCiAgICAgRWxlbWVu
dEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZXMgPSBlbGVtZW50LT5lbnN1cmVBdHRyaWJ1dGVEYXRh
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRva2VuLmF0dHJpYnV0ZXMoKS0+c2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSB0b2tlbi5hdHRyaWJ1
dGVzKCktPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0g
dG9rZW4uYXR0cmlidXRlcygpLT5hdChpKS5nZXQoKTsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGVz
LT5nZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZS0+bmFtZSgpKSkKICAgICAgICAgICAgIGVsZW1l
bnQtPnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpKTsK
ICAgICB9CkBAIC00MjksNyArNDI5LDggQEAgaW5saW5lIFBhc3NPd25QdHI8QXR0cmlidXRlVmVj
dG9yPiBjbG9uZUF0dHJpYnV0ZXMoRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIWF0dHJpYnV0
ZXMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgT3duUHRyPEF0dHJpYnV0ZVZlY3Rv
cj4gbmV3QXR0cmlidXRlcyA9IEF0dHJpYnV0ZVZlY3Rvcjo6Y3JlYXRlKCk7CisgICAgT3duUHRy
PEF0dHJpYnV0ZVZlY3Rvcj4gbmV3QXR0cmlidXRlcyA9IGFkb3B0UHRyKG5ldyBBdHRyaWJ1dGVW
ZWN0b3IoKSk7CisgICAgbmV3QXR0cmlidXRlcy0+cmVzZXJ2ZUNhcGFjaXR5KGF0dHJpYnV0ZXMt
Pmxlbmd0aCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMtPmxlbmd0
aCgpOyArK2kpIHsKICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLT5h
dHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICBSZWZQdHI8QXR0cmlidXRlPiBjbG9uZSA9IEF0dHJp
YnV0ZTo6Y3JlYXRlKGF0dHJpYnV0ZS0+bmFtZSgpLCBhdHRyaWJ1dGUtPnZhbHVlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggODA2
MmViZDE3NjQ2ZWNhMmFlOWZkMTJlMTBjNmRmYTE3NmEwYTIyZC4uY2ZhYzc2MDVkODVjMjYwYzdm
MzEwYzdiNGIwZDYyMWI3NGQ3ZDlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC01NjAsMTkgKzU2MCwzOSBAQCB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSgpCiAgICAgcHJvY2Vz
c0VuZFRhZyhlbmRQKTsKIH0KIAordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnJlbW92ZUF0dHJpYnV0
ZUZyb21WZWN0b3IoQXR0cmlidXRlVmVjdG9yKiBhdHRyaWJ1dGVzLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lKQoreworICAgIHNpemVfdCBpbmRleCA9IG5vdEZvdW5kOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLT5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAo
YXR0cmlidXRlcy0+YXQoaSktPm5hbWUoKS5tYXRjaGVzKG5hbWUpKSB7CisgICAgICAgICAgICBp
bmRleCA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEF0dHJp
YnV0ZT4gYXR0cmlidXRlID0gYXR0cmlidXRlcy0+YXQoaW5kZXgpOworICAgIGlmIChBdHRyKiBh
dHRyID0gYXR0cmlidXRlLT5hdHRyKCkpCisgICAgICAgIGF0dHItPmRldGFjaEZyb21FbGVtZW50
KCk7CisgICAgYXR0cmlidXRlcy0+cmVtb3ZlKGluZGV4KTsKK30KKwogUGFzc093blB0cjxBdHRy
aWJ1dGVWZWN0b3I+IEhUTUxUcmVlQnVpbGRlcjo6YXR0cmlidXRlc0ZvcklzaW5kZXhJbnB1dChB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogewogICAgIE93blB0cjxBdHRyaWJ1dGVWZWN0b3I+IGF0
dHJpYnV0ZXMgPSB0b2tlbi50YWtlQXR0cmlidXRlcygpOwogICAgIGlmICghYXR0cmlidXRlcykK
LSAgICAgICAgYXR0cmlidXRlcyA9IEF0dHJpYnV0ZVZlY3Rvcjo6Y3JlYXRlKCk7CisgICAgICAg
IGF0dHJpYnV0ZXMgPSBhZG9wdFB0cihuZXcgQXR0cmlidXRlVmVjdG9yKCkpOwogICAgIGVsc2Ug
ewotICAgICAgICBhdHRyaWJ1dGVzLT5yZW1vdmVBdHRyaWJ1dGUobmFtZUF0dHIpOwotICAgICAg
ICBhdHRyaWJ1dGVzLT5yZW1vdmVBdHRyaWJ1dGUoYWN0aW9uQXR0cik7Ci0gICAgICAgIGF0dHJp
YnV0ZXMtPnJlbW92ZUF0dHJpYnV0ZShwcm9tcHRBdHRyKTsKKyAgICAgICAgcmVtb3ZlQXR0cmli
dXRlRnJvbVZlY3RvcihhdHRyaWJ1dGVzLmdldCgpLCBuYW1lQXR0cik7CisgICAgICAgIHJlbW92
ZUF0dHJpYnV0ZUZyb21WZWN0b3IoYXR0cmlidXRlcy5nZXQoKSwgYWN0aW9uQXR0cik7CisgICAg
ICAgIHJlbW92ZUF0dHJpYnV0ZUZyb21WZWN0b3IoYXR0cmlidXRlcy5nZXQoKSwgcHJvbXB0QXR0
cik7CiAgICAgfQogCiAgICAgUmVmUHRyPEF0dHJpYnV0ZT4gbWFwcGVkQXR0cmlidXRlID0gQXR0
cmlidXRlOjpjcmVhdGUobmFtZUF0dHIsIGlzaW5kZXhUYWcubG9jYWxOYW1lKCkpOwotICAgIGF0
dHJpYnV0ZXMtPmluc2VydEF0dHJpYnV0ZShtYXBwZWRBdHRyaWJ1dGUucmVsZWFzZSgpKTsKKyAg
ICBpZiAoIWdldEF0dHJpYnV0ZUl0ZW1Gcm9tQXR0cmlidXRlVmVjdG9yKGF0dHJpYnV0ZXMuZ2V0
KCksIG5hbWVBdHRyKSkKKyAgICAgICAgYXR0cmlidXRlcy0+YXBwZW5kKG1hcHBlZEF0dHJpYnV0
ZS5yZWxlYXNlKCkpOwogICAgIHJldHVybiBhdHRyaWJ1dGVzLnJlbGVhc2UoKTsKIH0KIApAQCAt
Njg0LDcgKzcwNCw3IEBAIHZvaWQgYWRqdXN0QXR0cmlidXRlcyhBdG9taWNIVE1MVG9rZW4mIHRv
a2VuKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKHVuc2lnbmVkIHggPSAwOyB4IDwgYXR0
cmlidXRlcy0+c2l6ZSgpOyArK3gpIHsKLSAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBh
dHRyaWJ1dGVzLT5hdHRyaWJ1dGVJdGVtKHgpOworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0
ZSA9IGF0dHJpYnV0ZXMtPmF0KHgpLmdldCgpOwogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiBjYXNlZE5hbWUgPSBjYXNlTWFwLT5nZXQoYXR0cmlidXRlLT5sb2NhbE5hbWUoKSk7CiAgICAg
ICAgIGlmICghY2FzZWROYW1lLmxvY2FsTmFtZSgpLmlzTnVsbCgpKQogICAgICAgICAgICAgYXR0
cmlidXRlLT5wYXJzZXJTZXROYW1lKGNhc2VkTmFtZSk7CkBAIC03MzMsNyArNzUzLDcgQEAgdm9p
ZCBhZGp1c3RGb3JlaWduQXR0cmlidXRlcyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAg
ICByZXR1cm47CiAKICAgICBmb3IgKHVuc2lnbmVkIHggPSAwOyB4IDwgYXR0cmlidXRlcy0+c2l6
ZSgpOyArK3gpIHsKLSAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLT5h
dHRyaWJ1dGVJdGVtKHgpOworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0
ZXMtPmF0KHgpLmdldCgpOwogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lID0gbWFw
LT5nZXQoYXR0cmlidXRlLT5sb2NhbE5hbWUoKSk7CiAgICAgICAgIGlmICghbmFtZS5sb2NhbE5h
bWUoKS5pc051bGwoKSkKICAgICAgICAgICAgIGF0dHJpYnV0ZS0+cGFyc2VyU2V0TmFtZShuYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKaW5kZXgg
MzUwMjRmODg4YzljOWI0NWY1NzQ2MzUzNDdjNjQ1ZjBlMTFlMjFjYS4uNDM2MTBjN2UyMTlhMjhi
NGM3NTMzYzVhODI3NmE3MTM2ZmRkNmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmgKQEAgLTE3Miw2ICsxNzIsOCBAQCBwcml2YXRlOgogICAgIGlu
bGluZSBib29sIHNob3VsZFByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRv
a2VuJik7CiAgICAgdm9pZCBwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KEF0b21pY0hUTUxU
b2tlbiYpOwogCisgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGVGcm9tVmVjdG9yKEF0dHJpYnV0ZVZl
Y3RvciosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKwogICAgIFBhc3NPd25QdHI8QXR0cmlidXRl
VmVjdG9yPiBhdHRyaWJ1dGVzRm9ySXNpbmRleElucHV0KEF0b21pY0hUTUxUb2tlbiYpOwogCiAg
ICAgSFRNTEVsZW1lbnRTdGFjazo6RWxlbWVudFJlY29yZCogZnVydGhlc3RCbG9ja0ZvckZvcm1h
dHRpbmdFbGVtZW50KEVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDM1ODljM2Y1ZjUyM2I2MzRhZDA2NmQzMDdh
N2Q5NmU1YWEzMTYwMzkuLmZhY2I0ZTdiYzJiNDc3NDhmMzg4MmJmMWQ2NGI0YjZhZTI3MTNkYjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2Vy
LmNwcApAQCAtNjEsOCArNjEsOSBAQCB2b2lkIFRleHREb2N1bWVudFBhcnNlcjo6aW5zZXJ0RmFr
ZVByZUVsZW1lbnQoKQogICAgIC8vIGRpc3RydWJpbmcgdGhlIGxpbmUvY29sdW1uIG51bWJlciBj
YWxjdWxhdGlvbnMuCiAKICAgICBSZWZQdHI8QXR0cmlidXRlPiBzdHlsZUF0dHJpYnV0ZSA9IEF0
dHJpYnV0ZTo6Y3JlYXRlKCJzdHlsZSIsICJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRlLXNw
YWNlOiBwcmUtd3JhcDsiKTsKLSAgICBPd25QdHI8QXR0cmlidXRlVmVjdG9yPiBhdHRyaWJ1dGVz
ID0gQXR0cmlidXRlVmVjdG9yOjpjcmVhdGUoKTsKLSAgICBhdHRyaWJ1dGVzLT5pbnNlcnRBdHRy
aWJ1dGUoc3R5bGVBdHRyaWJ1dGUucmVsZWFzZSgpKTsKKyAgICBPd25QdHI8QXR0cmlidXRlVmVj
dG9yPiBhdHRyaWJ1dGVzID0gYWRvcHRQdHIobmV3IEF0dHJpYnV0ZVZlY3RvcigpKTsKKyAgICBp
ZiAoIWdldEF0dHJpYnV0ZUl0ZW1Gcm9tQXR0cmlidXRlVmVjdG9yKGF0dHJpYnV0ZXMuZ2V0KCks
IHN0eWxlQXR0cmlidXRlLT5uYW1lKCkpKQorICAgICAgICBhdHRyaWJ1dGVzLT5hcHBlbmQoc3R5
bGVBdHRyaWJ1dGUucmVsZWFzZSgpKTsKICAgICBBdG9taWNIVE1MVG9rZW4gZmFrZVByZShIVE1M
VG9rZW5UeXBlczo6U3RhcnRUYWcsIHByZVRhZy5sb2NhbE5hbWUoKSwgYXR0cmlidXRlcy5yZWxl
YXNlKCkpOwogCiAgICAgdHJlZUJ1aWxkZXIoKS0+Y29uc3RydWN0VHJlZUZyb21BdG9taWNUb2tl
bihmYWtlUHJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKaW5kZXggNTE1NzcyZTNjMjFlZDdk
ZDhjNTkxY2E5ZTgwYTg2NjI2ZGE4MjU3MS4uMTBhNTgxMzViMGNjOGEzZGM4NWM5M2Y3YzExYWEx
ZTQ2MWE5YzVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKQEAgLTkxLDcgKzkxLDcgQEAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JI
ZWFkZXIoRG9jdW1lbnQqIGRvYywgY28KIHsKICAgICBSZWZQdHI8RWxlbWVudD4gcmVwb3J0RWxl
bWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVudChRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAicGFyc2Vy
ZXJyb3IiLCB4aHRtbE5hbWVzcGFjZVVSSSksIHRydWUpOwogCi0gICAgT3duUHRyPEF0dHJpYnV0
ZVZlY3Rvcj4gcmVwb3J0QXR0cmlidXRlcyA9IEF0dHJpYnV0ZVZlY3Rvcjo6Y3JlYXRlKCk7Cisg
ICAgT3duUHRyPEF0dHJpYnV0ZVZlY3Rvcj4gcmVwb3J0QXR0cmlidXRlcyA9IGFkb3B0UHRyKG5l
dyBBdHRyaWJ1dGVWZWN0b3IoKSk7CiAgICAgcmVwb3J0QXR0cmlidXRlcy0+YXBwZW5kKEF0dHJp
YnV0ZTo6Y3JlYXRlKHN0eWxlQXR0ciwgImRpc3BsYXk6IGJsb2NrOyB3aGl0ZS1zcGFjZTogcHJl
OyBib3JkZXI6IDJweCBzb2xpZCAjYzc3OyBwYWRkaW5nOiAwIDFlbSAwIDFlbTsgbWFyZ2luOiAx
ZW07IGJhY2tncm91bmQtY29sb3I6ICNmZGQ7IGNvbG9yOiBibGFjayIpKTsKICAgICByZXBvcnRF
bGVtZW50LT5wYXJzZXJTZXRBdHRyaWJ1dGVzKHJlcG9ydEF0dHJpYnV0ZXMucmVsZWFzZSgpLCBG
cmFnbWVudFNjcmlwdGluZ05vdEFsbG93ZWQpOwogCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGlj
IGlubGluZSBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIo
RG9jdW1lbnQqIGRvYywgY28KICAgICBoMy0+cGFyc2VyQWRkQ2hpbGQoZG9jLT5jcmVhdGVUZXh0
Tm9kZSgiVGhpcyBwYWdlIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZXJyb3JzOiIpKTsKIAogICAg
IFJlZlB0cjxFbGVtZW50PiBmaXhlZCA9IGRvYy0+Y3JlYXRlRWxlbWVudChkaXZUYWcsIHRydWUp
OwotICAgIE93blB0cjxBdHRyaWJ1dGVWZWN0b3I+IGZpeGVkQXR0cmlidXRlcyA9IEF0dHJpYnV0
ZVZlY3Rvcjo6Y3JlYXRlKCk7CisgICAgT3duUHRyPEF0dHJpYnV0ZVZlY3Rvcj4gZml4ZWRBdHRy
aWJ1dGVzID0gYWRvcHRQdHIobmV3IEF0dHJpYnV0ZVZlY3RvcigpKTsKICAgICBmaXhlZEF0dHJp
YnV0ZXMtPmFwcGVuZChBdHRyaWJ1dGU6OmNyZWF0ZShzdHlsZUF0dHIsICJmb250LWZhbWlseTpt
b25vc3BhY2U7Zm9udC1zaXplOjEycHgiKSk7CiAgICAgZml4ZWQtPnBhcnNlclNldEF0dHJpYnV0
ZXMoZml4ZWRBdHRyaWJ1dGVzLnJlbGVhc2UoKSwgRnJhZ21lbnRTY3JpcHRpbmdOb3RBbGxvd2Vk
KTsKICAgICByZXBvcnRFbGVtZW50LT5wYXJzZXJBZGRDaGlsZChmaXhlZC5nZXQoKSk7CkBAIC0x
NTgsNyArMTU4LDcgQEAgdm9pZCBYTUxFcnJvcnM6Omluc2VydEVycm9yTWVzc2FnZUJsb2NrKCkK
IAogI2lmIEVOQUJMRShYU0xUKQogICAgIGlmIChtX2RvY3VtZW50LT50cmFuc2Zvcm1Tb3VyY2VE
b2N1bWVudCgpKSB7Ci0gICAgICAgIE93blB0cjxBdHRyaWJ1dGVWZWN0b3I+IGF0dHJpYnV0ZXMg
PSBBdHRyaWJ1dGVWZWN0b3I6OmNyZWF0ZSgpOworICAgICAgICBPd25QdHI8QXR0cmlidXRlVmVj
dG9yPiBhdHRyaWJ1dGVzID0gYWRvcHRQdHIobmV3IEF0dHJpYnV0ZVZlY3RvcigpKTsKICAgICAg
ICAgYXR0cmlidXRlcy0+YXBwZW5kKEF0dHJpYnV0ZTo6Y3JlYXRlKHN0eWxlQXR0ciwgIndoaXRl
LXNwYWNlOiBub3JtYWwiKSk7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBwYXJhZ3JhcGggPSBt
X2RvY3VtZW50LT5jcmVhdGVFbGVtZW50KHBUYWcsIHRydWUpOwogICAgICAgICBwYXJhZ3JhcGgt
PnBhcnNlclNldEF0dHJpYnV0ZXMoYXR0cmlidXRlcy5yZWxlYXNlKCksIEZyYWdtZW50U2NyaXB0
aW5nTm90QWxsb3dlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01h
cmt1cFRva2VuQmFzZS5oIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJh
c2UuaAppbmRleCA5NjQ0ZjQwYzhiYmNlYTQxMGJiYmU1MjJlOTcxYjYwY2I0M2RjYjM0Li5kNDVi
NGQyMmUxN2M2ZGFiODgwNjkwYzE4MTcxZmZmOGQ3YjU5ZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgKQEAgLTQ0NCw3ICs0NDQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygpKTsKICAgICAgICAgaWYgKCFtX2F0dHJp
YnV0ZXMpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRl
cy0+Z2V0QXR0cmlidXRlSXRlbShhdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgcmV0dXJuIGdldEF0
dHJpYnV0ZUl0ZW1Gcm9tQXR0cmlidXRlVmVjdG9yKG1fYXR0cmlidXRlcy5nZXQoKSwgYXR0cmli
dXRlTmFtZSk7CiAgICAgfQogCiAgICAgQXR0cmlidXRlVmVjdG9yKiBhdHRyaWJ1dGVzKCkgY29u
c3QKQEAgLTUyNyw3ICs1MjcsNyBAQCBpbmxpbmUgdm9pZCBBdG9taWNNYXJrdXBUb2tlbkJhc2U8
VG9rZW4+Ojppbml0aWFsaXplQXR0cmlidXRlcyhjb25zdCB0eXBlbmFtZSBUbwogICAgIGlmICgh
c2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9hdHRyaWJ1dGVzID0gQXR0cmlidXRlVmVj
dG9yOjpjcmVhdGUoKTsKKyAgICBtX2F0dHJpYnV0ZXMgPSBhZG9wdFB0cihuZXcgQXR0cmlidXRl
VmVjdG9yKCkpOwogICAgIG1fYXR0cmlidXRlcy0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXpl
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBjb25z
dCB0eXBlbmFtZSBUb2tlbjo6QXR0cmlidXRlJiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2ldOwpA
QCAtNTQyLDcgKzU0Miw5IEBAIGlubGluZSB2b2lkIEF0b21pY01hcmt1cFRva2VuQmFzZTxUb2tl
bj46OmluaXRpYWxpemVBdHRyaWJ1dGVzKGNvbnN0IHR5cGVuYW1lIFRvCiAgICAgICAgIEFTU0VS
VChhdHRyaWJ1dGUubV92YWx1ZVJhbmdlLm1fZW5kKTsKIAogICAgICAgICBBdG9taWNTdHJpbmcg
dmFsdWUoYXR0cmlidXRlLm1fdmFsdWUuZGF0YSgpLCBhdHRyaWJ1dGUubV92YWx1ZS5zaXplKCkp
OwotICAgICAgICBtX2F0dHJpYnV0ZXMtPmluc2VydEF0dHJpYnV0ZShBdHRyaWJ1dGU6OmNyZWF0
ZShuYW1lRm9yQXR0cmlidXRlKGF0dHJpYnV0ZSksIHZhbHVlKSk7CisgICAgICAgIGNvbnN0IFF1
YWxpZmllZE5hbWUgbmFtZSA9IG5hbWVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAgICAg
aWYgKCFnZXRBdHRyaWJ1dGVJdGVtRnJvbUF0dHJpYnV0ZVZlY3RvcihtX2F0dHJpYnV0ZXMuZ2V0
KCksIG5hbWUpKQorICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLT5hcHBlbmQoQXR0cmlidXRlOjpj
cmVhdGUobmFtZSwgdmFsdWUpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggODE3OTNlZDZkNTc2Y2E4MWVjNGQwZTdlNmMw
NDJhZDEyZGI3NzU2Yi4uNGI4N2Q4ZDZhN2IxZWFlNTA1MTUyZDk4OWEzNTY4M2VkYTQ5NWMxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5jcHAKQEAgLTMw
Miw3ICszMDIsNyBAQCB2b2lkIFhNTFRyZWVCdWlsZGVyOjpwcm9jZXNzTmFtZXNwYWNlcyhjb25z
dCBBdG9taWNYTUxUb2tlbiYgdG9rZW4sIE5vZGVTdGFja0l0ZQogICAgICAgICByZXR1cm47CiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRva2VuLmF0dHJpYnV0ZXMoKS0+c2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSB0b2tlbi5hdHRyaWJ1dGVzKCkt
PmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gdG9rZW4u
YXR0cmlidXRlcygpLT5hdChpKS5nZXQoKTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZS0+bmFtZSgp
LnByZWZpeCgpID09IHhtbG5zQXRvbSkKICAgICAgICAgICAgIHN0YWNrSXRlbS5zZXROYW1lc3Bh
Y2VVUkkoYXR0cmlidXRlLT5uYW1lKCkubG9jYWxOYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSk7
CiAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS0+bmFtZSgpID09IHhtbG5zQXRvbSkKQEAgLTMx
Niw3ICszMTYsNyBAQCB2b2lkIFhNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQXR0cmlidXRlcyhjb25z
dCBBdG9taWNYTUxUb2tlbiYgdG9rZW4sIE5vZGVTdGFja0l0ZQogICAgICAgICByZXR1cm47CiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRva2VuLmF0dHJpYnV0ZXMoKS0+c2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSB0b2tlbi5hdHRyaWJ1dGVzKCkt
PmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gdG9rZW4u
YXR0cmlidXRlcygpLT5hdChpKS5nZXQoKTsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUoKS5wcmVmaXgoKSA9PSB4bWxuc0F0b20pCiAg
ICAgICAgICAgICBuZXdFbGVtZW50LT5zZXRBdHRyaWJ1dGVOUyhYTUxOU05hbWVzOjp4bWxuc05h
bWVzcGFjZVVSSSwgInhtbG5zOiIgKyBhdHRyaWJ1dGUtPm5hbWUoKS5sb2NhbE5hbWUoKSwgYXR0
cmlidXRlLT52YWx1ZSgpLCBlYyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138577</attachid>
            <date>2012-04-24 09:26:49 -0700</date>
            <delta_ts>2012-04-24 09:50:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84413-20120424132647.patch</filename>
            <type>text/plain</type>
            <size>8988</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjkxMTJmZjAzNzFhMGZj
ZmRmNTcyZjNmMTU1YTVhZmM5YWY2YTA4Zi4uMjFkYjZhNGY5Y2FmMjVkZTI2MzU1NDc0OWNhODhm
MjliYmYyNzQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA0LTI0ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgVXNlIGEgdHlwZWRlZiBpbnN0ZWFkIG9mIHN1YmNsYXNzaW5nIFdURjo6VmVj
dG9yIGZvciBBdHRyaWJ1dGVWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0NDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQXMgc3VnZ2VzdGVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03OTk2MyNjMTYgd2UgZG8gbm90CisgICAgICAgIHVzdWFsbHkgc3ViY2xh
c3MgYmFzaWMgdHlwZXMgbGlrZSBWZWN0b3IuIFNvIHdlIGNoYW5nZSB0byB1c2UgYSB0eXBlZGVm
IGFuZCBtb3ZlCisgICAgICAgIGFyb3VuZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZm9ybWVy
IG1ldGhvZHMgdG8gbW9yZSBzcGVjaWZpYyBoZWxwZXIgZnVuY3Rpb25zCisgICAgICAgIG9yIGlu
bGluZSBjb2RlIGF0IHRoZSBjYWxsZXJzLCB3aGVuIGl0IG1ha2VzIHNlbnNlLgorCisgICAgICAg
ICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAgICAgKiBkb20vRWxlbWVudEF0
dHJpYnV0ZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
QXR0cmlidXRlRnJvbVZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRl
RGF0YTo6Z2V0QXR0cmlidXRlSXRlbSk6CisgICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRl
bUluZGV4KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjphdHRyaWJ1dGVzRm9ySXNpbmRleElucHV0
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtlUHJlRWxlbWVudCk6Cisg
ICAgICAgICogeG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkF0b21pY01hcmt1cFRva2VuQmFzZTo6Z2V0QXR0cmlidXRlSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjo6OmluaXRpYWxpemVBdHRyaWJ1dGVzKToKKwogMjAxMi0wNC0yNCAgS2VudGFybyBIYXJh
ICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBQYXNzIElzb2xhdGUgdG8g
c2V0RE9NRXhjZXB0aW9uKCkgKFBhcnQyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0
cmlidXRlRGF0YS5jcHAKaW5kZXggMjc3ZTUyN2VlNTBiN2U2MzAyNjU1OWJiODcyYTlmMTdlODI2
NmM3Yy4uNThhM2ZjYzU5N2Y4YmVlMjFjYmE3NDA2Mjk2NzkxOWRmZDI5MTk4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCkBAIC03MSwxNSArNzEsNiBA
QCB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZW1vdmVBdHRyKEVsZW1lbnQqIGVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbQogICAgIC0tbV9hdHRyQ291bnQ7CiB9CiAKLXZvaWQg
QXR0cmlidXRlVmVjdG9yOjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkKLXsKLSAgICBzaXplX3QgaW5kZXggPSBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSk7Ci0g
ICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZW1vdmUo
aW5kZXgpOwotfQotCiBFbGVtZW50QXR0cmlidXRlRGF0YTo6fkVsZW1lbnRBdHRyaWJ1dGVEYXRh
KCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRl
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKaW5kZXgg
N2VhZTJiN2ZjYjg3NjU1ZjE5MGNlZTIzZWQ0ZmM4MDgzYjY3M2IwZS4uMjM5Y2JlZDg5NDJhZjg3
ZTA2ZGE0NzgzYWU4ZWZhMzY5MzIwYzhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRB
dHRyaWJ1dGVEYXRhLmgKQEAgLTM2LDM5ICszNiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBBdHRyOwogY2xhc3MgRWxlbWVudDsKIAotY2xhc3MgQXR0cmlidXRlVmVjdG9yIDogcHVi
bGljIFZlY3RvcjxBdHRyaWJ1dGU+IHsKLXB1YmxpYzoKLSAgICBBdHRyaWJ1dGVWZWN0b3IoKSB7
IH0KLQotICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3Q7Ci0gICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7Ci0KLSAgICAvLyBVc2VkIGR1cmluZyBwYXJzaW5nOiBvbmx5IGluc2Vy
dHMgaWYgbm90IGFscmVhZHkgdGhlcmUuCi0gICAgdm9pZCBpbnNlcnRBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJik7Ci0gICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotfTsKLQotaW5saW5lIEF0dHJpYnV0ZSogQXR0cmlidXRlVmVjdG9yOjpnZXRBdHRyaWJ1
dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0Ci17Ci0gICAgc2l6ZV90IGlu
ZGV4ID0gZ2V0QXR0cmlidXRlSXRlbUluZGV4KG5hbWUpOwotICAgIGlmIChpbmRleCAhPSBub3RG
b3VuZCkKLSAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEF0dHJpYnV0ZVZlY3Rvcio+KHRoaXMp
LT5hdChpbmRleCk7Ci0gICAgcmV0dXJuIDA7Ci19Cit0eXBlZGVmIFZlY3RvcjxBdHRyaWJ1dGU+
IEF0dHJpYnV0ZVZlY3RvcjsKIAotaW5saW5lIHNpemVfdCBBdHRyaWJ1dGVWZWN0b3I6OmdldEF0
dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAoraW5saW5l
IEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlRnJvbVZlY3Rvcihjb25zdCBBdHRyaWJ1dGVWZWN0b3Iq
IGF0dHJpYnV0ZXMsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChhdChpKS5uYW1lKCku
bWF0Y2hlcyhuYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBpOworICAgIEFTU0VSVChhdHRyaWJ1
dGVzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlcy0+c2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMtPmF0KGkpLm5hbWUoKS5tYXRjaGVzKG5hbWUp
KQorICAgICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEF0dHJpYnV0ZVZlY3Rvcio+KGF0dHJp
YnV0ZXMpLT5hdChpKTsKICAgICB9Ci0gICAgcmV0dXJuIG5vdEZvdW5kOwotfQotCi1pbmxpbmUg
dm9pZCBBdHRyaWJ1dGVWZWN0b3I6Omluc2VydEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIG5l
d0F0dHJpYnV0ZSkKLXsKLSAgICBpZiAoIWdldEF0dHJpYnV0ZUl0ZW0obmV3QXR0cmlidXRlLm5h
bWUoKSkpCi0gICAgICAgIGFwcGVuZChuZXdBdHRyaWJ1dGUpOworICAgIHJldHVybiAwOwogfQog
CiBlbnVtIEVJblVwZGF0ZVN0eWxlQXR0cmlidXRlIHsgTm90SW5VcGRhdGVTdHlsZUF0dHJpYnV0
ZSwgSW5VcGRhdGVTdHlsZUF0dHJpYnV0ZSB9OwpAQCAtMTA3LDggKzg0LDggQEAgcHVibGljOgog
CiAgICAgLy8gSW50ZXJuYWwgaW50ZXJmYWNlLgogICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlSXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gJmNvbnN0X2Nhc3Q8RWxlbWVudEF0dHJp
YnV0ZURhdGEqPih0aGlzKS0+bV9hdHRyaWJ1dGVzW2luZGV4XTsgfQotICAgIEF0dHJpYnV0ZSog
Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdCB7IHJldHVy
biBtX2F0dHJpYnV0ZXMuZ2V0QXR0cmlidXRlSXRlbShuYW1lKTsgfQotICAgIHNpemVfdCBnZXRB
dHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QgeyByZXR1
cm4gbV9hdHRyaWJ1dGVzLmdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lKTsgfQorICAgIEF0dHJp
YnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdCB7
IHJldHVybiBnZXRBdHRyaWJ1dGVGcm9tVmVjdG9yKCZtX2F0dHJpYnV0ZXMsIG5hbWUpOyB9Cisg
ICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3Q7CiAgICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSBm
dW5jdGlvbnMgZG8gbm8gZXJyb3IgY2hlY2tpbmcuCkBAIC0xNzMsNiArMTUwLDE1IEBAIGlubGlu
ZSBBdHRyaWJ1dGUqIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vCiAgICAgcmV0dXJuIDA7CiB9CiAKK2lubGluZSBzaXplX3QgRWxl
bWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lKSBjb25zdAoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2F0dHJp
YnV0ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fYXR0cmlidXRlcy5hdChpKS5uYW1l
KCkubWF0Y2hlcyhuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1
cm4gbm90Rm91bmQ7Cit9CisKIC8vIFdlIHVzZSBhIGJvb2xlYW4gcGFyYW1ldGVyIGluc3RlYWQg
b2YgY2FsbGluZyBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlIHNvIHRoYXQgdGhlIGNhbGxlcgog
Ly8gY2FuIHR1bmUgdGhlIGJlaGF2aW9yIChoYXNBdHRyaWJ1dGUgaXMgY2FzZSBzZW5zaXRpdmUg
d2hlcmVhcyBnZXRBdHRyaWJ1dGUgaXMgbm90KS4KIGlubGluZSBzaXplX3QgRWxlbWVudEF0dHJp
YnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wg
c2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGU2OTg0NmJhM2E4NmM5NzE0MjFjYjZk
YmJjMjhlOTQ2YzBjMWRjZmEuLjNhODU4ZGU0MTNkNTM1ZWYyNTI3ZTU2YWJiNzZlOTM4NzY4YmQ2
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNw
cApAQCAtNTYwLDE2ICs1NjAsMjcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtl
UEVuZFRhZ0lmUEluQnV0dG9uU2NvcGUoKQogICAgIHByb2Nlc3NFbmRUYWcoZW5kUCk7CiB9CiAK
K3N0YXRpYyB2b2lkIHJlbW92ZUF0dHJpYnV0ZShBdHRyaWJ1dGVWZWN0b3IqIGF0dHJpYnV0ZXMs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGF0dHJpYnV0ZXMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLT5h
dChpKS5uYW1lKCkubWF0Y2hlcyhuYW1lKSkgeworICAgICAgICAgICAgYXR0cmlidXRlcy0+cmVt
b3ZlKGkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCiBBdHRy
aWJ1dGVWZWN0b3IgSFRNTFRyZWVCdWlsZGVyOjphdHRyaWJ1dGVzRm9ySXNpbmRleElucHV0KEF0
b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgQXR0cmlidXRlVmVjdG9yIGF0dHJpYnV0ZXMg
PSB0b2tlbi5hdHRyaWJ1dGVzKCk7CiAgICAgaWYgKCFhdHRyaWJ1dGVzLmlzRW1wdHkoKSkgewot
ICAgICAgICBhdHRyaWJ1dGVzLnJlbW92ZUF0dHJpYnV0ZShuYW1lQXR0cik7Ci0gICAgICAgIGF0
dHJpYnV0ZXMucmVtb3ZlQXR0cmlidXRlKGFjdGlvbkF0dHIpOwotICAgICAgICBhdHRyaWJ1dGVz
LnJlbW92ZUF0dHJpYnV0ZShwcm9tcHRBdHRyKTsKKyAgICAgICAgcmVtb3ZlQXR0cmlidXRlKCZh
dHRyaWJ1dGVzLCBuYW1lQXR0cik7CisgICAgICAgIHJlbW92ZUF0dHJpYnV0ZSgmYXR0cmlidXRl
cywgYWN0aW9uQXR0cik7CisgICAgICAgIHJlbW92ZUF0dHJpYnV0ZSgmYXR0cmlidXRlcywgcHJv
bXB0QXR0cik7CiAgICAgfQogCi0gICAgYXR0cmlidXRlcy5pbnNlcnRBdHRyaWJ1dGUoQXR0cmli
dXRlKG5hbWVBdHRyLCBpc2luZGV4VGFnLmxvY2FsTmFtZSgpKSk7CisgICAgaWYgKCFnZXRBdHRy
aWJ1dGVGcm9tVmVjdG9yKCZhdHRyaWJ1dGVzLCBuYW1lQXR0cikpCisgICAgICAgIGF0dHJpYnV0
ZXMuYXBwZW5kKEF0dHJpYnV0ZShuYW1lQXR0ciwgaXNpbmRleFRhZy5sb2NhbE5hbWUoKSkpOwog
ICAgIHJldHVybiBhdHRyaWJ1dGVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA3NDJmYmY3ZjBlMjdjNjYxNjE4N2Zk
YThhMGFmMWNhMzdiODM2Yzk0Li5iMmNjYjYyYmIxNWRkYjg2NTYwMjU4MzNkNzczMjNlMjQ5MWY2
ZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBh
cnNlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2Vy
dEZha2VQcmVFbGVtZW50KCkKICAgICAvLyBkaXN0cnViaW5nIHRoZSBsaW5lL2NvbHVtbiBudW1i
ZXIgY2FsY3VsYXRpb25zLgogCiAgICAgQXR0cmlidXRlVmVjdG9yIGF0dHJpYnV0ZXM7Ci0gICAg
YXR0cmlidXRlcy5pbnNlcnRBdHRyaWJ1dGUoQXR0cmlidXRlKCJzdHlsZSIsICJ3b3JkLXdyYXA6
IGJyZWFrLXdvcmQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsiKSk7CisgICAgYXR0cmlidXRlcy5h
cHBlbmQoQXR0cmlidXRlKCJzdHlsZSIsICJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRlLXNw
YWNlOiBwcmUtd3JhcDsiKSk7CiAgICAgQXRvbWljSFRNTFRva2VuIGZha2VQcmUoSFRNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnLCBwcmVUYWcubG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMpOwogCiAgICAg
dHJlZUJ1aWxkZXIoKS0+Y29uc3RydWN0VHJlZUZyb21BdG9taWNUb2tlbihmYWtlUHJlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCmluZGV4IDFjOTZhNGU4
MTc0NzlmMWM1NzE4NmJhMDJlY2IyMDZkNjYxNGVjNjIuLjczOGI2NjQ5YWE4Mzg5N2ZjNTUwODky
NmQzMzc4MzZiZTI3ZWVhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
TWFya3VwVG9rZW5CYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBU
b2tlbkJhc2UuaApAQCAtNDQxLDcgKzQ0MSw3IEBAIHB1YmxpYzoKICAgICBBdHRyaWJ1dGUqIGdl
dEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygpKTsKLSAgICAgICAgcmV0dXJuIG1fYXR0
cmlidXRlcy5nZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZU5hbWUpOworICAgICAgICByZXR1cm4g
Z2V0QXR0cmlidXRlRnJvbVZlY3RvcigmbV9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVOYW1lKTsKICAg
ICB9CiAKICAgICBBdHRyaWJ1dGVWZWN0b3ImIGF0dHJpYnV0ZXMoKQpAQCAtNTM5LDcgKzUzOSw5
IEBAIGlubGluZSB2b2lkIEF0b21pY01hcmt1cFRva2VuQmFzZTxUb2tlbj46OmluaXRpYWxpemVB
dHRyaWJ1dGVzKGNvbnN0IHR5cGVuYW1lIFRvCiAgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUubV92
YWx1ZVJhbmdlLm1fZW5kKTsKIAogICAgICAgICBBdG9taWNTdHJpbmcgdmFsdWUoYXR0cmlidXRl
Lm1fdmFsdWUuZGF0YSgpLCBhdHRyaWJ1dGUubV92YWx1ZS5zaXplKCkpOwotICAgICAgICBtX2F0
dHJpYnV0ZXMuaW5zZXJ0QXR0cmlidXRlKEF0dHJpYnV0ZShuYW1lRm9yQXR0cmlidXRlKGF0dHJp
YnV0ZSksIHZhbHVlKSk7CisgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUgbmFtZSA9IG5hbWVG
b3JBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAgICAgaWYgKCFnZXRBdHRyaWJ1dGVGcm9tVmVj
dG9yKCZtX2F0dHJpYnV0ZXMsIG5hbWUpKQorICAgICAgICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVu
ZChBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138582</attachid>
            <date>2012-04-24 09:51:14 -0700</date>
            <delta_ts>2012-04-24 10:45:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84413-20120424135112.patch</filename>
            <type>text/plain</type>
            <size>8687</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjkxMTJmZjAzNzFhMGZj
ZmRmNTcyZjNmMTU1YTVhZmM5YWY2YTA4Zi4uNmIyYzIwZDI0NmI5ODAwZWUwMGZmNzc4MGMxNjQ5
MWQyZmFmOWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA0LTI0ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgVXNlIGEgdHlwZWRlZiBpbnN0ZWFkIG9mIHN1YmNsYXNzaW5nIFdURjo6VmVj
dG9yIGZvciBBdHRyaWJ1dGVWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0NDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQXMgc3VnZ2VzdGVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03OTk2MyNjMTYgd2UgZG8gbm90CisgICAgICAgIHVzdWFsbHkgc3ViY2xh
c3MgYmFzaWMgdHlwZXMgbGlrZSBWZWN0b3IuIFNvIHdlIGNoYW5nZSB0byB1c2UgYSB0eXBlZGVm
IGFuZCBtb3ZlCisgICAgICAgIGFyb3VuZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZm9ybWVy
IG1ldGhvZHMgdG8gbW9yZSBzcGVjaWZpYyBoZWxwZXIgZnVuY3Rpb25zCisgICAgICAgIG9yIGlu
bGluZSBjb2RlIGF0IHRoZSBjYWxsZXJzLCB3aGVuIGl0IG1ha2VzIHNlbnNlLgorCisgICAgICAg
ICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAgICAgKiBkb20vRWxlbWVudEF0
dHJpYnV0ZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
QXR0cmlidXRlRnJvbVZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRl
RGF0YTo6Z2V0QXR0cmlidXRlSXRlbSk6CisgICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRl
bUluZGV4KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjphdHRyaWJ1dGVzRm9ySXNpbmRleElucHV0
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtlUHJlRWxlbWVudCk6Cisg
ICAgICAgICogeG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkF0b21pY01hcmt1cFRva2VuQmFzZTo6Z2V0QXR0cmlidXRlSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjo6OmluaXRpYWxpemVBdHRyaWJ1dGVzKToKKwogMjAxMi0wNC0yNCAgS2VudGFybyBIYXJh
ICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBQYXNzIElzb2xhdGUgdG8g
c2V0RE9NRXhjZXB0aW9uKCkgKFBhcnQyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0
cmlidXRlRGF0YS5jcHAKaW5kZXggMjc3ZTUyN2VlNTBiN2U2MzAyNjU1OWJiODcyYTlmMTdlODI2
NmM3Yy4uNThhM2ZjYzU5N2Y4YmVlMjFjYmE3NDA2Mjk2NzkxOWRmZDI5MTk4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCkBAIC03MSwxNSArNzEsNiBA
QCB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZW1vdmVBdHRyKEVsZW1lbnQqIGVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbQogICAgIC0tbV9hdHRyQ291bnQ7CiB9CiAKLXZvaWQg
QXR0cmlidXRlVmVjdG9yOjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkKLXsKLSAgICBzaXplX3QgaW5kZXggPSBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSk7Ci0g
ICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZW1vdmUo
aW5kZXgpOwotfQotCiBFbGVtZW50QXR0cmlidXRlRGF0YTo6fkVsZW1lbnRBdHRyaWJ1dGVEYXRh
KCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRl
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKaW5kZXgg
N2VhZTJiN2ZjYjg3NjU1ZjE5MGNlZTIzZWQ0ZmM4MDgzYjY3M2IwZS4uMjM5Y2JlZDg5NDJhZjg3
ZTA2ZGE0NzgzYWU4ZWZhMzY5MzIwYzhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRB
dHRyaWJ1dGVEYXRhLmgKQEAgLTM2LDM5ICszNiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBBdHRyOwogY2xhc3MgRWxlbWVudDsKIAotY2xhc3MgQXR0cmlidXRlVmVjdG9yIDogcHVi
bGljIFZlY3RvcjxBdHRyaWJ1dGU+IHsKLXB1YmxpYzoKLSAgICBBdHRyaWJ1dGVWZWN0b3IoKSB7
IH0KLQotICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3Q7Ci0gICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7Ci0KLSAgICAvLyBVc2VkIGR1cmluZyBwYXJzaW5nOiBvbmx5IGluc2Vy
dHMgaWYgbm90IGFscmVhZHkgdGhlcmUuCi0gICAgdm9pZCBpbnNlcnRBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJik7Ci0gICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotfTsKLQotaW5saW5lIEF0dHJpYnV0ZSogQXR0cmlidXRlVmVjdG9yOjpnZXRBdHRyaWJ1
dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0Ci17Ci0gICAgc2l6ZV90IGlu
ZGV4ID0gZ2V0QXR0cmlidXRlSXRlbUluZGV4KG5hbWUpOwotICAgIGlmIChpbmRleCAhPSBub3RG
b3VuZCkKLSAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEF0dHJpYnV0ZVZlY3Rvcio+KHRoaXMp
LT5hdChpbmRleCk7Ci0gICAgcmV0dXJuIDA7Ci19Cit0eXBlZGVmIFZlY3RvcjxBdHRyaWJ1dGU+
IEF0dHJpYnV0ZVZlY3RvcjsKIAotaW5saW5lIHNpemVfdCBBdHRyaWJ1dGVWZWN0b3I6OmdldEF0
dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAoraW5saW5l
IEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlRnJvbVZlY3Rvcihjb25zdCBBdHRyaWJ1dGVWZWN0b3Iq
IGF0dHJpYnV0ZXMsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChhdChpKS5uYW1lKCku
bWF0Y2hlcyhuYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBpOworICAgIEFTU0VSVChhdHRyaWJ1
dGVzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlcy0+c2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMtPmF0KGkpLm5hbWUoKS5tYXRjaGVzKG5hbWUp
KQorICAgICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEF0dHJpYnV0ZVZlY3Rvcio+KGF0dHJp
YnV0ZXMpLT5hdChpKTsKICAgICB9Ci0gICAgcmV0dXJuIG5vdEZvdW5kOwotfQotCi1pbmxpbmUg
dm9pZCBBdHRyaWJ1dGVWZWN0b3I6Omluc2VydEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIG5l
d0F0dHJpYnV0ZSkKLXsKLSAgICBpZiAoIWdldEF0dHJpYnV0ZUl0ZW0obmV3QXR0cmlidXRlLm5h
bWUoKSkpCi0gICAgICAgIGFwcGVuZChuZXdBdHRyaWJ1dGUpOworICAgIHJldHVybiAwOwogfQog
CiBlbnVtIEVJblVwZGF0ZVN0eWxlQXR0cmlidXRlIHsgTm90SW5VcGRhdGVTdHlsZUF0dHJpYnV0
ZSwgSW5VcGRhdGVTdHlsZUF0dHJpYnV0ZSB9OwpAQCAtMTA3LDggKzg0LDggQEAgcHVibGljOgog
CiAgICAgLy8gSW50ZXJuYWwgaW50ZXJmYWNlLgogICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlSXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gJmNvbnN0X2Nhc3Q8RWxlbWVudEF0dHJp
YnV0ZURhdGEqPih0aGlzKS0+bV9hdHRyaWJ1dGVzW2luZGV4XTsgfQotICAgIEF0dHJpYnV0ZSog
Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdCB7IHJldHVy
biBtX2F0dHJpYnV0ZXMuZ2V0QXR0cmlidXRlSXRlbShuYW1lKTsgfQotICAgIHNpemVfdCBnZXRB
dHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QgeyByZXR1
cm4gbV9hdHRyaWJ1dGVzLmdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lKTsgfQorICAgIEF0dHJp
YnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdCB7
IHJldHVybiBnZXRBdHRyaWJ1dGVGcm9tVmVjdG9yKCZtX2F0dHJpYnV0ZXMsIG5hbWUpOyB9Cisg
ICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3Q7CiAgICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSBm
dW5jdGlvbnMgZG8gbm8gZXJyb3IgY2hlY2tpbmcuCkBAIC0xNzMsNiArMTUwLDE1IEBAIGlubGlu
ZSBBdHRyaWJ1dGUqIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vCiAgICAgcmV0dXJuIDA7CiB9CiAKK2lubGluZSBzaXplX3QgRWxl
bWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lKSBjb25zdAoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2F0dHJp
YnV0ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fYXR0cmlidXRlcy5hdChpKS5uYW1l
KCkubWF0Y2hlcyhuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1
cm4gbm90Rm91bmQ7Cit9CisKIC8vIFdlIHVzZSBhIGJvb2xlYW4gcGFyYW1ldGVyIGluc3RlYWQg
b2YgY2FsbGluZyBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlIHNvIHRoYXQgdGhlIGNhbGxlcgog
Ly8gY2FuIHR1bmUgdGhlIGJlaGF2aW9yIChoYXNBdHRyaWJ1dGUgaXMgY2FzZSBzZW5zaXRpdmUg
d2hlcmVhcyBnZXRBdHRyaWJ1dGUgaXMgbm90KS4KIGlubGluZSBzaXplX3QgRWxlbWVudEF0dHJp
YnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wg
c2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGU2OTg0NmJhM2E4NmM5NzE0MjFjYjZk
YmJjMjhlOTQ2YzBjMWRjZmEuLjQ1Y2ZkNThjYTQwNWM3MWIzZDExYTExN2ExNjRmNDM4MjkxZGFj
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNw
cApAQCAtNTYzLDEzICs1NjMsMTUgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtl
UEVuZFRhZ0lmUEluQnV0dG9uU2NvcGUoKQogQXR0cmlidXRlVmVjdG9yIEhUTUxUcmVlQnVpbGRl
cjo6YXR0cmlidXRlc0ZvcklzaW5kZXhJbnB1dChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewog
ICAgIEF0dHJpYnV0ZVZlY3RvciBhdHRyaWJ1dGVzID0gdG9rZW4uYXR0cmlidXRlcygpOwotICAg
IGlmICghYXR0cmlidXRlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXR0cmlidXRlcy5yZW1vdmVB
dHRyaWJ1dGUobmFtZUF0dHIpOwotICAgICAgICBhdHRyaWJ1dGVzLnJlbW92ZUF0dHJpYnV0ZShh
Y3Rpb25BdHRyKTsKLSAgICAgICAgYXR0cmlidXRlcy5yZW1vdmVBdHRyaWJ1dGUocHJvbXB0QXR0
cik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSA9IGF0dHJpYnV0ZXMuYXQoaSku
bmFtZSgpOworICAgICAgICBpZiAobmFtZS5tYXRjaGVzKG5hbWVBdHRyKSB8fCBuYW1lLm1hdGNo
ZXMoYWN0aW9uQXR0cikgfHwgbmFtZS5tYXRjaGVzKHByb21wdEF0dHIpKSB7CisgICAgICAgICAg
ICBhdHRyaWJ1dGVzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIC0taTsKKyAgICAgICAgfQogICAg
IH0KIAotICAgIGF0dHJpYnV0ZXMuaW5zZXJ0QXR0cmlidXRlKEF0dHJpYnV0ZShuYW1lQXR0ciwg
aXNpbmRleFRhZy5sb2NhbE5hbWUoKSkpOworICAgIGF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0
ZShuYW1lQXR0ciwgaXNpbmRleFRhZy5sb2NhbE5hbWUoKSkpOwogICAgIHJldHVybiBhdHRyaWJ1
dGVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9j
dW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50
UGFyc2VyLmNwcAppbmRleCA3NDJmYmY3ZjBlMjdjNjYxNjE4N2ZkYThhMGFmMWNhMzdiODM2Yzk0
Li42NWE1MzMxMTZhZDIyZmNjZDhlYzFjNDQxZDk2M2QyNzJiYTc4YWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgdm9pZCBUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KCkK
ICAgICAvLyBkaXN0cnViaW5nIHRoZSBsaW5lL2NvbHVtbiBudW1iZXIgY2FsY3VsYXRpb25zLgog
CiAgICAgQXR0cmlidXRlVmVjdG9yIGF0dHJpYnV0ZXM7Ci0gICAgYXR0cmlidXRlcy5pbnNlcnRB
dHRyaWJ1dGUoQXR0cmlidXRlKCJzdHlsZSIsICJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRl
LXNwYWNlOiBwcmUtd3JhcDsiKSk7CisgICAgYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0
eWxlQXR0ciwgIndvcmQtd3JhcDogYnJlYWstd29yZDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyIp
KTsKICAgICBBdG9taWNIVE1MVG9rZW4gZmFrZVByZShIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcs
IHByZVRhZy5sb2NhbE5hbWUoKSwgYXR0cmlidXRlcyk7CiAKICAgICB0cmVlQnVpbGRlcigpLT5j
b25zdHJ1Y3RUcmVlRnJvbUF0b21pY1Rva2VuKGZha2VQcmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgKaW5kZXggMWM5NmE0ZTgxNzQ3OWYxYzU3MTg2YmEw
MmVjYjIwNmQ2NjE0ZWM2Mi4uNzM4YjY2NDlhYTgzODk3ZmM1NTA4OTI2ZDMzNzgzNmJlMjdlZWE2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCkBAIC00
NDEsNyArNDQxLDcgQEAgcHVibGljOgogICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogICAgIHsKICAgICAgICAgQVNTRVJU
KHVzZXNBdHRyaWJ1dGVzKCkpOwotICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzLmdldEF0dHJp
YnV0ZUl0ZW0oYXR0cmlidXRlTmFtZSk7CisgICAgICAgIHJldHVybiBnZXRBdHRyaWJ1dGVGcm9t
VmVjdG9yKCZtX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZU5hbWUpOwogICAgIH0KIAogICAgIEF0dHJp
YnV0ZVZlY3RvciYgYXR0cmlidXRlcygpCkBAIC01MzksNyArNTM5LDkgQEAgaW5saW5lIHZvaWQg
QXRvbWljTWFya3VwVG9rZW5CYXNlPFRva2VuPjo6aW5pdGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3Qg
dHlwZW5hbWUgVG8KICAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5tX3ZhbHVlUmFuZ2UubV9lbmQp
OwogCiAgICAgICAgIEF0b21pY1N0cmluZyB2YWx1ZShhdHRyaWJ1dGUubV92YWx1ZS5kYXRhKCks
IGF0dHJpYnV0ZS5tX3ZhbHVlLnNpemUoKSk7Ci0gICAgICAgIG1fYXR0cmlidXRlcy5pbnNlcnRB
dHRyaWJ1dGUoQXR0cmlidXRlKG5hbWVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlKSwgdmFsdWUpKTsK
KyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSBuYW1lID0gbmFtZUZvckF0dHJpYnV0ZShhdHRy
aWJ1dGUpOworICAgICAgICBpZiAoIWdldEF0dHJpYnV0ZUZyb21WZWN0b3IoJm1fYXR0cmlidXRl
cywgbmFtZSkpCisgICAgICAgICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShuYW1l
LCB2YWx1ZSkpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138594</attachid>
            <date>2012-04-24 10:45:57 -0700</date>
            <delta_ts>2012-04-25 10:34:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84413-20120424144555.patch</filename>
            <type>text/plain</type>
            <size>19859</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjkxMTJmZjAzNzFhMGZj
ZmRmNTcyZjNmMTU1YTVhZmM5YWY2YTA4Zi4uYWM3ZDliNTQ2Zjk2ODE0Nzc3ZWQ3YjE5Y2U2NmRj
MDUyZDU4NWIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA0LTI0ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgVXNlIFZlY3RvcjxBdHRyaWJ1dGU+IGRpcmVjdGx5IGluc3RlYWQgb2YgZW5j
YXBzdWxhdGluZyBpdCBpbiBBdHRyaWJ1dGVWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgY29tbWVudGVkIGluIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTk2MyNjMTYgd2UgZG8gbm90CisgICAgICAgIHVzdWFs
bHkgc3ViY2xhc3MgYmFzaWMgdHlwZXMgbGlrZSBWZWN0b3IuIFRoaXMgcGF0Y2ggY2hhbmdlcyBj
b2RlIHRvIHVzZQorICAgICAgICBWZWN0b3I8QXR0cmlidXRlPiBkaXJlY3RseSBhbmQgbW92ZSBh
cm91bmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGZvcm1lcgorICAgICAgICBtZXRob2RzIHRv
IG1vcmUgc3BlY2lmaWMgaGVscGVyIGZ1bmN0aW9ucyBvciBpbmxpbmUgY29kZSBhdCB0aGUgY2Fs
bGVycy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
bm9ybWFsaXplQXR0cmlidXRlcyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAg
KEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHA6CisgICAg
ICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpnZXRB
dHRyaWJ1dGVGcm9tVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVE
YXRhOjpnZXRBdHRyaWJ1dGVJdGVtKToKKyAgICAgICAgKEVsZW1lbnRBdHRyaWJ1dGVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjphdHRyaWJ1dGVWZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmNsb25lZEF0dHJpYnV0
ZVZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0
cmlidXRlSXRlbUluZGV4KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudEZyb21TYXZlZEVsZW1lbnQpOgorICAgICAg
ICAqIGh0bWwvcGFyc2VyL0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljSFRN
TFRva2VuOjpBdG9taWNIVE1MVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NG
YWtlU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjphdHRyaWJ1
dGVzRm9ySXNpbmRleElucHV0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxk
ZXIuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtlUHJlRWxlbWVudCk6
CisgICAgICAgICogeG1sL1hNTEVycm9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVY
SFRNTFBhcnNlckVycm9ySGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEVycm9yczo6aW5z
ZXJ0RXJyb3JNZXNzYWdlQmxvY2spOgorICAgICAgICAqIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5C
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJrdXBUb2tlbkJhc2U6OkF0b21pY01h
cmt1cFRva2VuQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJrdXBUb2tlbkJhc2U6
OmdldEF0dHJpYnV0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljTWFya3VwVG9rZW5C
YXNlOjphdHRyaWJ1dGVzKToKKyAgICAgICAgKEF0b21pY01hcmt1cFRva2VuQmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjo6OmluaXRpYWxpemVBdHRyaWJ1dGVzKToKKyAgICAgICAgKiB4bWwvcGFy
c2VyL1hNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNYTUxUb2tlbjo6QXRvbWlj
WE1MVG9rZW4pOgorCiAyMDEyLTA0LTI0ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbVjhdIFBhc3MgSXNvbGF0ZSB0byBzZXRET01FeGNlcHRpb24oKSAo
UGFydDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYzE3NTI0MTNjN2U2NWUyNGE0ZTBmZmI5
MWQ4YjQ3Zjg0NDM5ZTQzYi4uOGQwNDQwODExZjUxOWYzMzJlMmRjOTRjODViNTI1MDZjZDRjMWJk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNzYwLDcgKzc2MCw3IEBAIHN0YXRpYyBib29s
IGlzQXR0cmlidXRlVG9SZW1vdmUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2CiAgICAgcmV0dXJuIChuYW1lLmxvY2FsTmFtZSgpLmVuZHNXaXRoKGhyZWZB
dHRyLmxvY2FsTmFtZSgpKSB8fCBuYW1lID09IHNyY0F0dHIgfHwgbmFtZSA9PSBhY3Rpb25BdHRy
KSAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFj
ZXModmFsdWUpKTsgICAgICAgCiB9CiAKLXZvaWQgRWxlbWVudDo6cGFyc2VyU2V0QXR0cmlidXRl
cyhjb25zdCBBdHRyaWJ1dGVWZWN0b3ImIGF0dHJpYnV0ZVZlY3RvciwgRnJhZ21lbnRTY3JpcHRp
bmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCit2b2lkIEVsZW1lbnQ6OnBhcnNlclNl
dEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvciwgRnJh
Z21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiB7CiAgICAgQVNT
RVJUKCFpbkRvY3VtZW50KCkpOwogICAgIEFTU0VSVCghcGFyZW50Tm9kZSgpKTsKQEAgLTc5Myw3
ICs3OTMsNyBAQCB2b2lkIEVsZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0ZXMoY29uc3QgQXR0cmli
dXRlVmVjdG9yJiBhdHRyaWJ1dGVWZWN0b3IsIEZyYWdtZQogCiAgICAgLy8gU3RvcmUgdGhlIHNl
dCBvZiBhdHRyaWJ1dGVzIHRoYXQgY2hhbmdlZCBvbiB0aGUgc3RhY2sgaW4gY2FzZQogICAgIC8v
IGF0dHJpYnV0ZUNoYW5nZWQgbXV0YXRlcyBtX2F0dHJpYnV0ZURhdGEuCi0gICAgQXR0cmlidXRl
VmVjdG9yIGNsb25lZEF0dHJpYnV0ZXMgPSBtX2F0dHJpYnV0ZURhdGEtPmNsb25lZEF0dHJpYnV0
ZVZlY3RvcigpOworICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGNsb25lZEF0dHJpYnV0ZXMgPSBtX2F0
dHJpYnV0ZURhdGEtPmNsb25lZEF0dHJpYnV0ZVZlY3RvcigpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjbG9uZWRBdHRyaWJ1dGVzLnNpemUoKTsgKytpKQogICAgICAgICBhdHRyaWJ1
dGVDaGFuZ2VkKCZjbG9uZWRBdHRyaWJ1dGVzW2ldKTsKIH0KQEAgLTE3MzcsNyArMTczNyw3IEBA
IHZvaWQgRWxlbWVudDo6bm9ybWFsaXplQXR0cmlidXRlcygpCiAgICAgaWYgKCFhdHRyaWJ1dGVE
YXRhIHx8IGF0dHJpYnV0ZURhdGEtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y29uc3QgQXR0cmlidXRlVmVjdG9yJiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlRGF0YS0+YXR0cmli
dXRlVmVjdG9yKCk7CisgICAgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMgPSBh
dHRyaWJ1dGVEYXRhLT5hdHRyaWJ1dGVWZWN0b3IoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGF0dHJpYnV0ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKFJlZlB0cjxBdHRyPiBh
dHRyID0gYXR0cklmRXhpc3RzKGF0dHJpYnV0ZXNbaV0ubmFtZSgpKSkKICAgICAgICAgICAgIGF0
dHItPm5vcm1hbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMWM0NWI4MmE2MTQzYWQ1YmNm
OGZiNWI2ZGZkOWE1ODdmYTVhM2JlNS4uZmIzZmUzNmFmM2IyYjg4ODVkMTUxZmNlMDBiYzUxYjIx
NGJiZjlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0yNDQsNyArMjQ0LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSopOwogCiAgICAgLy8g
T25seSBjYWxsZWQgYnkgdGhlIHBhcnNlciBpbW1lZGlhdGVseSBhZnRlciBlbGVtZW50IGNvbnN0
cnVjdGlvbi4KLSAgICB2b2lkIHBhcnNlclNldEF0dHJpYnV0ZXMoY29uc3QgQXR0cmlidXRlVmVj
dG9yJiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICB2b2lkIHBhcnNlclNldEF0
dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24pOwogCiAgICAgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURhdGEoKSBjb25z
dCB7IHJldHVybiBtX2F0dHJpYnV0ZURhdGEuZ2V0KCk7IH0KICAgICBFbGVtZW50QXR0cmlidXRl
RGF0YSogZW5zdXJlQXR0cmlidXRlRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50QXR0cmlidXRlRGF0YS5jcHAKaW5kZXggMjc3ZTUyN2VlNTBiN2U2MzAyNjU1OWJiODcy
YTlmMTdlODI2NmM3Yy4uNThhM2ZjYzU5N2Y4YmVlMjFjYmE3NDA2Mjk2NzkxOWRmZDI5MTk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCkBAIC03MSwx
NSArNzEsNiBAQCB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZW1vdmVBdHRyKEVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbQogICAgIC0tbV9hdHRyQ291bnQ7CiB9
CiAKLXZvaWQgQXR0cmlidXRlVmVjdG9yOjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSkKLXsKLSAgICBzaXplX3QgaW5kZXggPSBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgo
bmFtZSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICByZW1vdmUoaW5kZXgpOwotfQotCiBFbGVtZW50QXR0cmlidXRlRGF0YTo6fkVsZW1lbnRBdHRy
aWJ1dGVEYXRhKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
QXR0cmlidXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRh
LmgKaW5kZXggN2VhZTJiN2ZjYjg3NjU1ZjE5MGNlZTIzZWQ0ZmM4MDgzYjY3M2IwZS4uMjQ3ZjI3
NGZhYTBjYjRkOGQxM2FlMWQ4ZmNlNGM2ZTlhODIzNTQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKQEAgLTM2LDM5ICszNiwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBBdHRyOwogY2xhc3MgRWxlbWVudDsKIAotY2xhc3MgQXR0cmlidXRlVmVj
dG9yIDogcHVibGljIFZlY3RvcjxBdHRyaWJ1dGU+IHsKLXB1YmxpYzoKLSAgICBBdHRyaWJ1dGVW
ZWN0b3IoKSB7IH0KLQotICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFs
aWZpZWROYW1lJikgY29uc3Q7Ci0gICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25z
dCBRdWFsaWZpZWROYW1lJikgY29uc3Q7Ci0KLSAgICAvLyBVc2VkIGR1cmluZyBwYXJzaW5nOiBv
bmx5IGluc2VydHMgaWYgbm90IGFscmVhZHkgdGhlcmUuCi0gICAgdm9pZCBpbnNlcnRBdHRyaWJ1
dGUoY29uc3QgQXR0cmlidXRlJik7Ci0gICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwotfTsKLQotaW5saW5lIEF0dHJpYnV0ZSogQXR0cmlidXRlVmVjdG9yOjpn
ZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CitpbmxpbmUg
QXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVGcm9tVmVjdG9yKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+
KiBhdHRyaWJ1dGVzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewotICAgIHNpemVfdCBp
bmRleCA9IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lKTsKLSAgICBpZiAoaW5kZXggIT0gbm90
Rm91bmQpCi0gICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxBdHRyaWJ1dGVWZWN0b3IqPih0aGlz
KS0+YXQoaW5kZXgpOwotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgc2l6ZV90IEF0dHJpYnV0
ZVZlY3Rvcjo6Z2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUp
IGNvbnN0Ci17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmIChhdChpKS5uYW1lKCkubWF0Y2hlcyhuYW1lKSkKLSAgICAgICAgICAgIHJldHVy
biBpOworICAgIEFTU0VSVChhdHRyaWJ1dGVzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYXR0cmlidXRlcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMtPmF0
KGkpLm5hbWUoKS5tYXRjaGVzKG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0
PFZlY3RvcjxBdHRyaWJ1dGU+KiA+KGF0dHJpYnV0ZXMpLT5hdChpKTsKICAgICB9Ci0gICAgcmV0
dXJuIG5vdEZvdW5kOwotfQotCi1pbmxpbmUgdm9pZCBBdHRyaWJ1dGVWZWN0b3I6Omluc2VydEF0
dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIG5ld0F0dHJpYnV0ZSkKLXsKLSAgICBpZiAoIWdldEF0
dHJpYnV0ZUl0ZW0obmV3QXR0cmlidXRlLm5hbWUoKSkpCi0gICAgICAgIGFwcGVuZChuZXdBdHRy
aWJ1dGUpOworICAgIHJldHVybiAwOwogfQogCiBlbnVtIEVJblVwZGF0ZVN0eWxlQXR0cmlidXRl
IHsgTm90SW5VcGRhdGVTdHlsZUF0dHJpYnV0ZSwgSW5VcGRhdGVTdHlsZUF0dHJpYnV0ZSB9OwpA
QCAtMTA3LDggKzgyLDggQEAgcHVibGljOgogCiAgICAgLy8gSW50ZXJuYWwgaW50ZXJmYWNlLgog
ICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlSXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1
cm4gJmNvbnN0X2Nhc3Q8RWxlbWVudEF0dHJpYnV0ZURhdGEqPih0aGlzKS0+bV9hdHRyaWJ1dGVz
W2luZGV4XTsgfQotICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZ2V0QXR0cmlidXRlSXRl
bShuYW1lKTsgfQotICAgIHNpemVfdCBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmdldEF0dHJpYnV0ZUl0
ZW1JbmRleChuYW1lKTsgfQorICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdCB7IHJldHVybiBnZXRBdHRyaWJ1dGVGcm9tVmVjdG9y
KCZtX2F0dHJpYnV0ZXMsIG5hbWUpOyB9CisgICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRl
eChjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0
ZW1JbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2Fz
ZSkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgZG8gbm8gZXJyb3IgY2hlY2tpbmcu
CkBAIC0xMzYsOCArMTExLDggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgY29uc3Qg
QXR0cmlidXRlVmVjdG9yJiBhdHRyaWJ1dGVWZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2F0dHJp
YnV0ZXM7IH0KLSAgICBBdHRyaWJ1dGVWZWN0b3IgY2xvbmVkQXR0cmlidXRlVmVjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CisgICAgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4m
IGF0dHJpYnV0ZVZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQorICAgIFZl
Y3RvcjxBdHRyaWJ1dGU+IGNsb25lZEF0dHJpYnV0ZVZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
YXR0cmlidXRlczsgfQogCiAgICAgdm9pZCBkZXRhY2hBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoRWxl
bWVudCopOwogICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBTdHJpbmcmIG5h
bWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7CkBAIC0xNTAsNyArMTI1
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbV9hdHRyaWJ1dGVT
dHlsZTsKICAgICBTcGFjZVNwbGl0U3RyaW5nIG1fY2xhc3NOYW1lczsKICAgICBBdG9taWNTdHJp
bmcgbV9pZEZvclN0eWxlUmVzb2x1dGlvbjsKLSAgICBBdHRyaWJ1dGVWZWN0b3IgbV9hdHRyaWJ1
dGVzOworICAgIFZlY3RvcjxBdHRyaWJ1dGU+IG1fYXR0cmlidXRlczsKIAogICAgIHVuc2lnbmVk
IG1fYXR0ckNvdW50OwogfTsKQEAgLTE3Myw2ICsxNDgsMTUgQEAgaW5saW5lIEF0dHJpYnV0ZSog
RWxlbWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJpYnV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1l
LCBib28KICAgICByZXR1cm4gMDsKIH0KIAoraW5saW5lIHNpemVfdCBFbGVtZW50QXR0cmlidXRl
RGF0YTo6Z2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNv
bnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXR0cmlidXRlcy5zaXplKCk7
ICsraSkgeworICAgICAgICBpZiAobV9hdHRyaWJ1dGVzLmF0KGkpLm5hbWUoKS5tYXRjaGVzKG5h
bWUpKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIHJldHVybiBub3RGb3VuZDsK
K30KKwogLy8gV2UgdXNlIGEgYm9vbGVhbiBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBjYWxsaW5nIHNo
b3VsZElnbm9yZUF0dHJpYnV0ZUNhc2Ugc28gdGhhdCB0aGUgY2FsbGVyCiAvLyBjYW4gdHVuZSB0
aGUgYmVoYXZpb3IgKGhhc0F0dHJpYnV0ZSBpcyBjYXNlIHNlbnNpdGl2ZSB3aGVyZWFzIGdldEF0
dHJpYnV0ZSBpcyBub3QpLgogaW5saW5lIHNpemVfdCBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0
QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVB
dHRyaWJ1dGVDYXNlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IGQyY2YwNzNmNjAxZmY3N2IxZTJiYzg2Yjc5
ZDQ2OGYzYWEyYjhjYzUuLjNjYTg3NWExYjIwN2IyNjNhZWEyODZmMTQwNTkxZDQxMjcwYmI2NWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAKQEAgLTQzMiw3ICs0MzIsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudEZyb21TYXZlZEVsZW1lbnQoRWxlbQogCiAg
ICAgQVNTRVJUKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSk7IC8vIG90aGVyd2lzZSBsb2NhbE5h
bWUoKSBtaWdodCBiZSB3cm9uZy4KIAotICAgIEF0dHJpYnV0ZVZlY3RvciBjbG9uZWRBdHRyaWJ1
dGVzOworICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGNsb25lZEF0dHJpYnV0ZXM7CiAgICAgaWYgKEVs
ZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gZWxlbWVudC0+dXBkYXRlZEF0dHJp
YnV0ZURhdGEoKSkKICAgICAgICAgY2xvbmVkQXR0cmlidXRlcyA9IGF0dHJpYnV0ZURhdGEtPmNs
b25lZEF0dHJpYnV0ZVZlY3RvcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
bi5oCmluZGV4IDY4NmRkM2FhNDc3ZDIxMTAzMmYwNGY5Zjc1ODRmNWViOTg0ZjVjMzMuLjRhY2Zl
YzlmODc1Zjc2OTk1YmMwYWVhZmU2N2I3YmNhMjYwMGJlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUb2tlbi5oCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIEF0b21pY0hUTUxUb2tl
biA6IHB1YmxpYyBBdG9taWNNYXJrdXBUb2tlbkJhc2U8SFRNTFRva2VuPiB7CiBwdWJsaWM6CiAg
ICAgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pIDogQXRvbWljTWFya3VwVG9rZW5C
YXNlPEhUTUxUb2tlbj4oJnRva2VuKSB7IH0KIAotICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9r
ZW5UeXBlczo6VHlwZSB0eXBlLCBBdG9taWNTdHJpbmcgbmFtZSwgY29uc3QgQXR0cmlidXRlVmVj
dG9yJiBhdHRyaWJ1dGVzID0gQXR0cmlidXRlVmVjdG9yKCkpCisgICAgQXRvbWljSFRNTFRva2Vu
KEhUTUxUb2tlblR5cGVzOjpUeXBlIHR5cGUsIEF0b21pY1N0cmluZyBuYW1lLCBjb25zdCBWZWN0
b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcyA9IFZlY3RvcjxBdHRyaWJ1dGU+KCkpCiAgICAgICAg
IDogQXRvbWljTWFya3VwVG9rZW5CYXNlPEhUTUxUb2tlbj4odHlwZSwgbmFtZSwgYXR0cmlidXRl
cykKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHAKaW5kZXggZTY5ODQ2YmEzYTg2Yzk3MTQyMWNiNmRiYmMyOGU5NDZjMGMxZGNm
YS4uYzI2ZDA2MmZhM2QyZGMyNDgzNzNkNDRiZjRkOTA1ZjgzMmM1ZjkwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC01MzEsNyArNTMx
LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NEb2N0eXBlVG9rZW4oQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKICAgICBwYXJzZUVycm9yKHRva2VuKTsKIH0KIAotdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NGYWtlU3RhcnRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgY29uc3QgQXR0cmlidXRlVmVjdG9yJiBhdHRyaWJ1dGVzKQordm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NGYWtlU3RhcnRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgY29u
c3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCiB7CiAgICAgLy8gRklYTUU6IFdlJ2xs
IG5lZWQgYSBmYW5jaWVyIGNvbnZlcnNpb24gdGhhbiBqdXN0ICJsb2NhbE5hbWUiIGZvciBTVkcv
TWF0aE1MIHRhZ3MuCiAgICAgQXRvbWljSFRNTFRva2VuIGZha2VUb2tlbihIVE1MVG9rZW5UeXBl
czo6U3RhcnRUYWcsIHRhZ05hbWUubG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMpOwpAQCAtNTYwLDE2
ICs1NjAsMTggQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlUEVuZFRhZ0lmUElu
QnV0dG9uU2NvcGUoKQogICAgIHByb2Nlc3NFbmRUYWcoZW5kUCk7CiB9CiAKLUF0dHJpYnV0ZVZl
Y3RvciBIVE1MVHJlZUJ1aWxkZXI6OmF0dHJpYnV0ZXNGb3JJc2luZGV4SW5wdXQoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKK1ZlY3RvcjxBdHRyaWJ1dGU+IEhUTUxUcmVlQnVpbGRlcjo6YXR0cmli
dXRlc0ZvcklzaW5kZXhJbnB1dChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEF0dHJp
YnV0ZVZlY3RvciBhdHRyaWJ1dGVzID0gdG9rZW4uYXR0cmlidXRlcygpOwotICAgIGlmICghYXR0
cmlidXRlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXR0cmlidXRlcy5yZW1vdmVBdHRyaWJ1dGUo
bmFtZUF0dHIpOwotICAgICAgICBhdHRyaWJ1dGVzLnJlbW92ZUF0dHJpYnV0ZShhY3Rpb25BdHRy
KTsKLSAgICAgICAgYXR0cmlidXRlcy5yZW1vdmVBdHRyaWJ1dGUocHJvbXB0QXR0cik7CisgICAg
VmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlcyA9IHRva2VuLmF0dHJpYnV0ZXMoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5zaXplKCk7ICsraSkgeworICAgICAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lID0gYXR0cmlidXRlcy5hdChpKS5uYW1lKCk7Cisg
ICAgICAgIGlmIChuYW1lLm1hdGNoZXMobmFtZUF0dHIpIHx8IG5hbWUubWF0Y2hlcyhhY3Rpb25B
dHRyKSB8fCBuYW1lLm1hdGNoZXMocHJvbXB0QXR0cikpIHsKKyAgICAgICAgICAgIGF0dHJpYnV0
ZXMucmVtb3ZlKGkpOworICAgICAgICAgICAgLS1pOworICAgICAgICB9CiAgICAgfQogCi0gICAg
YXR0cmlidXRlcy5pbnNlcnRBdHRyaWJ1dGUoQXR0cmlidXRlKG5hbWVBdHRyLCBpc2luZGV4VGFn
LmxvY2FsTmFtZSgpKSk7CisgICAgYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKG5hbWVBdHRy
LCBpc2luZGV4VGFnLmxvY2FsTmFtZSgpKSk7CiAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKaW5kZXggYmMz
NmE3OWExODFmMDhjOGRhNWU3YTVmZGVhOWM0ZTcwOGUwZDBlMS4uNjRhOTNiMzRmZmJmMWYwNGFh
MGI3MzQyMjM3Yzc5ZDlhZGQ1YmIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlcihFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyJik7CiAg
ICAgaW5saW5lIHZvaWQgcHJvY2Vzc0NoYXJhY3RlckJ1ZmZlckZvckluQm9keShFeHRlcm5hbENo
YXJhY3RlclRva2VuQnVmZmVyJik7CiAKLSAgICB2b2lkIHByb2Nlc3NGYWtlU3RhcnRUYWcoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0dHJpYnV0ZVZlY3RvciYgYXR0cmlidXRlcyA9IEF0
dHJpYnV0ZVZlY3RvcigpKTsKKyAgICB2b2lkIHByb2Nlc3NGYWtlU3RhcnRUYWcoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzID0gVmVjdG9y
PEF0dHJpYnV0ZT4oKSk7CiAgICAgdm9pZCBwcm9jZXNzRmFrZUVuZFRhZyhjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdm9pZCBwcm9jZXNzRmFrZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJik7
CiAgICAgdm9pZCBwcm9jZXNzRmFrZVBFbmRUYWdJZlBJbkJ1dHRvblNjb3BlKCk7CkBAIC0xNzIs
NyArMTcyLDcgQEAgcHJpdmF0ZToKICAgICBpbmxpbmUgYm9vbCBzaG91bGRQcm9jZXNzVG9rZW5J
bkZvcmVpZ25Db250ZW50KEF0b21pY0hUTUxUb2tlbiYpOwogICAgIHZvaWQgcHJvY2Vzc1Rva2Vu
SW5Gb3JlaWduQ29udGVudChBdG9taWNIVE1MVG9rZW4mKTsKIAotICAgIEF0dHJpYnV0ZVZlY3Rv
ciBhdHRyaWJ1dGVzRm9ySXNpbmRleElucHV0KEF0b21pY0hUTUxUb2tlbiYpOworICAgIFZlY3Rv
cjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZXNGb3JJc2luZGV4SW5wdXQoQXRvbWljSFRNTFRva2VuJik7
CiAKICAgICBIVE1MRWxlbWVudFN0YWNrOjpFbGVtZW50UmVjb3JkKiBmdXJ0aGVzdEJsb2NrRm9y
Rm9ybWF0dGluZ0VsZW1lbnQoRWxlbWVudCopOwogICAgIHZvaWQgY2FsbFRoZUFkb3B0aW9uQWdl
bmN5KEF0b21pY0hUTUxUb2tlbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1RleHREb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNzQyZmJmN2YwZTI3YzY2MTYxODdmZGE4YTBh
ZjFjYTM3YjgzNmM5NC4uNzM0ZWRmMDlmODM2ZmE2OWVjMmVjYjgxZWY0Nzg1N2Y0ZGEyMjkwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIu
Y3BwCkBAIC02MCw4ICs2MCw4IEBAIHZvaWQgVGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtl
UHJlRWxlbWVudCgpCiAgICAgLy8gc2VuZGluZyBmYWtlIGJ5dGVzIHRocm91Z2ggdGhlIGZyb250
LWVuZCBvZiB0aGUgcGFyc2VyIHRvIGF2b2lkCiAgICAgLy8gZGlzdHJ1YmluZyB0aGUgbGluZS9j
b2x1bW4gbnVtYmVyIGNhbGN1bGF0aW9ucy4KIAotICAgIEF0dHJpYnV0ZVZlY3RvciBhdHRyaWJ1
dGVzOwotICAgIGF0dHJpYnV0ZXMuaW5zZXJ0QXR0cmlidXRlKEF0dHJpYnV0ZSgic3R5bGUiLCAi
d29yZC13cmFwOiBicmVhay13b3JkOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IikpOworICAgIFZl
Y3RvcjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgYXR0cmlidXRlcy5hcHBlbmQoQXR0cmli
dXRlKHN0eWxlQXR0ciwgIndvcmQtd3JhcDogYnJlYWstd29yZDsgd2hpdGUtc3BhY2U6IHByZS13
cmFwOyIpKTsKICAgICBBdG9taWNIVE1MVG9rZW4gZmFrZVByZShIVE1MVG9rZW5UeXBlczo6U3Rh
cnRUYWcsIHByZVRhZy5sb2NhbE5hbWUoKSwgYXR0cmlidXRlcyk7CiAKICAgICB0cmVlQnVpbGRl
cigpLT5jb25zdHJ1Y3RUcmVlRnJvbUF0b21pY1Rva2VuKGZha2VQcmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
RXJyb3JzLmNwcAppbmRleCAzODUxMTM1OWIwMzFlOWMyN2U0OGQzMmNhNTM4OTUzNjBjYWQzNmNk
Li4wM2QwZTA2ZmExOTQ4YmQyNmFiODkyMzRhZTcxYmQxMTMzZjU0MWJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MRXJyb3JzLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8
RWxlbWVudD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihEb2N1bWVudCogZG9jLCBjbwog
ewogICAgIFJlZlB0cjxFbGVtZW50PiByZXBvcnRFbGVtZW50ID0gZG9jLT5jcmVhdGVFbGVtZW50
KFF1YWxpZmllZE5hbWUobnVsbEF0b20sICJwYXJzZXJlcnJvciIsIHhodG1sTmFtZXNwYWNlVVJJ
KSwgdHJ1ZSk7CiAKLSAgICBBdHRyaWJ1dGVWZWN0b3IgcmVwb3J0QXR0cmlidXRlczsKKyAgICBW
ZWN0b3I8QXR0cmlidXRlPiByZXBvcnRBdHRyaWJ1dGVzOwogICAgIHJlcG9ydEF0dHJpYnV0ZXMu
YXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJkaXNwbGF5OiBibG9jazsgd2hpdGUtc3BhY2U6
IHByZTsgYm9yZGVyOiAycHggc29saWQgI2M3NzsgcGFkZGluZzogMCAxZW0gMCAxZW07IG1hcmdp
bjogMWVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRkOyBjb2xvcjogYmxhY2siKSk7CiAgICAgcmVw
b3J0RWxlbWVudC0+cGFyc2VyU2V0QXR0cmlidXRlcyhyZXBvcnRBdHRyaWJ1dGVzLCBGcmFnbWVu
dFNjcmlwdGluZ05vdEFsbG93ZWQpOwogCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGlubGlu
ZSBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1l
bnQqIGRvYywgY28KICAgICBoMy0+cGFyc2VyQWRkQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZSgi
VGhpcyBwYWdlIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZXJyb3JzOiIpKTsKIAogICAgIFJlZlB0
cjxFbGVtZW50PiBmaXhlZCA9IGRvYy0+Y3JlYXRlRWxlbWVudChkaXZUYWcsIHRydWUpOwotICAg
IEF0dHJpYnV0ZVZlY3RvciBmaXhlZEF0dHJpYnV0ZXM7CisgICAgVmVjdG9yPEF0dHJpYnV0ZT4g
Zml4ZWRBdHRyaWJ1dGVzOwogICAgIGZpeGVkQXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0
eWxlQXR0ciwgImZvbnQtZmFtaWx5Om1vbm9zcGFjZTtmb250LXNpemU6MTJweCIpKTsKICAgICBm
aXhlZC0+cGFyc2VyU2V0QXR0cmlidXRlcyhmaXhlZEF0dHJpYnV0ZXMsIEZyYWdtZW50U2NyaXB0
aW5nTm90QWxsb3dlZCk7CiAgICAgcmVwb3J0RWxlbWVudC0+cGFyc2VyQWRkQ2hpbGQoZml4ZWQu
Z2V0KCkpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgWE1MRXJyb3JzOjppbnNlcnRFcnJvck1l
c3NhZ2VCbG9jaygpCiAKICNpZiBFTkFCTEUoWFNMVCkKICAgICBpZiAobV9kb2N1bWVudC0+dHJh
bnNmb3JtU291cmNlRG9jdW1lbnQoKSkgewotICAgICAgICBBdHRyaWJ1dGVWZWN0b3IgYXR0cmli
dXRlczsKKyAgICAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlczsKICAgICAgICAgYXR0
cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgIndoaXRlLXNwYWNlOiBub3JtYWwi
KSk7CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBwYXJhZ3JhcGggPSBtX2RvY3VtZW50LT5jcmVh
dGVFbGVtZW50KHBUYWcsIHRydWUpOwogICAgICAgICBwYXJhZ3JhcGgtPnBhcnNlclNldEF0dHJp
YnV0ZXMoYXR0cmlidXRlcywgRnJhZ21lbnRTY3JpcHRpbmdOb3RBbGxvd2VkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCmluZGV4IDFjOTZhNGU4MTc0Nzlm
MWM1NzE4NmJhMDJlY2IyMDZkNjYxNGVjNjIuLmMyOTJmZmU3MWYxY2ViZmI3NGQxZjE1NTA4MDlm
YmEwNTY2MDNjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3Vw
VG9rZW5CYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJh
c2UuaApAQCAtNDA5LDcgKzQwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAg
IEF0b21pY01hcmt1cFRva2VuQmFzZSh0eXBlbmFtZSBUb2tlbjo6VHlwZTo6VHlwZSB0eXBlLCBB
dG9taWNTdHJpbmcgbmFtZSwgY29uc3QgQXR0cmlidXRlVmVjdG9yJiBhdHRyaWJ1dGVzID0gQXR0
cmlidXRlVmVjdG9yKCkpCisgICAgQXRvbWljTWFya3VwVG9rZW5CYXNlKHR5cGVuYW1lIFRva2Vu
OjpUeXBlOjpUeXBlIHR5cGUsIEF0b21pY1N0cmluZyBuYW1lLCBjb25zdCBWZWN0b3I8QXR0cmli
dXRlPiYgYXR0cmlidXRlcyA9IFZlY3RvcjxBdHRyaWJ1dGU+KCkpCiAgICAgICAgIDogbV90eXBl
KHR5cGUpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV9leHRlcm5hbENoYXJh
Y3RlcnMoMCkKQEAgLTQ0MSwxNiArNDQxLDE2IEBAIHB1YmxpYzoKICAgICBBdHRyaWJ1dGUqIGdl
dEF0dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRlcygpKTsKLSAgICAgICAgcmV0dXJuIG1fYXR0
cmlidXRlcy5nZXRBdHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZU5hbWUpOworICAgICAgICByZXR1cm4g
Z2V0QXR0cmlidXRlRnJvbVZlY3RvcigmbV9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVOYW1lKTsKICAg
ICB9CiAKLSAgICBBdHRyaWJ1dGVWZWN0b3ImIGF0dHJpYnV0ZXMoKQorICAgIFZlY3RvcjxBdHRy
aWJ1dGU+JiBhdHRyaWJ1dGVzKCkKICAgICB7CiAgICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRl
cygpKTsKICAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKICAgICB9CiAKLSAgICBjb25zdCBB
dHRyaWJ1dGVWZWN0b3ImIGF0dHJpYnV0ZXMoKSBjb25zdAorICAgIGNvbnN0IFZlY3RvcjxBdHRy
aWJ1dGU+JiBhdHRyaWJ1dGVzKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCh1c2VzQXR0
cmlidXRlcygpKTsKICAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKQEAgLTUxNCw3ICs1MTQs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gRm9yIFN0YXJ0VGFnIGFuZCBFbmRUYWcKICAgICBib29s
IG1fc2VsZkNsb3Npbmc7CiAKLSAgICBBdHRyaWJ1dGVWZWN0b3IgbV9hdHRyaWJ1dGVzOworICAg
IFZlY3RvcjxBdHRyaWJ1dGU+IG1fYXR0cmlidXRlczsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFRva2VuPgpAQCAtNTM5LDcgKzUzOSw5IEBAIGlubGluZSB2b2lkIEF0b21pY01hcmt1cFRva2Vu
QmFzZTxUb2tlbj46OmluaXRpYWxpemVBdHRyaWJ1dGVzKGNvbnN0IHR5cGVuYW1lIFRvCiAgICAg
ICAgIEFTU0VSVChhdHRyaWJ1dGUubV92YWx1ZVJhbmdlLm1fZW5kKTsKIAogICAgICAgICBBdG9t
aWNTdHJpbmcgdmFsdWUoYXR0cmlidXRlLm1fdmFsdWUuZGF0YSgpLCBhdHRyaWJ1dGUubV92YWx1
ZS5zaXplKCkpOwotICAgICAgICBtX2F0dHJpYnV0ZXMuaW5zZXJ0QXR0cmlidXRlKEF0dHJpYnV0
ZShuYW1lRm9yQXR0cmlidXRlKGF0dHJpYnV0ZSksIHZhbHVlKSk7CisgICAgICAgIGNvbnN0IFF1
YWxpZmllZE5hbWUgbmFtZSA9IG5hbWVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAgICAg
aWYgKCFnZXRBdHRyaWJ1dGVGcm9tVmVjdG9yKCZtX2F0dHJpYnV0ZXMsIG5hbWUpKQorICAgICAg
ICAgICAgbV9hdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaAppbmRleCA2ZTE0YTExYTMxMzVh
MzkwZDMyNzhiNWQxNmY2NzgyNjdmODQ0MjAzLi5lY2YxMmIxMzczNGM1ZjMyN2ZlNDBmYzM4MWY1
NGMwMjc2MTNmNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRv
a2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbi5oCkBAIC00MzEs
NyArNDMxLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgQXRvbWljWE1MVG9r
ZW4oWE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlLCBBdG9taWNTdHJpbmcgbmFtZSwgY29uc3QgQXR0
cmlidXRlVmVjdG9yJiBhdHRyaWJ1dGVzID0gQXR0cmlidXRlVmVjdG9yKCkpCisgICAgQXRvbWlj
WE1MVG9rZW4oWE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlLCBBdG9taWNTdHJpbmcgbmFtZSwgY29u
c3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMgPSBWZWN0b3I8QXR0cmlidXRlPigpKQog
ICAgICAgICA6IEF0b21pY01hcmt1cFRva2VuQmFzZTxYTUxUb2tlbj4odHlwZSwgbmFtZSwgYXR0
cmlidXRlcykKICAgICB7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138838</attachid>
            <date>2012-04-25 10:34:59 -0700</date>
            <delta_ts>2012-04-30 08:45:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84413-20120425143457.patch</filename>
            <type>text/plain</type>
            <size>19915</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmIyOTIzZmY1YmNiNzQw
NmIwZDY4Mzk4NTk3OWIzYzhiNjRhMjQyZi4uZDEwYTlmN2UzYWU3NmVlZmMxMTBjZDI3NzYyOGU4
YTdmYTFmZWNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA0LTI1ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgVXNlIFZlY3RvcjxBdHRyaWJ1dGU+IGRpcmVjdGx5IGluc3RlYWQgb2YgZW5j
YXBzdWxhdGluZyBpdCBpbiBBdHRyaWJ1dGVWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgY29tbWVudGVkIGluIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTk2MyNjMTYgd2UgZG8gbm90CisgICAgICAgIHVzdWFs
bHkgc3ViY2xhc3MgYmFzaWMgdHlwZXMgbGlrZSBWZWN0b3IuIFRoaXMgcGF0Y2ggY2hhbmdlcyBj
b2RlIHRvIHVzZQorICAgICAgICBWZWN0b3I8QXR0cmlidXRlPiBkaXJlY3RseSBhbmQgbW92ZSBh
cm91bmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGZvcm1lcgorICAgICAgICBtZXRob2RzIHRv
IG1vcmUgc3BlY2lmaWMgaGVscGVyIGZ1bmN0aW9ucyBvciBpbmxpbmUgY29kZSBhdCB0aGUgY2Fs
bGVycy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
bm9ybWFsaXplQXR0cmlidXRlcyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAg
KEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHA6CisgICAg
ICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpmaW5k
QXR0cmlidXRlSW5WZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURh
dGE6OmdldEF0dHJpYnV0ZUl0ZW0pOgorICAgICAgICAoRWxlbWVudEF0dHJpYnV0ZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmF0dHJpYnV0ZVZlY3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6Y2xvbmVkQXR0cmlidXRl
VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpnZXRBdHRy
aWJ1dGVJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0
cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVtZW50RnJvbVNhdmVkRWxlbWVudCk6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1M
VG9rZW46OkF0b21pY0hUTUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVC
dWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zh
a2VTdGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmF0dHJpYnV0
ZXNGb3JJc2luZGV4SW5wdXQpOiBMb29wIHRocm91Z2ggdGhlIGF0dHJpYnV0ZXMKKyAgICAgICAg
YmFja3dhcmRzIHNvIHdlIGNhbiByZW1vdmUgaXRlbXMgd2l0aG91dCBhZmZlY3RpbmcgdGhlIHJl
c3Qgb2YgdGhlIGxvb3AgcnVuLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KToK
KyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVhI
VE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRXJyb3JzOjppbnNl
cnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1sL3BhcnNlci9NYXJrdXBUb2tlbkJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFzZTo6QXRvbWljTWFy
a3VwVG9rZW5CYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFzZTo6
Z2V0QXR0cmlidXRlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNNYXJrdXBUb2tlbkJh
c2U6OmF0dHJpYnV0ZXMpOgorICAgICAgICAoQXRvbWljTWFya3VwVG9rZW5CYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ojo6aW5pdGlhbGl6ZUF0dHJpYnV0ZXMpOgorICAgICAgICAqIHhtbC9wYXJz
ZXIvWE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY1hNTFRva2VuOjpBdG9taWNY
TUxUb2tlbik6CisKIDIwMTItMDQtMjUgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9w
ZW5ib3NzYS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLCBmaXggV2luZG93cyBidWlsZCBh
ZnRlciByMTE1MjE1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGNkNTBmMTM3OTM3ODE1Njhh
OGZlYTZkYmJjMDFlMjVmZTZmYWNkMGIuLjNiMTYzYjA1N2E3NTdhM2I4YjhlZWYwM2Y5OThkMDU3
MWVkY2MxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTc2MCw3ICs3NjAsNyBAQCBzdGF0
aWMgYm9vbCBpc0F0dHJpYnV0ZVRvUmVtb3ZlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdgogICAgIHJldHVybiAobmFtZS5sb2NhbE5hbWUoKS5lbmRzV2l0
aChocmVmQXR0ci5sb2NhbE5hbWUoKSkgfHwgbmFtZSA9PSBzcmNBdHRyIHx8IG5hbWUgPT0gYWN0
aW9uQXR0cikgJiYgcHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKHZhbHVlKSk7ICAgICAgIAogfQogCi12b2lkIEVsZW1lbnQ6OnBhcnNlclNldEF0
dHJpYnV0ZXMoY29uc3QgQXR0cmlidXRlVmVjdG9yJiBhdHRyaWJ1dGVWZWN0b3IsIEZyYWdtZW50
U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQordm9pZCBFbGVtZW50Ojpw
YXJzZXJTZXRBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVWZWN0
b3IsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQogewog
ICAgIEFTU0VSVCghaW5Eb2N1bWVudCgpKTsKICAgICBBU1NFUlQoIXBhcmVudE5vZGUoKSk7CkBA
IC03OTMsNyArNzkzLDcgQEAgdm9pZCBFbGVtZW50OjpwYXJzZXJTZXRBdHRyaWJ1dGVzKGNvbnN0
IEF0dHJpYnV0ZVZlY3RvciYgYXR0cmlidXRlVmVjdG9yLCBGcmFnbWUKIAogICAgIC8vIFN0b3Jl
IHRoZSBzZXQgb2YgYXR0cmlidXRlcyB0aGF0IGNoYW5nZWQgb24gdGhlIHN0YWNrIGluIGNhc2UK
ICAgICAvLyBhdHRyaWJ1dGVDaGFuZ2VkIG11dGF0ZXMgbV9hdHRyaWJ1dGVEYXRhLgotICAgIEF0
dHJpYnV0ZVZlY3RvciBjbG9uZWRBdHRyaWJ1dGVzID0gbV9hdHRyaWJ1dGVEYXRhLT5jbG9uZWRB
dHRyaWJ1dGVWZWN0b3IoKTsKKyAgICBWZWN0b3I8QXR0cmlidXRlPiBjbG9uZWRBdHRyaWJ1dGVz
ID0gbV9hdHRyaWJ1dGVEYXRhLT5jbG9uZWRBdHRyaWJ1dGVWZWN0b3IoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY2xvbmVkQXR0cmlidXRlcy5zaXplKCk7ICsraSkKICAgICAgICAg
YXR0cmlidXRlQ2hhbmdlZCgmY2xvbmVkQXR0cmlidXRlc1tpXSk7CiB9CkBAIC0xNzM3LDcgKzE3
MzcsNyBAQCB2b2lkIEVsZW1lbnQ6Om5vcm1hbGl6ZUF0dHJpYnV0ZXMoKQogICAgIGlmICghYXR0
cmlidXRlRGF0YSB8fCBhdHRyaWJ1dGVEYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGNvbnN0IEF0dHJpYnV0ZVZlY3RvciYgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZURhdGEt
PmF0dHJpYnV0ZVZlY3RvcigpOworICAgIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1
dGVzID0gYXR0cmlidXRlRGF0YS0+YXR0cmlidXRlVmVjdG9yKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhdHRyaWJ1dGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8
QXR0cj4gYXR0ciA9IGF0dHJJZkV4aXN0cyhhdHRyaWJ1dGVzW2ldLm5hbWUoKSkpCiAgICAgICAg
ICAgICBhdHRyLT5ub3JtYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDFjNDViODJhNjE0
M2FkNWJjZjhmYjViNmRmZDlhNTg3ZmE1YTNiZTUuLmZiM2ZlMzZhZjNiMmI4ODg1ZDE1MWZjZTAw
YmM1MWIyMTRiYmY5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjQ0LDcgKzI0NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqKTsKIAog
ICAgIC8vIE9ubHkgY2FsbGVkIGJ5IHRoZSBwYXJzZXIgaW1tZWRpYXRlbHkgYWZ0ZXIgZWxlbWVu
dCBjb25zdHJ1Y3Rpb24uCi0gICAgdm9pZCBwYXJzZXJTZXRBdHRyaWJ1dGVzKGNvbnN0IEF0dHJp
YnV0ZVZlY3RvciYsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7CisgICAgdm9pZCBwYXJz
ZXJTZXRBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiwgRnJhZ21lbnRTY3JpcHRp
bmdQZXJtaXNzaW9uKTsKIAogICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVEYXRhLmdldCgpOyB9CiAgICAgRWxlbWVudEF0
dHJpYnV0ZURhdGEqIGVuc3VyZUF0dHJpYnV0ZURhdGEoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCmluZGV4IDlmNTE5YWRiNGM0MWY1NDhmMmNh
MDYxMmM4NTlkMjFjMjA0NmRjMjAuLmNiODkxN2E0NTQ4YTY5NGRmNWU4YTZiMDdmZTAxMjMyNjRi
NjM1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcApA
QCAtNzEsMTUgKzcxLDYgQEAgdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6cmVtb3ZlQXR0cihF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW0KICAgICAtLW1fYXR0ckNv
dW50OwogfQogCi12b2lkIEF0dHJpYnV0ZVZlY3Rvcjo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUpCi17Ci0gICAgc2l6ZV90IGluZGV4ID0gZ2V0QXR0cmlidXRlSXRl
bUluZGV4KG5hbWUpOwotICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgcmVtb3ZlKGluZGV4KTsKLX0KLQogRWxlbWVudEF0dHJpYnV0ZURhdGE6On5FbGVt
ZW50QXR0cmlidXRlRGF0YSgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudEF0dHJpYnV0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmli
dXRlRGF0YS5oCmluZGV4IDdlYWUyYjdmY2I4NzY1NWYxOTBjZWUyM2VkNGZjODA4M2I2NzNiMGUu
LmE4NDliZmU5Nzg5MDg3MWViOWU3N2RlOGIwY2RjZWQzYTZhZTg2MzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oCkBAIC0zNiwzOSArMzYsMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQXR0cjsKIGNsYXNzIEVsZW1lbnQ7CiAKLWNsYXNzIEF0dHJp
YnV0ZVZlY3RvciA6IHB1YmxpYyBWZWN0b3I8QXR0cmlidXRlPiB7Ci1wdWJsaWM6Ci0gICAgQXR0
cmlidXRlVmVjdG9yKCkgeyB9Ci0KLSAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0ZUl0ZW0oY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIHNpemVfdCBnZXRBdHRyaWJ1dGVJdGVtSW5k
ZXgoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotCi0gICAgLy8gVXNlZCBkdXJpbmcgcGFy
c2luZzogb25seSBpbnNlcnRzIGlmIG5vdCBhbHJlYWR5IHRoZXJlLgotICAgIHZvaWQgaW5zZXJ0
QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpOwotICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLX07Ci0KLWlubGluZSBBdHRyaWJ1dGUqIEF0dHJpYnV0ZVZl
Y3Rvcjo6Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAor
aW5saW5lIEF0dHJpYnV0ZSogZmluZEF0dHJpYnV0ZUluVmVjdG9yKGNvbnN0IFZlY3RvcjxBdHRy
aWJ1dGU+JiBhdHRyaWJ1dGVzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewotICAgIHNp
emVfdCBpbmRleCA9IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChuYW1lKTsKLSAgICBpZiAoaW5kZXgg
IT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxBdHRyaWJ1dGVWZWN0b3Iq
Pih0aGlzKS0+YXQoaW5kZXgpOwotICAgIHJldHVybiAwOwotfQotCi1pbmxpbmUgc2l6ZV90IEF0
dHJpYnV0ZVZlY3Rvcjo6Z2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUpIGNvbnN0Ci17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGlmIChhdChpKS5uYW1lKCkubWF0Y2hlcyhuYW1lKSkKLSAgICAgICAgICAg
IHJldHVybiBpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLmF0KGkpLm5hbWUoKS5tYXRjaGVzKG5h
bWUpKQorICAgICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PFZlY3RvcjxBdHRyaWJ1dGU+JiA+
KGF0dHJpYnV0ZXMpLmF0KGkpOwogICAgIH0KLSAgICByZXR1cm4gbm90Rm91bmQ7Ci19Ci0KLWlu
bGluZSB2b2lkIEF0dHJpYnV0ZVZlY3Rvcjo6aW5zZXJ0QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0
ZSYgbmV3QXR0cmlidXRlKQotewotICAgIGlmICghZ2V0QXR0cmlidXRlSXRlbShuZXdBdHRyaWJ1
dGUubmFtZSgpKSkKLSAgICAgICAgYXBwZW5kKG5ld0F0dHJpYnV0ZSk7CisgICAgcmV0dXJuIDA7
CiB9CiAKIGVudW0gRUluVXBkYXRlU3R5bGVBdHRyaWJ1dGUgeyBOb3RJblVwZGF0ZVN0eWxlQXR0
cmlidXRlLCBJblVwZGF0ZVN0eWxlQXR0cmlidXRlIH07CkBAIC0xMDcsOCArODEsOCBAQCBwdWJs
aWM6CiAKICAgICAvLyBJbnRlcm5hbCBpbnRlcmZhY2UuCiAgICAgQXR0cmlidXRlKiBhdHRyaWJ1
dGVJdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiAmY29uc3RfY2FzdDxFbGVtZW50
QXR0cmlidXRlRGF0YSo+KHRoaXMpLT5tX2F0dHJpYnV0ZXNbaW5kZXhdOyB9Ci0gICAgQXR0cmli
dXRlKiBnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0IHsg
cmV0dXJuIG1fYXR0cmlidXRlcy5nZXRBdHRyaWJ1dGVJdGVtKG5hbWUpOyB9Ci0gICAgc2l6ZV90
IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdCB7
IHJldHVybiBtX2F0dHJpYnV0ZXMuZ2V0QXR0cmlidXRlSXRlbUluZGV4KG5hbWUpOyB9CisgICAg
QXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNv
bnN0IHsgcmV0dXJuIGZpbmRBdHRyaWJ1dGVJblZlY3RvcihtX2F0dHJpYnV0ZXMsIG5hbWUpOyB9
CisgICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3Q7CiAgICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBTdHJpbmcmIG5h
bWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSkgY29uc3Q7CiAKICAgICAvLyBUaGVz
ZSBmdW5jdGlvbnMgZG8gbm8gZXJyb3IgY2hlY2tpbmcuCkBAIC0xMzYsOCArMTEwLDggQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgY29uc3QgQXR0cmlidXRlVmVjdG9yJiBhdHRyaWJ1
dGVWZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KLSAgICBBdHRyaWJ1dGVW
ZWN0b3IgY2xvbmVkQXR0cmlidXRlVmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVz
OyB9CisgICAgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQorICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGNsb25lZEF0
dHJpYnV0ZVZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQogCiAgICAgdm9p
ZCBkZXRhY2hBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoRWxlbWVudCopOwogICAgIEF0dHJpYnV0ZSog
Z2V0QXR0cmlidXRlSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgc2hvdWxkSWdub3JlQXR0
cmlidXRlQ2FzZSkgY29uc3Q7CkBAIC0xNTAsNyArMTI0LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8U3R5bGVQcm9wZXJ0eVNldD4gbV9hdHRyaWJ1dGVTdHlsZTsKICAgICBTcGFjZVNwbGl0U3Ry
aW5nIG1fY2xhc3NOYW1lczsKICAgICBBdG9taWNTdHJpbmcgbV9pZEZvclN0eWxlUmVzb2x1dGlv
bjsKLSAgICBBdHRyaWJ1dGVWZWN0b3IgbV9hdHRyaWJ1dGVzOworICAgIFZlY3RvcjxBdHRyaWJ1
dGU+IG1fYXR0cmlidXRlczsKIAogICAgIHVuc2lnbmVkIG1fYXR0ckNvdW50OwogfTsKQEAgLTE3
Myw2ICsxNDcsMTUgQEAgaW5saW5lIEF0dHJpYnV0ZSogRWxlbWVudEF0dHJpYnV0ZURhdGE6Omdl
dEF0dHJpYnV0ZUl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBib28KICAgICByZXR1cm4gMDsKIH0K
IAoraW5saW5lIHNpemVfdCBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbUlu
ZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fYXR0cmlidXRlcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9h
dHRyaWJ1dGVzLmF0KGkpLm5hbWUoKS5tYXRjaGVzKG5hbWUpKQorICAgICAgICAgICAgcmV0dXJu
IGk7CisgICAgfQorICAgIHJldHVybiBub3RGb3VuZDsKK30KKwogLy8gV2UgdXNlIGEgYm9vbGVh
biBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBjYWxsaW5nIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2Ug
c28gdGhhdCB0aGUgY2FsbGVyCiAvLyBjYW4gdHVuZSB0aGUgYmVoYXZpb3IgKGhhc0F0dHJpYnV0
ZSBpcyBjYXNlIHNlbnNpdGl2ZSB3aGVyZWFzIGdldEF0dHJpYnV0ZSBpcyBub3QpLgogaW5saW5l
IHNpemVfdCBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
CmluZGV4IGQyY2YwNzNmNjAxZmY3N2IxZTJiYzg2Yjc5ZDQ2OGYzYWEyYjhjYzUuLjNjYTg3NWEx
YjIwN2IyNjNhZWEyODZmMTQwNTkxZDQxMjcwYmI2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTQzMiw3ICs0MzIs
NyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1M
RWxlbWVudEZyb21TYXZlZEVsZW1lbnQoRWxlbQogCiAgICAgQVNTRVJUKGVsZW1lbnQtPmlzSFRN
TEVsZW1lbnQoKSk7IC8vIG90aGVyd2lzZSBsb2NhbE5hbWUoKSBtaWdodCBiZSB3cm9uZy4KIAot
ICAgIEF0dHJpYnV0ZVZlY3RvciBjbG9uZWRBdHRyaWJ1dGVzOworICAgIFZlY3RvcjxBdHRyaWJ1
dGU+IGNsb25lZEF0dHJpYnV0ZXM7CiAgICAgaWYgKEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRy
aWJ1dGVEYXRhID0gZWxlbWVudC0+dXBkYXRlZEF0dHJpYnV0ZURhdGEoKSkKICAgICAgICAgY2xv
bmVkQXR0cmlidXRlcyA9IGF0dHJpYnV0ZURhdGEtPmNsb25lZEF0dHJpYnV0ZVZlY3RvcigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCmluZGV4IDY4NmRkM2FhNDc3ZDIx
MTAzMmYwNGY5Zjc1ODRmNWViOTg0ZjVjMzMuLjRhY2ZlYzlmODc1Zjc2OTk1YmMwYWVhZmU2N2I3
YmNhMjYwMGJlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
b2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBAIC04
Niw3ICs4Niw3IEBAIGNsYXNzIEF0b21pY0hUTUxUb2tlbiA6IHB1YmxpYyBBdG9taWNNYXJrdXBU
b2tlbkJhc2U8SFRNTFRva2VuPiB7CiBwdWJsaWM6CiAgICAgQXRvbWljSFRNTFRva2VuKEhUTUxU
b2tlbiYgdG9rZW4pIDogQXRvbWljTWFya3VwVG9rZW5CYXNlPEhUTUxUb2tlbj4oJnRva2VuKSB7
IH0KIAotICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlLCBBdG9t
aWNTdHJpbmcgbmFtZSwgY29uc3QgQXR0cmlidXRlVmVjdG9yJiBhdHRyaWJ1dGVzID0gQXR0cmli
dXRlVmVjdG9yKCkpCisgICAgQXRvbWljSFRNTFRva2VuKEhUTUxUb2tlblR5cGVzOjpUeXBlIHR5
cGUsIEF0b21pY1N0cmluZyBuYW1lLCBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRl
cyA9IFZlY3RvcjxBdHRyaWJ1dGU+KCkpCiAgICAgICAgIDogQXRvbWljTWFya3VwVG9rZW5CYXNl
PEhUTUxUb2tlbj4odHlwZSwgbmFtZSwgYXR0cmlidXRlcykKICAgICB7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggZTY5ODQ2
YmEzYTg2Yzk3MTQyMWNiNmRiYmMyOGU5NDZjMGMxZGNmYS4uMmIwYzAyZTVmNmY4OTc2ZmU5Njdj
NzI4MGJjNDEwZGYxNzZkNGQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC01MzEsNyArNTMxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NEb2N0eXBlVG9rZW4oQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICBwYXJz
ZUVycm9yKHRva2VuKTsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlU3Rh
cnRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgY29uc3QgQXR0cmlidXRlVmVjdG9y
JiBhdHRyaWJ1dGVzKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlU3RhcnRUYWco
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0
dHJpYnV0ZXMpCiB7CiAgICAgLy8gRklYTUU6IFdlJ2xsIG5lZWQgYSBmYW5jaWVyIGNvbnZlcnNp
b24gdGhhbiBqdXN0ICJsb2NhbE5hbWUiIGZvciBTVkcvTWF0aE1MIHRhZ3MuCiAgICAgQXRvbWlj
SFRNTFRva2VuIGZha2VUb2tlbihIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcsIHRhZ05hbWUubG9j
YWxOYW1lKCksIGF0dHJpYnV0ZXMpOwpAQCAtNTYwLDE2ICs1NjAsMTYgQEAgdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NGYWtlUEVuZFRhZ0lmUEluQnV0dG9uU2NvcGUoKQogICAgIHByb2Nl
c3NFbmRUYWcoZW5kUCk7CiB9CiAKLUF0dHJpYnV0ZVZlY3RvciBIVE1MVHJlZUJ1aWxkZXI6OmF0
dHJpYnV0ZXNGb3JJc2luZGV4SW5wdXQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKK1ZlY3RvcjxB
dHRyaWJ1dGU+IEhUTUxUcmVlQnVpbGRlcjo6YXR0cmlidXRlc0ZvcklzaW5kZXhJbnB1dChBdG9t
aWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEF0dHJpYnV0ZVZlY3RvciBhdHRyaWJ1dGVzID0g
dG9rZW4uYXR0cmlidXRlcygpOwotICAgIGlmICghYXR0cmlidXRlcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgYXR0cmlidXRlcy5yZW1vdmVBdHRyaWJ1dGUobmFtZUF0dHIpOwotICAgICAgICBhdHRy
aWJ1dGVzLnJlbW92ZUF0dHJpYnV0ZShhY3Rpb25BdHRyKTsKLSAgICAgICAgYXR0cmlidXRlcy5y
ZW1vdmVBdHRyaWJ1dGUocHJvbXB0QXR0cik7CisgICAgVmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmli
dXRlcyA9IHRva2VuLmF0dHJpYnV0ZXMoKTsKKyAgICBmb3IgKGludCBpID0gYXR0cmlidXRlcy5z
aXplKCkgLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lID0gYXR0cmlidXRlcy5hdChpKS5uYW1lKCk7CisgICAgICAgIGlmIChuYW1lLm1hdGNoZXMo
bmFtZUF0dHIpIHx8IG5hbWUubWF0Y2hlcyhhY3Rpb25BdHRyKSB8fCBuYW1lLm1hdGNoZXMocHJv
bXB0QXR0cikpCisgICAgICAgICAgICBhdHRyaWJ1dGVzLnJlbW92ZShpKTsKICAgICB9CiAKLSAg
ICBhdHRyaWJ1dGVzLmluc2VydEF0dHJpYnV0ZShBdHRyaWJ1dGUobmFtZUF0dHIsIGlzaW5kZXhU
YWcubG9jYWxOYW1lKCkpKTsKKyAgICBhdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUobmFtZUF0
dHIsIGlzaW5kZXhUYWcubG9jYWxOYW1lKCkpKTsKICAgICByZXR1cm4gYXR0cmlidXRlczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAppbmRleCBi
YzM2YTc5YTE4MWYwOGM4ZGE1ZTdhNWZkZWE5YzRlNzA4ZTBkMGUxLi42NGE5M2IzNGZmYmYxZjA0
YWEwYjczNDIyMzdjNzlkOWFkZDViYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImKTsK
ICAgICBpbmxpbmUgdm9pZCBwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyRm9ySW5Cb2R5KEV4dGVybmFs
Q2hhcmFjdGVyVG9rZW5CdWZmZXImKTsKIAotICAgIHZvaWQgcHJvY2Vzc0Zha2VTdGFydFRhZyhj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXR0cmlidXRlVmVjdG9yJiBhdHRyaWJ1dGVzID0g
QXR0cmlidXRlVmVjdG9yKCkpOworICAgIHZvaWQgcHJvY2Vzc0Zha2VTdGFydFRhZyhjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMgPSBWZWN0
b3I8QXR0cmlidXRlPigpKTsKICAgICB2b2lkIHByb2Nlc3NGYWtlRW5kVGFnKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2b2lkIHByb2Nlc3NGYWtlQ2hhcmFjdGVycyhjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIHByb2Nlc3NGYWtlUEVuZFRhZ0lmUEluQnV0dG9uU2NvcGUoKTsKQEAgLTE3
Miw3ICsxNzIsNyBAQCBwcml2YXRlOgogICAgIGlubGluZSBib29sIHNob3VsZFByb2Nlc3NUb2tl
bkluRm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuJik7CiAgICAgdm9pZCBwcm9jZXNzVG9r
ZW5JbkZvcmVpZ25Db250ZW50KEF0b21pY0hUTUxUb2tlbiYpOwogCi0gICAgQXR0cmlidXRlVmVj
dG9yIGF0dHJpYnV0ZXNGb3JJc2luZGV4SW5wdXQoQXRvbWljSFRNTFRva2VuJik7CisgICAgVmVj
dG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlc0ZvcklzaW5kZXhJbnB1dChBdG9taWNIVE1MVG9rZW4m
KTsKIAogICAgIEhUTUxFbGVtZW50U3RhY2s6OkVsZW1lbnRSZWNvcmQqIGZ1cnRoZXN0QmxvY2tG
b3JGb3JtYXR0aW5nRWxlbWVudChFbGVtZW50Kik7CiAgICAgdm9pZCBjYWxsVGhlQWRvcHRpb25B
Z2VuY3koQXRvbWljSFRNTFRva2VuJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA3NDJmYmY3ZjBlMjdjNjYxNjE4N2ZkYThh
MGFmMWNhMzdiODM2Yzk0Li43MzRlZGYwOWY4MzZmYTY5ZWMyZWNiODFlZjQ3ODU3ZjRkYTIyOTBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNl
ci5jcHAKQEAgLTYwLDggKzYwLDggQEAgdm9pZCBUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZh
a2VQcmVFbGVtZW50KCkKICAgICAvLyBzZW5kaW5nIGZha2UgYnl0ZXMgdGhyb3VnaCB0aGUgZnJv
bnQtZW5kIG9mIHRoZSBwYXJzZXIgdG8gYXZvaWQKICAgICAvLyBkaXN0cnViaW5nIHRoZSBsaW5l
L2NvbHVtbiBudW1iZXIgY2FsY3VsYXRpb25zLgogCi0gICAgQXR0cmlidXRlVmVjdG9yIGF0dHJp
YnV0ZXM7Ci0gICAgYXR0cmlidXRlcy5pbnNlcnRBdHRyaWJ1dGUoQXR0cmlidXRlKCJzdHlsZSIs
ICJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsiKSk7CisgICAg
VmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICBhdHRyaWJ1dGVzLmFwcGVuZChBdHRy
aWJ1dGUoc3R5bGVBdHRyLCAid29yZC13cmFwOiBicmVhay13b3JkOyB3aGl0ZS1zcGFjZTogcHJl
LXdyYXA7IikpOwogICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlUHJlKEhUTUxUb2tlblR5cGVzOjpT
dGFydFRhZywgcHJlVGFnLmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGVzKTsKIAogICAgIHRyZWVCdWls
ZGVyKCktPmNvbnN0cnVjdFRyZWVGcm9tQXRvbWljVG9rZW4oZmFrZVByZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxFcnJvcnMuY3BwCmluZGV4IDM4NTExMzU5YjAzMWU5YzI3ZTQ4ZDMyY2E1Mzg5NTM2MGNhZDM2
Y2QuLjAzZDBlMDZmYTE5NDhiZDI2YWI4OTIzNGFlNzFiZDExMzNmNTQxYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxFcnJvcnMuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0
cjxFbGVtZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3VtZW50KiBkb2MsIGNv
CiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IHJlcG9ydEVsZW1lbnQgPSBkb2MtPmNyZWF0ZUVsZW1l
bnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgInBhcnNlcmVycm9yIiwgeGh0bWxOYW1lc3BhY2VV
UkkpLCB0cnVlKTsKIAotICAgIEF0dHJpYnV0ZVZlY3RvciByZXBvcnRBdHRyaWJ1dGVzOworICAg
IFZlY3RvcjxBdHRyaWJ1dGU+IHJlcG9ydEF0dHJpYnV0ZXM7CiAgICAgcmVwb3J0QXR0cmlidXRl
cy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgImRpc3BsYXk6IGJsb2NrOyB3aGl0ZS1zcGFj
ZTogcHJlOyBib3JkZXI6IDJweCBzb2xpZCAjYzc3OyBwYWRkaW5nOiAwIDFlbSAwIDFlbTsgbWFy
Z2luOiAxZW07IGJhY2tncm91bmQtY29sb3I6ICNmZGQ7IGNvbG9yOiBibGFjayIpKTsKICAgICBy
ZXBvcnRFbGVtZW50LT5wYXJzZXJTZXRBdHRyaWJ1dGVzKHJlcG9ydEF0dHJpYnV0ZXMsIEZyYWdt
ZW50U2NyaXB0aW5nTm90QWxsb3dlZCk7CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgaW5s
aW5lIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihEb2N1
bWVudCogZG9jLCBjbwogICAgIGgzLT5wYXJzZXJBZGRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2Rl
KCJUaGlzIHBhZ2UgY29udGFpbnMgdGhlIGZvbGxvd2luZyBlcnJvcnM6IikpOwogCiAgICAgUmVm
UHRyPEVsZW1lbnQ+IGZpeGVkID0gZG9jLT5jcmVhdGVFbGVtZW50KGRpdlRhZywgdHJ1ZSk7Ci0g
ICAgQXR0cmlidXRlVmVjdG9yIGZpeGVkQXR0cmlidXRlczsKKyAgICBWZWN0b3I8QXR0cmlidXRl
PiBmaXhlZEF0dHJpYnV0ZXM7CiAgICAgZml4ZWRBdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUo
c3R5bGVBdHRyLCAiZm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxMnB4IikpOwogICAg
IGZpeGVkLT5wYXJzZXJTZXRBdHRyaWJ1dGVzKGZpeGVkQXR0cmlidXRlcywgRnJhZ21lbnRTY3Jp
cHRpbmdOb3RBbGxvd2VkKTsKICAgICByZXBvcnRFbGVtZW50LT5wYXJzZXJBZGRDaGlsZChmaXhl
ZC5nZXQoKSk7CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBYTUxFcnJvcnM6Omluc2VydEVycm9y
TWVzc2FnZUJsb2NrKCkKIAogI2lmIEVOQUJMRShYU0xUKQogICAgIGlmIChtX2RvY3VtZW50LT50
cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgpKSB7Ci0gICAgICAgIEF0dHJpYnV0ZVZlY3RvciBhdHRy
aWJ1dGVzOworICAgICAgICBWZWN0b3I8QXR0cmlidXRlPiBhdHRyaWJ1dGVzOwogICAgICAgICBh
dHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAid2hpdGUtc3BhY2U6IG5vcm1h
bCIpKTsKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHBhcmFncmFwaCA9IG1fZG9jdW1lbnQtPmNy
ZWF0ZUVsZW1lbnQocFRhZywgdHJ1ZSk7CiAgICAgICAgIHBhcmFncmFwaC0+cGFyc2VyU2V0QXR0
cmlidXRlcyhhdHRyaWJ1dGVzLCBGcmFnbWVudFNjcmlwdGluZ05vdEFsbG93ZWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgKaW5kZXggMWM5NmE0ZTgxNzQ3
OWYxYzU3MTg2YmEwMmVjYjIwNmQ2NjE0ZWM2Mi4uYzk2MmE2YWJhMzNhNGI1ZTUxNGMxZWEzZGUw
MTBjOThkMWJkZWJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJr
dXBUb2tlbkJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2Vu
QmFzZS5oCkBAIC00MDksNyArNDA5LDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0g
ICAgQXRvbWljTWFya3VwVG9rZW5CYXNlKHR5cGVuYW1lIFRva2VuOjpUeXBlOjpUeXBlIHR5cGUs
IEF0b21pY1N0cmluZyBuYW1lLCBjb25zdCBBdHRyaWJ1dGVWZWN0b3ImIGF0dHJpYnV0ZXMgPSBB
dHRyaWJ1dGVWZWN0b3IoKSkKKyAgICBBdG9taWNNYXJrdXBUb2tlbkJhc2UodHlwZW5hbWUgVG9r
ZW46OlR5cGU6OlR5cGUgdHlwZSwgQXRvbWljU3RyaW5nIG5hbWUsIGNvbnN0IFZlY3RvcjxBdHRy
aWJ1dGU+JiBhdHRyaWJ1dGVzID0gVmVjdG9yPEF0dHJpYnV0ZT4oKSkKICAgICAgICAgOiBtX3R5
cGUodHlwZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICAgICAgLCBtX2V4dGVybmFsQ2hh
cmFjdGVycygwKQpAQCAtNDQxLDE2ICs0NDEsMTYgQEAgcHVibGljOgogICAgIEF0dHJpYnV0ZSog
Z2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogICAg
IHsKICAgICAgICAgQVNTRVJUKHVzZXNBdHRyaWJ1dGVzKCkpOwotICAgICAgICByZXR1cm4gbV9h
dHRyaWJ1dGVzLmdldEF0dHJpYnV0ZUl0ZW0oYXR0cmlidXRlTmFtZSk7CisgICAgICAgIHJldHVy
biBmaW5kQXR0cmlidXRlSW5WZWN0b3IobV9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVOYW1lKTsKICAg
ICB9CiAKLSAgICBBdHRyaWJ1dGVWZWN0b3ImIGF0dHJpYnV0ZXMoKQorICAgIFZlY3RvcjxBdHRy
aWJ1dGU+JiBhdHRyaWJ1dGVzKCkKICAgICB7CiAgICAgICAgIEFTU0VSVCh1c2VzQXR0cmlidXRl
cygpKTsKICAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKICAgICB9CiAKLSAgICBjb25zdCBB
dHRyaWJ1dGVWZWN0b3ImIGF0dHJpYnV0ZXMoKSBjb25zdAorICAgIGNvbnN0IFZlY3RvcjxBdHRy
aWJ1dGU+JiBhdHRyaWJ1dGVzKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCh1c2VzQXR0
cmlidXRlcygpKTsKICAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKQEAgLTUxNCw3ICs1MTQs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gRm9yIFN0YXJ0VGFnIGFuZCBFbmRUYWcKICAgICBib29s
IG1fc2VsZkNsb3Npbmc7CiAKLSAgICBBdHRyaWJ1dGVWZWN0b3IgbV9hdHRyaWJ1dGVzOworICAg
IFZlY3RvcjxBdHRyaWJ1dGU+IG1fYXR0cmlidXRlczsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFRva2VuPgpAQCAtNTM5LDcgKzUzOSw5IEBAIGlubGluZSB2b2lkIEF0b21pY01hcmt1cFRva2Vu
QmFzZTxUb2tlbj46OmluaXRpYWxpemVBdHRyaWJ1dGVzKGNvbnN0IHR5cGVuYW1lIFRvCiAgICAg
ICAgIEFTU0VSVChhdHRyaWJ1dGUubV92YWx1ZVJhbmdlLm1fZW5kKTsKIAogICAgICAgICBBdG9t
aWNTdHJpbmcgdmFsdWUoYXR0cmlidXRlLm1fdmFsdWUuZGF0YSgpLCBhdHRyaWJ1dGUubV92YWx1
ZS5zaXplKCkpOwotICAgICAgICBtX2F0dHJpYnV0ZXMuaW5zZXJ0QXR0cmlidXRlKEF0dHJpYnV0
ZShuYW1lRm9yQXR0cmlidXRlKGF0dHJpYnV0ZSksIHZhbHVlKSk7CisgICAgICAgIGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUgPSBuYW1lRm9yQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAg
IGlmICghZmluZEF0dHJpYnV0ZUluVmVjdG9yKG1fYXR0cmlidXRlcywgbmFtZSkpCisgICAgICAg
ICAgICBtX2F0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbi5oIGIv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbi5oCmluZGV4IDZlMTRhMTFhMzEzNWEz
OTBkMzI3OGI1ZDE2ZjY3ODI2N2Y4NDQyMDMuLmVjZjEyYjEzNzM0YzVmMzI3ZmU0MGZjMzgxZjU0
YzAyNzYxM2Y3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9r
ZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmgKQEAgLTQzMSw3
ICs0MzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBBdG9taWNYTUxUb2tl
bihYTUxUb2tlblR5cGVzOjpUeXBlIHR5cGUsIEF0b21pY1N0cmluZyBuYW1lLCBjb25zdCBBdHRy
aWJ1dGVWZWN0b3ImIGF0dHJpYnV0ZXMgPSBBdHRyaWJ1dGVWZWN0b3IoKSkKKyAgICBBdG9taWNY
TUxUb2tlbihYTUxUb2tlblR5cGVzOjpUeXBlIHR5cGUsIEF0b21pY1N0cmluZyBuYW1lLCBjb25z
dCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcyA9IFZlY3RvcjxBdHRyaWJ1dGU+KCkpCiAg
ICAgICAgIDogQXRvbWljTWFya3VwVG9rZW5CYXNlPFhNTFRva2VuPih0eXBlLCBuYW1lLCBhdHRy
aWJ1dGVzKQogICAgIHsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139457</attachid>
            <date>2012-04-30 08:45:26 -0700</date>
            <delta_ts>2012-04-30 09:57:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-84413-20120430124524.patch</filename>
            <type>text/plain</type>
            <size>19899</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEzYzkwZTI4NmZiZjY4
M2ExYWVkZjcwNzBhZjdhMDNlYzZlYzZiMy4uOGI2YmI1ZjU1MDlhZDMwZTIwZjQ2N2M3NzM2NzAy
OGIyNDBkNTg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA0LTMwICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgVXNlIFZlY3RvcjxBdHRyaWJ1dGU+IGRpcmVjdGx5IGluc3RlYWQgb2YgZW5j
YXBzdWxhdGluZyBpdCBpbiBBdHRyaWJ1dGVWZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KKworICAgICAgICBBcyBjb21tZW50ZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc5OTYzI2MxNiB3ZSBkbyBub3QKKyAgICAgICAgdXN1YWxs
eSBzdWJjbGFzcyBiYXNpYyB0eXBlcyBsaWtlIFZlY3Rvci4gVGhpcyBwYXRjaCBjaGFuZ2VzIGNv
ZGUgdG8gdXNlCisgICAgICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGRpcmVjdGx5IGFuZCBtb3ZlIGFy
b3VuZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZm9ybWVyCisgICAgICAgIG1ldGhvZHMgdG8g
bW9yZSBzcGVjaWZpYyBoZWxwZXIgZnVuY3Rpb25zIG9yIGlubGluZSBjb2RlIGF0IHRoZSBjYWxs
ZXJzLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6cGFyc2VyU2V0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpu
b3JtYWxpemVBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAo
RWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAg
ICAgKiBkb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRB
dHRyaWJ1dGVJblZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0
YTo6Z2V0QXR0cmlidXRlSXRlbSk6CisgICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6YXR0cmlidXRlVmVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpjbG9uZWRBdHRyaWJ1dGVW
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OmdldEF0dHJp
YnV0ZUl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3Ry
dWN0aW9uU2l0ZTo6Y3JlYXRlSFRNTEVsZW1lbnRGcm9tU2F2ZWRFbGVtZW50KToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxU
b2tlbjo6QXRvbWljSFRNTFRva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFr
ZVN0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6YXR0cmlidXRl
c0ZvcklzaW5kZXhJbnB1dCk6IExvb3AgdGhyb3VnaCB0aGUgYXR0cmlidXRlcworICAgICAgICBi
YWNrd2FyZHMgc28gd2UgY2FuIHJlbW92ZSBpdGVtcyB3aXRob3V0IGFmZmVjdGluZyB0aGUgcmVz
dCBvZiB0aGUgbG9vcCBydW4uCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
Lmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHREb2N1bWVudFBhcnNlcjo6aW5zZXJ0RmFrZVByZUVsZW1lbnQpOgor
ICAgICAgICAqIHhtbC9YTUxFcnJvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlWEhU
TUxQYXJzZXJFcnJvckhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJvcnM6Omluc2Vy
dEVycm9yTWVzc2FnZUJsb2NrKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL01hcmt1cFRva2VuQmFz
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljTWFya3VwVG9rZW5CYXNlOjpBdG9taWNNYXJr
dXBUb2tlbkJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljTWFya3VwVG9rZW5CYXNlOjpn
ZXRBdHRyaWJ1dGVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY01hcmt1cFRva2VuQmFz
ZTo6YXR0cmlidXRlcyk6CisgICAgICAgIChBdG9taWNNYXJrdXBUb2tlbkJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Ojppbml0aWFsaXplQXR0cmlidXRlcyk6CisgICAgICAgICogeG1sL3BhcnNl
ci9YTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljWE1MVG9rZW46OkF0b21pY1hN
TFRva2VuKToKKwogMjAxMi0wNC0zMCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyOTIyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYTEzZjhlNjQ1MWYyMThjNzU0NmJlNDY3YzBiYzkwM2Q2
YWQwMGNhYi4uYjdiNzBjZTVhMTMxZDdlZjZjYWVhM2Y0M2I2ZmRlZjUyOWRkZjQyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtNzY5LDcgKzc2OSw3IEBAIHN0YXRpYyBib29sIGlzQXR0cmli
dXRlVG9SZW1vdmUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2CiAgICAgcmV0dXJuIChuYW1lLmxvY2FsTmFtZSgpLmVuZHNXaXRoKGhyZWZBdHRyLmxvY2Fs
TmFtZSgpKSB8fCBuYW1lID09IHNyY0F0dHIgfHwgbmFtZSA9PSBhY3Rpb25BdHRyKSAmJiBwcm90
b2NvbElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModmFsdWUp
KTsgICAgICAgCiB9CiAKLXZvaWQgRWxlbWVudDo6cGFyc2VyU2V0QXR0cmlidXRlcyhjb25zdCBB
dHRyaWJ1dGVWZWN0b3ImIGF0dHJpYnV0ZVZlY3RvciwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNz
aW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCit2b2lkIEVsZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0
ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvciwgRnJhZ21lbnRTY3Jp
cHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiB7CiAgICAgQVNTRVJUKCFpbkRv
Y3VtZW50KCkpOwogICAgIEFTU0VSVCghcGFyZW50Tm9kZSgpKTsKQEAgLTgwMiw3ICs4MDIsNyBA
QCB2b2lkIEVsZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0ZXMoY29uc3QgQXR0cmlidXRlVmVjdG9y
JiBhdHRyaWJ1dGVWZWN0b3IsIEZyYWdtZQogCiAgICAgLy8gU3RvcmUgdGhlIHNldCBvZiBhdHRy
aWJ1dGVzIHRoYXQgY2hhbmdlZCBvbiB0aGUgc3RhY2sgaW4gY2FzZQogICAgIC8vIGF0dHJpYnV0
ZUNoYW5nZWQgbXV0YXRlcyBtX2F0dHJpYnV0ZURhdGEuCi0gICAgQXR0cmlidXRlVmVjdG9yIGNs
b25lZEF0dHJpYnV0ZXMgPSBtX2F0dHJpYnV0ZURhdGEtPmNsb25lZEF0dHJpYnV0ZVZlY3Rvcigp
OworICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGNsb25lZEF0dHJpYnV0ZXMgPSBtX2F0dHJpYnV0ZURh
dGEtPmNsb25lZEF0dHJpYnV0ZVZlY3RvcigpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjbG9uZWRBdHRyaWJ1dGVzLnNpemUoKTsgKytpKQogICAgICAgICBhdHRyaWJ1dGVDaGFuZ2Vk
KCZjbG9uZWRBdHRyaWJ1dGVzW2ldKTsKIH0KQEAgLTE3NDksNyArMTc0OSw3IEBAIHZvaWQgRWxl
bWVudDo6bm9ybWFsaXplQXR0cmlidXRlcygpCiAgICAgaWYgKCFhdHRyaWJ1dGVEYXRhIHx8IGF0
dHJpYnV0ZURhdGEtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgQXR0
cmlidXRlVmVjdG9yJiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlRGF0YS0+YXR0cmlidXRlVmVjdG9y
KCk7CisgICAgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVE
YXRhLT5hdHRyaWJ1dGVWZWN0b3IoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dHJp
YnV0ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKFJlZlB0cjxBdHRyPiBhdHRyID0gYXR0
cklmRXhpc3RzKGF0dHJpYnV0ZXNbaV0ubmFtZSgpKSkKICAgICAgICAgICAgIGF0dHItPm5vcm1h
bGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYWU0ODkzYmQyM2RmN2UyMDgyYTdmOGFjMTEx
MTg5YWE3M2RiZjQ5OC4uZGI1YjhkMDAyZjkzY2VlNWRlM2JiM2QwOWI5ZDZjYTc2YTg1ZDIzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCkBAIC0yNDQsNyArMjQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSopOwogCiAgICAgLy8gT25seSBjYWxs
ZWQgYnkgdGhlIHBhcnNlciBpbW1lZGlhdGVseSBhZnRlciBlbGVtZW50IGNvbnN0cnVjdGlvbi4K
LSAgICB2b2lkIHBhcnNlclNldEF0dHJpYnV0ZXMoY29uc3QgQXR0cmlidXRlVmVjdG9yJiwgRnJh
Z21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKKyAgICB2b2lkIHBhcnNlclNldEF0dHJpYnV0ZXMo
Y29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOwog
CiAgICAgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURhdGEoKSBjb25zdCB7IHJldHVy
biBtX2F0dHJpYnV0ZURhdGEuZ2V0KCk7IH0KICAgICBFbGVtZW50QXR0cmlidXRlRGF0YSogZW5z
dXJlQXR0cmlidXRlRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0
cmlidXRlRGF0YS5jcHAKaW5kZXggOWY1MTlhZGI0YzQxZjU0OGYyY2EwNjEyYzg1OWQyMWMyMDQ2
ZGMyMC4uY2I4OTE3YTQ1NDhhNjk0ZGY1ZThhNmIwN2ZlMDEyMzI2NGI2MzU2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCkBAIC03MSwxNSArNzEsNiBA
QCB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpyZW1vdmVBdHRyKEVsZW1lbnQqIGVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbQogICAgIC0tbV9hdHRyQ291bnQ7CiB9CiAKLXZvaWQg
QXR0cmlidXRlVmVjdG9yOjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkKLXsKLSAgICBzaXplX3QgaW5kZXggPSBnZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSk7Ci0g
ICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZW1vdmUo
aW5kZXgpOwotfQotCiBFbGVtZW50QXR0cmlidXRlRGF0YTo6fkVsZW1lbnRBdHRyaWJ1dGVEYXRh
KCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRl
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKaW5kZXgg
N2VhZTJiN2ZjYjg3NjU1ZjE5MGNlZTIzZWQ0ZmM4MDgzYjY3M2IwZS4uYTg0OWJmZTk3ODkwODcx
ZWI5ZTc3ZGU4YjBjZGNlZDNhNmFlODYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRB
dHRyaWJ1dGVEYXRhLmgKQEAgLTM2LDM5ICszNiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBBdHRyOwogY2xhc3MgRWxlbWVudDsKIAotY2xhc3MgQXR0cmlidXRlVmVjdG9yIDogcHVi
bGljIFZlY3RvcjxBdHRyaWJ1dGU+IHsKLXB1YmxpYzoKLSAgICBBdHRyaWJ1dGVWZWN0b3IoKSB7
IH0KLQotICAgIEF0dHJpYnV0ZSogZ2V0QXR0cmlidXRlSXRlbShjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3Q7Ci0gICAgc2l6ZV90IGdldEF0dHJpYnV0ZUl0ZW1JbmRleChjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7Ci0KLSAgICAvLyBVc2VkIGR1cmluZyBwYXJzaW5nOiBvbmx5IGluc2Vy
dHMgaWYgbm90IGFscmVhZHkgdGhlcmUuCi0gICAgdm9pZCBpbnNlcnRBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJik7Ci0gICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotfTsKLQotaW5saW5lIEF0dHJpYnV0ZSogQXR0cmlidXRlVmVjdG9yOjpnZXRBdHRyaWJ1
dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CitpbmxpbmUgQXR0cmlidXRl
KiBmaW5kQXR0cmlidXRlSW5WZWN0b3IoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0
ZXMsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7Ci0gICAgc2l6ZV90IGluZGV4ID0gZ2V0
QXR0cmlidXRlSXRlbUluZGV4KG5hbWUpOwotICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKLSAg
ICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEF0dHJpYnV0ZVZlY3Rvcio+KHRoaXMpLT5hdChpbmRl
eCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWlubGluZSBzaXplX3QgQXR0cmlidXRlVmVjdG9yOjpn
ZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKLXsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYg
KGF0KGkpLm5hbWUoKS5tYXRjaGVzKG5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIGk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgaWYgKGF0dHJpYnV0ZXMuYXQoaSkubmFtZSgpLm1hdGNoZXMobmFtZSkpCisgICAgICAgICAg
ICByZXR1cm4gJmNvbnN0X2Nhc3Q8VmVjdG9yPEF0dHJpYnV0ZT4mID4oYXR0cmlidXRlcykuYXQo
aSk7CiAgICAgfQotICAgIHJldHVybiBub3RGb3VuZDsKLX0KLQotaW5saW5lIHZvaWQgQXR0cmli
dXRlVmVjdG9yOjppbnNlcnRBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBuZXdBdHRyaWJ1dGUp
Ci17Ci0gICAgaWYgKCFnZXRBdHRyaWJ1dGVJdGVtKG5ld0F0dHJpYnV0ZS5uYW1lKCkpKQotICAg
ICAgICBhcHBlbmQobmV3QXR0cmlidXRlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogZW51bSBFSW5V
cGRhdGVTdHlsZUF0dHJpYnV0ZSB7IE5vdEluVXBkYXRlU3R5bGVBdHRyaWJ1dGUsIEluVXBkYXRl
U3R5bGVBdHRyaWJ1dGUgfTsKQEAgLTEwNyw4ICs4MSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIElu
dGVybmFsIGludGVyZmFjZS4KICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuICZjb25zdF9jYXN0PEVsZW1lbnRBdHRyaWJ1dGVEYXRhKj4o
dGhpcyktPm1fYXR0cmlidXRlc1tpbmRleF07IH0KLSAgICBBdHRyaWJ1dGUqIGdldEF0dHJpYnV0
ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1
dGVzLmdldEF0dHJpYnV0ZUl0ZW0obmFtZSk7IH0KLSAgICBzaXplX3QgZ2V0QXR0cmlidXRlSXRl
bUluZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmli
dXRlcy5nZXRBdHRyaWJ1dGVJdGVtSW5kZXgobmFtZSk7IH0KKyAgICBBdHRyaWJ1dGUqIGdldEF0
dHJpYnV0ZUl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QgeyByZXR1cm4gZmlu
ZEF0dHJpYnV0ZUluVmVjdG9yKG1fYXR0cmlidXRlcywgbmFtZSk7IH0KKyAgICBzaXplX3QgZ2V0
QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBzaXpl
X3QgZ2V0QXR0cmlidXRlSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJ
Z25vcmVBdHRyaWJ1dGVDYXNlKSBjb25zdDsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBkbyBu
byBlcnJvciBjaGVja2luZy4KQEAgLTEzNiw4ICsxMTAsOCBAQCBwcml2YXRlOgogICAgIHsKICAg
ICB9CiAKLSAgICBjb25zdCBBdHRyaWJ1dGVWZWN0b3ImIGF0dHJpYnV0ZVZlY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fYXR0cmlidXRlczsgfQotICAgIEF0dHJpYnV0ZVZlY3RvciBjbG9uZWRBdHRy
aWJ1dGVWZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXM7IH0KKyAgICBjb25zdCBW
ZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlVmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9hdHRy
aWJ1dGVzOyB9CisgICAgVmVjdG9yPEF0dHJpYnV0ZT4gY2xvbmVkQXR0cmlidXRlVmVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CiAKICAgICB2b2lkIGRldGFjaEF0dHJpYnV0
ZXNGcm9tRWxlbWVudChFbGVtZW50Kik7CiAgICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVt
KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKSBjb25z
dDsKQEAgLTE1MCw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5
U2V0PiBtX2F0dHJpYnV0ZVN0eWxlOwogICAgIFNwYWNlU3BsaXRTdHJpbmcgbV9jbGFzc05hbWVz
OwogICAgIEF0b21pY1N0cmluZyBtX2lkRm9yU3R5bGVSZXNvbHV0aW9uOwotICAgIEF0dHJpYnV0
ZVZlY3RvciBtX2F0dHJpYnV0ZXM7CisgICAgVmVjdG9yPEF0dHJpYnV0ZT4gbV9hdHRyaWJ1dGVz
OwogCiAgICAgdW5zaWduZWQgbV9hdHRyQ291bnQ7CiB9OwpAQCAtMTczLDYgKzE0NywxNSBAQCBp
bmxpbmUgQXR0cmlidXRlKiBFbGVtZW50QXR0cmlidXRlRGF0YTo6Z2V0QXR0cmlidXRlSXRlbShj
b25zdCBTdHJpbmcmIG5hbWUsIGJvbwogICAgIHJldHVybiAwOwogfQogCitpbmxpbmUgc2l6ZV90
IEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSkgY29uc3QKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9h
dHRyaWJ1dGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2F0dHJpYnV0ZXMuYXQoaSku
bmFtZSgpLm1hdGNoZXMobmFtZSkpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAg
cmV0dXJuIG5vdEZvdW5kOworfQorCiAvLyBXZSB1c2UgYSBib29sZWFuIHBhcmFtZXRlciBpbnN0
ZWFkIG9mIGNhbGxpbmcgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSBzbyB0aGF0IHRoZSBjYWxs
ZXIKIC8vIGNhbiB0dW5lIHRoZSBiZWhhdmlvciAoaGFzQXR0cmlidXRlIGlzIGNhc2Ugc2Vuc2l0
aXZlIHdoZXJlYXMgZ2V0QXR0cmlidXRlIGlzIG5vdCkuCiBpbmxpbmUgc2l6ZV90IEVsZW1lbnRB
dHRyaWJ1dGVEYXRhOjpnZXRBdHRyaWJ1dGVJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggZDJjZjA3M2Y2
MDFmZjc3YjFlMmJjODZiNzlkNDY4ZjNhYTJiOGNjNS4uM2NhODc1YTFiMjA3YjI2M2FlYTI4NmYx
NDA1OTFkNDEyNzBiYjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNDMyLDcgKzQzMiw3IEBAIFBhc3NSZWZQdHI8
RWxlbWVudD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVtZW50RnJvbVNhdmVk
RWxlbWVudChFbGVtCiAKICAgICBBU1NFUlQoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKTsgLy8g
b3RoZXJ3aXNlIGxvY2FsTmFtZSgpIG1pZ2h0IGJlIHdyb25nLgogCi0gICAgQXR0cmlidXRlVmVj
dG9yIGNsb25lZEF0dHJpYnV0ZXM7CisgICAgVmVjdG9yPEF0dHJpYnV0ZT4gY2xvbmVkQXR0cmli
dXRlczsKICAgICBpZiAoRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJpYnV0ZURhdGEgPSBlbGVt
ZW50LT51cGRhdGVkQXR0cmlidXRlRGF0YSgpKQogICAgICAgICBjbG9uZWRBdHRyaWJ1dGVzID0g
YXR0cmlidXRlRGF0YS0+Y2xvbmVkQXR0cmlidXRlVmVjdG9yKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXggNjg2ZGQzYWE0NzdkMjExMDMyZjA0ZjlmNzU4NGY1
ZWI5ODRmNWMzMy4uNGFjZmVjOWY4NzVmNzY5OTViYzBhZWFmZTY3YjdiY2EyNjAwYmVhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTg2LDcgKzg2LDcgQEAgY2xh
c3MgQXRvbWljSFRNTFRva2VuIDogcHVibGljIEF0b21pY01hcmt1cFRva2VuQmFzZTxIVE1MVG9r
ZW4+IHsKIHB1YmxpYzoKICAgICBBdG9taWNIVE1MVG9rZW4oSFRNTFRva2VuJiB0b2tlbikgOiBB
dG9taWNNYXJrdXBUb2tlbkJhc2U8SFRNTFRva2VuPigmdG9rZW4pIHsgfQogCi0gICAgQXRvbWlj
SFRNTFRva2VuKEhUTUxUb2tlblR5cGVzOjpUeXBlIHR5cGUsIEF0b21pY1N0cmluZyBuYW1lLCBj
b25zdCBBdHRyaWJ1dGVWZWN0b3ImIGF0dHJpYnV0ZXMgPSBBdHRyaWJ1dGVWZWN0b3IoKSkKKyAg
ICBBdG9taWNIVE1MVG9rZW4oSFRNTFRva2VuVHlwZXM6OlR5cGUgdHlwZSwgQXRvbWljU3RyaW5n
IG5hbWUsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzID0gVmVjdG9yPEF0dHJp
YnV0ZT4oKSkKICAgICAgICAgOiBBdG9taWNNYXJrdXBUb2tlbkJhc2U8SFRNTFRva2VuPih0eXBl
LCBuYW1lLCBhdHRyaWJ1dGVzKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBlNjk4NDZiYTNhODZjOTcxNDIxY2I2
ZGJiYzI4ZTk0NmMwYzFkY2ZhLi4yYjBjMDJlNWY2Zjg5NzZmZTk2N2M3MjgwYmM0MTBkZjE3NmQ0
ZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5j
cHAKQEAgLTUzMSw3ICs1MzEsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RvY3R5
cGVUb2tlbihBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIHBhcnNlRXJyb3IodG9rZW4pOwog
fQogCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VTdGFydFRhZyhjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBjb25zdCBBdHRyaWJ1dGVWZWN0b3ImIGF0dHJpYnV0ZXMpCit2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Zha2VTdGFydFRhZyhjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcykKIHsKICAg
ICAvLyBGSVhNRTogV2UnbGwgbmVlZCBhIGZhbmNpZXIgY29udmVyc2lvbiB0aGFuIGp1c3QgImxv
Y2FsTmFtZSIgZm9yIFNWRy9NYXRoTUwgdGFncy4KICAgICBBdG9taWNIVE1MVG9rZW4gZmFrZVRv
a2VuKEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZywgdGFnTmFtZS5sb2NhbE5hbWUoKSwgYXR0cmli
dXRlcyk7CkBAIC01NjAsMTYgKzU2MCwxNiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSgpCiAgICAgcHJvY2Vzc0VuZFRhZyhlbmRQKTsK
IH0KIAotQXR0cmlidXRlVmVjdG9yIEhUTUxUcmVlQnVpbGRlcjo6YXR0cmlidXRlc0ZvcklzaW5k
ZXhJbnB1dChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQorVmVjdG9yPEF0dHJpYnV0ZT4gSFRNTFRy
ZWVCdWlsZGVyOjphdHRyaWJ1dGVzRm9ySXNpbmRleElucHV0KEF0b21pY0hUTUxUb2tlbiYgdG9r
ZW4pCiB7Ci0gICAgQXR0cmlidXRlVmVjdG9yIGF0dHJpYnV0ZXMgPSB0b2tlbi5hdHRyaWJ1dGVz
KCk7Ci0gICAgaWYgKCFhdHRyaWJ1dGVzLmlzRW1wdHkoKSkgewotICAgICAgICBhdHRyaWJ1dGVz
LnJlbW92ZUF0dHJpYnV0ZShuYW1lQXR0cik7Ci0gICAgICAgIGF0dHJpYnV0ZXMucmVtb3ZlQXR0
cmlidXRlKGFjdGlvbkF0dHIpOwotICAgICAgICBhdHRyaWJ1dGVzLnJlbW92ZUF0dHJpYnV0ZShw
cm9tcHRBdHRyKTsKKyAgICBWZWN0b3I8QXR0cmlidXRlPiBhdHRyaWJ1dGVzID0gdG9rZW4uYXR0
cmlidXRlcygpOworICAgIGZvciAoaW50IGkgPSBhdHRyaWJ1dGVzLnNpemUoKSAtIDE7IGkgPj0g
MDsgLS1pKSB7CisgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUgPSBhdHRyaWJ1dGVz
LmF0KGkpLm5hbWUoKTsKKyAgICAgICAgaWYgKG5hbWUubWF0Y2hlcyhuYW1lQXR0cikgfHwgbmFt
ZS5tYXRjaGVzKGFjdGlvbkF0dHIpIHx8IG5hbWUubWF0Y2hlcyhwcm9tcHRBdHRyKSkKKyAgICAg
ICAgICAgIGF0dHJpYnV0ZXMucmVtb3ZlKGkpOwogICAgIH0KIAotICAgIGF0dHJpYnV0ZXMuaW5z
ZXJ0QXR0cmlidXRlKEF0dHJpYnV0ZShuYW1lQXR0ciwgaXNpbmRleFRhZy5sb2NhbE5hbWUoKSkp
OworICAgIGF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShuYW1lQXR0ciwgaXNpbmRleFRhZy5s
b2NhbE5hbWUoKSkpOwogICAgIHJldHVybiBhdHRyaWJ1dGVzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCmluZGV4IGJjMzZhNzlhMTgxZjA4Yzhk
YTVlN2E1ZmRlYTljNGU3MDhlMGQwZTEuLjY0YTkzYjM0ZmZiZjFmMDRhYTBiNzM0MjIzN2M3OWQ5
YWRkNWJiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NDaGFyYWN0
ZXJCdWZmZXIoRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciYpOwogICAgIGlubGluZSB2b2lk
IHByb2Nlc3NDaGFyYWN0ZXJCdWZmZXJGb3JJbkJvZHkoRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1
ZmZlciYpOwogCi0gICAgdm9pZCBwcm9jZXNzRmFrZVN0YXJ0VGFnKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdHRyaWJ1dGVWZWN0b3ImIGF0dHJpYnV0ZXMgPSBBdHRyaWJ1dGVWZWN0b3Io
KSk7CisgICAgdm9pZCBwcm9jZXNzRmFrZVN0YXJ0VGFnKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcyA9IFZlY3RvcjxBdHRyaWJ1dGU+KCkp
OwogICAgIHZvaWQgcHJvY2Vzc0Zha2VFbmRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IHZvaWQgcHJvY2Vzc0Zha2VDaGFyYWN0ZXJzKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcHJv
Y2Vzc0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSgpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIHBy
aXZhdGU6CiAgICAgaW5saW5lIGJvb2wgc2hvdWxkUHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVu
dChBdG9taWNIVE1MVG9rZW4mKTsKICAgICB2b2lkIHByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRl
bnQoQXRvbWljSFRNTFRva2VuJik7CiAKLSAgICBBdHRyaWJ1dGVWZWN0b3IgYXR0cmlidXRlc0Zv
cklzaW5kZXhJbnB1dChBdG9taWNIVE1MVG9rZW4mKTsKKyAgICBWZWN0b3I8QXR0cmlidXRlPiBh
dHRyaWJ1dGVzRm9ySXNpbmRleElucHV0KEF0b21pY0hUTUxUb2tlbiYpOwogCiAgICAgSFRNTEVs
ZW1lbnRTdGFjazo6RWxlbWVudFJlY29yZCogZnVydGhlc3RCbG9ja0ZvckZvcm1hdHRpbmdFbGVt
ZW50KEVsZW1lbnQqKTsKICAgICB2b2lkIGNhbGxUaGVBZG9wdGlvbkFnZW5jeShBdG9taWNIVE1M
VG9rZW4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1
bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQ
YXJzZXIuY3BwCmluZGV4IDc0MmZiZjdmMGUyN2M2NjE2MTg3ZmRhOGEwYWYxY2EzN2I4MzZjOTQu
LjczNGVkZjA5ZjgzNmZhNjllYzJlY2I4MWVmNDc4NTdmNGRhMjI5MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcApAQCAtNjAsOCAr
NjAsOCBAQCB2b2lkIFRleHREb2N1bWVudFBhcnNlcjo6aW5zZXJ0RmFrZVByZUVsZW1lbnQoKQog
ICAgIC8vIHNlbmRpbmcgZmFrZSBieXRlcyB0aHJvdWdoIHRoZSBmcm9udC1lbmQgb2YgdGhlIHBh
cnNlciB0byBhdm9pZAogICAgIC8vIGRpc3RydWJpbmcgdGhlIGxpbmUvY29sdW1uIG51bWJlciBj
YWxjdWxhdGlvbnMuCiAKLSAgICBBdHRyaWJ1dGVWZWN0b3IgYXR0cmlidXRlczsKLSAgICBhdHRy
aWJ1dGVzLmluc2VydEF0dHJpYnV0ZShBdHRyaWJ1dGUoInN0eWxlIiwgIndvcmQtd3JhcDogYnJl
YWstd29yZDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyIpKTsKKyAgICBWZWN0b3I8QXR0cmlidXRl
PiBhdHRyaWJ1dGVzOworICAgIGF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIs
ICJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsiKSk7CiAgICAg
QXRvbWljSFRNTFRva2VuIGZha2VQcmUoSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnLCBwcmVUYWcu
bG9jYWxOYW1lKCksIGF0dHJpYnV0ZXMpOwogCiAgICAgdHJlZUJ1aWxkZXIoKS0+Y29uc3RydWN0
VHJlZUZyb21BdG9taWNUb2tlbihmYWtlUHJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxFcnJvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKaW5k
ZXggMzg1MTEzNTliMDMxZTljMjdlNDhkMzJjYTUzODk1MzYwY2FkMzZjZC4uMDNkMGUwNmZhMTk0
OGJkMjZhYjg5MjM0YWU3MWJkMTEzM2Y1NDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEVycm9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAK
QEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0
ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQqIGRvYywgY28KIHsKICAgICBSZWZQdHI8
RWxlbWVudD4gcmVwb3J0RWxlbWVudCA9IGRvYy0+Y3JlYXRlRWxlbWVudChRdWFsaWZpZWROYW1l
KG51bGxBdG9tLCAicGFyc2VyZXJyb3IiLCB4aHRtbE5hbWVzcGFjZVVSSSksIHRydWUpOwogCi0g
ICAgQXR0cmlidXRlVmVjdG9yIHJlcG9ydEF0dHJpYnV0ZXM7CisgICAgVmVjdG9yPEF0dHJpYnV0
ZT4gcmVwb3J0QXR0cmlidXRlczsKICAgICByZXBvcnRBdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1
dGUoc3R5bGVBdHRyLCAiZGlzcGxheTogYmxvY2s7IHdoaXRlLXNwYWNlOiBwcmU7IGJvcmRlcjog
MnB4IHNvbGlkICNjNzc7IHBhZGRpbmc6IDAgMWVtIDAgMWVtOyBtYXJnaW46IDFlbTsgYmFja2dy
b3VuZC1jb2xvcjogI2ZkZDsgY29sb3I6IGJsYWNrIikpOwogICAgIHJlcG9ydEVsZW1lbnQtPnBh
cnNlclNldEF0dHJpYnV0ZXMocmVwb3J0QXR0cmlidXRlcywgRnJhZ21lbnRTY3JpcHRpbmdOb3RB
bGxvd2VkKTsKIApAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxF
bGVtZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3VtZW50KiBkb2MsIGNvCiAg
ICAgaDMtPnBhcnNlckFkZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoIlRoaXMgcGFnZSBjb250
YWlucyB0aGUgZm9sbG93aW5nIGVycm9yczoiKSk7CiAKICAgICBSZWZQdHI8RWxlbWVudD4gZml4
ZWQgPSBkb2MtPmNyZWF0ZUVsZW1lbnQoZGl2VGFnLCB0cnVlKTsKLSAgICBBdHRyaWJ1dGVWZWN0
b3IgZml4ZWRBdHRyaWJ1dGVzOworICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGZpeGVkQXR0cmlidXRl
czsKICAgICBmaXhlZEF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJmb250
LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEycHgiKSk7CiAgICAgZml4ZWQtPnBhcnNlclNl
dEF0dHJpYnV0ZXMoZml4ZWRBdHRyaWJ1dGVzLCBGcmFnbWVudFNjcmlwdGluZ05vdEFsbG93ZWQp
OwogICAgIHJlcG9ydEVsZW1lbnQtPnBhcnNlckFkZENoaWxkKGZpeGVkLmdldCgpKTsKQEAgLTE1
OCw3ICsxNTgsNyBAQCB2b2lkIFhNTEVycm9yczo6aW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2soKQog
CiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgaWYgKG1fZG9jdW1lbnQtPnRyYW5zZm9ybVNvdXJjZURv
Y3VtZW50KCkpIHsKLSAgICAgICAgQXR0cmlidXRlVmVjdG9yIGF0dHJpYnV0ZXM7CisgICAgICAg
IFZlY3RvcjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CiAgICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5k
KEF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3aGl0ZS1zcGFjZTogbm9ybWFsIikpOwogICAgICAgICBS
ZWZQdHI8RWxlbWVudD4gcGFyYWdyYXBoID0gbV9kb2N1bWVudC0+Y3JlYXRlRWxlbWVudChwVGFn
LCB0cnVlKTsKICAgICAgICAgcGFyYWdyYXBoLT5wYXJzZXJTZXRBdHRyaWJ1dGVzKGF0dHJpYnV0
ZXMsIEZyYWdtZW50U2NyaXB0aW5nTm90QWxsb3dlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9NYXJrdXBUb2tlbkJhc2UuaAppbmRleCAxYzk2YTRlODE3NDc5ZjFjNTcxODZiYTAyZWNi
MjA2ZDY2MTRlYzYyLi5jOTYyYTZhYmEzM2E0YjVlNTE0YzFlYTNkZTAxMGM5OGQxYmRlYmYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgKQEAgLTQwOSw3
ICs0MDksNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBBdG9taWNNYXJrdXBU
b2tlbkJhc2UodHlwZW5hbWUgVG9rZW46OlR5cGU6OlR5cGUgdHlwZSwgQXRvbWljU3RyaW5nIG5h
bWUsIGNvbnN0IEF0dHJpYnV0ZVZlY3RvciYgYXR0cmlidXRlcyA9IEF0dHJpYnV0ZVZlY3Rvcigp
KQorICAgIEF0b21pY01hcmt1cFRva2VuQmFzZSh0eXBlbmFtZSBUb2tlbjo6VHlwZTo6VHlwZSB0
eXBlLCBBdG9taWNTdHJpbmcgbmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0
ZXMgPSBWZWN0b3I8QXR0cmlidXRlPigpKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQogICAgICAg
ICAsIG1fbmFtZShuYW1lKQogICAgICAgICAsIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzKDApCkBAIC00
NDEsMTYgKzQ0MSwxNiBAQCBwdWJsaWM6CiAgICAgQXR0cmlidXRlKiBnZXRBdHRyaWJ1dGVJdGVt
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAgICAgewogICAgICAgICBBU1NF
UlQodXNlc0F0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXMuZ2V0QXR0
cmlidXRlSXRlbShhdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgcmV0dXJuIGZpbmRBdHRyaWJ1dGVJ
blZlY3RvcihtX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZU5hbWUpOwogICAgIH0KIAotICAgIEF0dHJp
YnV0ZVZlY3RvciYgYXR0cmlidXRlcygpCisgICAgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0
ZXMoKQogICAgIHsKICAgICAgICAgQVNTRVJUKHVzZXNBdHRyaWJ1dGVzKCkpOwogICAgICAgICBy
ZXR1cm4gbV9hdHRyaWJ1dGVzOwogICAgIH0KIAotICAgIGNvbnN0IEF0dHJpYnV0ZVZlY3RvciYg
YXR0cmlidXRlcygpIGNvbnN0CisgICAgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0
ZXMoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKHVzZXNBdHRyaWJ1dGVzKCkpOwogICAg
ICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzOwpAQCAtNTE0LDcgKzUxNCw3IEBAIHByb3RlY3RlZDoK
ICAgICAvLyBGb3IgU3RhcnRUYWcgYW5kIEVuZFRhZwogICAgIGJvb2wgbV9zZWxmQ2xvc2luZzsK
IAotICAgIEF0dHJpYnV0ZVZlY3RvciBtX2F0dHJpYnV0ZXM7CisgICAgVmVjdG9yPEF0dHJpYnV0
ZT4gbV9hdHRyaWJ1dGVzOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVG9rZW4+CkBAIC01Mzks
NyArNTM5LDkgQEAgaW5saW5lIHZvaWQgQXRvbWljTWFya3VwVG9rZW5CYXNlPFRva2VuPjo6aW5p
dGlhbGl6ZUF0dHJpYnV0ZXMoY29uc3QgdHlwZW5hbWUgVG8KICAgICAgICAgQVNTRVJUKGF0dHJp
YnV0ZS5tX3ZhbHVlUmFuZ2UubV9lbmQpOwogCiAgICAgICAgIEF0b21pY1N0cmluZyB2YWx1ZShh
dHRyaWJ1dGUubV92YWx1ZS5kYXRhKCksIGF0dHJpYnV0ZS5tX3ZhbHVlLnNpemUoKSk7Ci0gICAg
ICAgIG1fYXR0cmlidXRlcy5pbnNlcnRBdHRyaWJ1dGUoQXR0cmlidXRlKG5hbWVGb3JBdHRyaWJ1
dGUoYXR0cmlidXRlKSwgdmFsdWUpKTsKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSA9IG5hbWVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAgICAgaWYgKCFmaW5kQXR0cmli
dXRlSW5WZWN0b3IobV9hdHRyaWJ1dGVzLCBuYW1lKSkKKyAgICAgICAgICAgIG1fYXR0cmlidXRl
cy5hcHBlbmQoQXR0cmlidXRlKG5hbWUsIHZhbHVlKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTFRva2VuLmgKaW5kZXggNmUxNGExMWEzMTM1YTM5MGQzMjc4YjVkMTZmNjc4
MjY3Zjg0NDIwMy4uZWNmMTJiMTM3MzRjNWYzMjdmZTQwZmMzODFmNTRjMDI3NjEzZjcwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaApAQCAtNDMxLDcgKzQzMSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgfQogICAgIH0KIAotICAgIEF0b21pY1hNTFRva2VuKFhNTFRva2VuVHlwZXM6
OlR5cGUgdHlwZSwgQXRvbWljU3RyaW5nIG5hbWUsIGNvbnN0IEF0dHJpYnV0ZVZlY3RvciYgYXR0
cmlidXRlcyA9IEF0dHJpYnV0ZVZlY3RvcigpKQorICAgIEF0b21pY1hNTFRva2VuKFhNTFRva2Vu
VHlwZXM6OlR5cGUgdHlwZSwgQXRvbWljU3RyaW5nIG5hbWUsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1
dGU+JiBhdHRyaWJ1dGVzID0gVmVjdG9yPEF0dHJpYnV0ZT4oKSkKICAgICAgICAgOiBBdG9taWNN
YXJrdXBUb2tlbkJhc2U8WE1MVG9rZW4+KHR5cGUsIG5hbWUsIGF0dHJpYnV0ZXMpCiAgICAgewog
ICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>