<?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>50442</bug_id>
          
          <creation_ts>2010-12-03 01:14:36 -0800</creation_ts>
          <short_desc>Radio button group state is not restored correctly</short_desc>
          <delta_ts>2018-10-02 16:59:21 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=190227</see_also>
          <bug_file_loc>http://crbug.com/57568</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>316727</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-12-03 01:14:36 -0800</bug_when>
    <thetext>Radio button group state is not restored correctly if non-first radio button has &quot;checked&quot; attribute.
e.g.
A page has
&lt;input type=radio name=foo value=1&gt;
&lt;input type=radio name=foo value=2 checkd&gt;

A user clicks the first radio button, then remove the tab, and load the page again.
Expected: the first radio button is checked, and the second is not checked.
Actual: Both are not checked.

* What happened?
Document::m_stateForNewFormElements has correct values and HTMLInputElement::restoreFormControlState() is called with correct values.
However, It doesn&apos;t work well for radio buttons during parsing the document.

Steps during parsing and restoring:
1. The first input tag is parsed.
  It has no &quot;checked&quot; attribute.
2. HTMLFormControlElement::finishParsingChildren() is called for the first input.
 The state is restored. The radio button becomes &quot;on&quot;.
3. The second input tag is parsed.
  It has &quot;checked&quot; attribute. So, this radio button becomes &quot;on&quot;, and the first radio button becomes &quot;off&quot;. ******
4. HTMLFormControlEement::finishParsingChildren() is called for the second input.
  The state is restored.  The radio button becomes &quot;off&quot;.

I have no idea how to fix this bug at this moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316844</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-03 09:30:51 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; 3. The second input tag is parsed.
&gt;   It has &quot;checked&quot; attribute. So, this radio button becomes &quot;on&quot;, and the first radio button becomes &quot;off&quot;. ******
&gt; 4. HTMLFormControlEement::finishParsingChildren() is called for the second input.
&gt;   The state is restored.  The radio button becomes &quot;off&quot;.
&gt; 
&gt; I have no idea how to fix this bug at this moment.

During step (3), the control is in a position to know that it’s being created by the parser and has not yet finished parsing its children. We can set constructorNeedsCreatedByParser in HTMLTagNames.in and set a flag. If that flag is set, we can defer whatever work we need to until finishParsingChildren time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321659</commentid>
    <comment_count>2</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-12-13 21:16:43 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; &gt; I have no idea how to fix this bug at this moment.
&gt; 
&gt; During step (3), the control is in a position to know that it’s being created by the parser and has not yet finished parsing its children. We can set constructorNeedsCreatedByParser in HTMLTagNames.in and set a flag. If that flag is set, we can defer whatever work we need to until finishParsingChildren time.

Thank you for the advice!  constructorNeedsCreatedByParser worked well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321663</commentid>
    <comment_count>3</comment_count>
      <attachid>76493</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-12-13 21:18:56 -0800</bug_when>
    <thetext>Created attachment 76493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327782</commentid>
    <comment_count>4</comment_count>
      <attachid>76493</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-29 18:23:47 -0800</bug_when>
    <thetext>Comment on attachment 76493
Patch

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

Looks great; a few comments.

&gt; LayoutTests/fast/forms/state-restore-radio-group.html:31
&gt; +        // Submit form in a timeout to make sure that we create a new back/forward list item.            

Disappointing that it has to work like this. It really would be better to have another way to make this kind of test work.

&gt; WebCore/html/HTMLFormControlElement.h:175
&gt; +    bool stateRestored() const { return m_stateRestored; }

Given that this function and data member are only used in HTMLInputElement, it is unpleasant we had to add them to HTMLFormControlElement. Since the restoreFormControlState function is virtual, I see no reason this couldn’t have been kept entirely within the HTMLInputElement class; I suggest you move it there.

&gt; WebCore/html/HTMLInputElement.cpp:714
&gt; +        // If m_createdByParser, delay the setChecked() call in order to avoid
&gt; +        // breaking resotred state of other radio buttons in the group.

This comment is a bit too mechanical; saying “if createdByParser” is unclear. It says that delaying the call will “avoid breaking” restored state of other radio buttons. But delay until then.

We do not want to call setChecked until we have restored saved form state, right. I think that’s the real issue. So the comment needs to explain why this logic helps that happen.

&gt; WebCore/html/HTMLInputElement.cpp:798
&gt; +    m_createdByParser = false;

Since we are resetting this to false once we are done parsing, it’s not a “created by parser” flag at all. It’s a “parsing in progress” flag, and so needs a name that means that. I’d also like to know if we can keep the number of new boolean data members down to one rather than needing a flag for this and another for “state was restored”. Maybe that’s not possible; probably not worth wasting a lot of time on that.

&gt; WebCore/html/HTMLInputElement.cpp:803
&gt; +    if (!stateRestored()) {
&gt; +        setChecked(m_defaultChecked);
&gt; +        m_useDefaultChecked = true;
&gt; +    }

It seems a little strange to do this unconditionally for all input elements even if they don’t have a checked attribute. Not great for performance either. Maybe we should do this only if m_defaultChecked?

As a side note, the m_defaultChecked data member is not helpful at all! It’s just a cached copy of hasAttribute(checkedAttr). We should get rid of it and just call hasAttribute(checkedAttr) as needed.

&gt; WebCore/html/HTMLInputElement.cpp:926
&gt; +    setNeedsValidityCheck();

The change log has no explanation of this fix and no mention other than listing this function name. Is this a separate bug fix? Is it covered by the test? Does it need a separate test?

&gt; WebCore/html/HTMLInputElement.h:214
&gt; -    HTMLInputElement(const QualifiedName&amp;, Document*, HTMLFormElement* = 0);
&gt; +    HTMLInputElement(const QualifiedName&amp;, Document*, HTMLFormElement* = 0, bool createdByParser = false);

This seems wrong. Classes derived from HTMLInputElement are going to set createdByParser to false, even in cases where they are created by the parser. Having the wrong value for createdByParser might be harmless now, but it’s not a good situation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330038</commentid>
    <comment_count>5</comment_count>
      <attachid>78098</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-01-05 22:37:58 -0800</bug_when>
    <thetext>Created attachment 78098
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330041</commentid>
    <comment_count>6</comment_count>
      <attachid>76493</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-01-05 22:45:40 -0800</bug_when>
    <thetext>Comment on attachment 76493
Patch

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

Thank you for reviewing!

&gt;&gt; WebCore/html/HTMLFormControlElement.h:175
&gt;&gt; +    bool stateRestored() const { return m_stateRestored; }
&gt; 
&gt; Given that this function and data member are only used in HTMLInputElement, it is unpleasant we had to add them to HTMLFormControlElement. Since the restoreFormControlState function is virtual, I see no reason this couldn’t have been kept entirely within the HTMLInputElement class; I suggest you move it there.

ok, I moved the flag to HTMLInputElement.

&gt;&gt; WebCore/html/HTMLInputElement.cpp:714
&gt;&gt; +        // breaking resotred state of other radio buttons in the group.
&gt; 
&gt; This comment is a bit too mechanical; saying “if createdByParser” is unclear. It says that delaying the call will “avoid breaking” restored state of other radio buttons. But delay until then.
&gt; 
&gt; We do not want to call setChecked until we have restored saved form state, right. I think that’s the real issue. So the comment needs to explain why this logic helps that happen.

I improved the comment.

&gt;&gt; WebCore/html/HTMLInputElement.cpp:798
&gt;&gt; +    m_createdByParser = false;
&gt; 
&gt; Since we are resetting this to false once we are done parsing, it’s not a “created by parser” flag at all. It’s a “parsing in progress” flag, and so needs a name that means that. I’d also like to know if we can keep the number of new boolean data members down to one rather than needing a flag for this and another for “state was restored”. Maybe that’s not possible; probably not worth wasting a lot of time on that.

Renamed it to m_parsingInProgress.

&gt;&gt; WebCore/html/HTMLInputElement.cpp:803
&gt;&gt; +    }
&gt; 
&gt; It seems a little strange to do this unconditionally for all input elements even if they don’t have a checked attribute. Not great for performance either. Maybe we should do this only if m_defaultChecked?
&gt; 
&gt; As a side note, the m_defaultChecked data member is not helpful at all! It’s just a cached copy of hasAttribute(checkedAttr). We should get rid of it and just call hasAttribute(checkedAttr) as needed.

Done.

&gt;&gt; WebCore/html/HTMLInputElement.cpp:926
&gt;&gt; +    setNeedsValidityCheck();
&gt; 
&gt; The change log has no explanation of this fix and no mention other than listing this function name. Is this a separate bug fix? Is it covered by the test? Does it need a separate test?

This was moved from parseMappedAttribute().
We need to call setNeedsValidityCheck() whenever the value is changed. So we had to add it in HTMLInputElement::finishParsingChildren().  Then, I found adding setNeedsValidityCheck() to setChecked() was better than calling setNeedsValidityCheck() after every setChecked().
If we don&apos;t add setNeedsValidityCheck(), an existing test crashes by an assertion failure.

&gt;&gt; WebCore/html/HTMLInputElement.h:214
&gt;&gt; +    HTMLInputElement(const QualifiedName&amp;, Document*, HTMLFormElement* = 0, bool createdByParser = false);
&gt; 
&gt; This seems wrong. Classes derived from HTMLInputElement are going to set createdByParser to false, even in cases where they are created by the parser. Having the wrong value for createdByParser might be harmless now, but it’s not a good situation.

ok.
I used the default parameter because we can&apos;t add new parameter after HTMLFormElement*=0 without the default parameter. I removed the default parameter of HTMLFormElement*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340079</commentid>
    <comment_count>7</comment_count>
      <attachid>78098</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-25 18:24:48 -0800</bug_when>
    <thetext>Comment on attachment 78098
Patch 2

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

ok with a nit.

&gt; WebCore/html/HTMLInputElement.cpp:652
&gt; +    if (!m_stateRestored) {

could be just an early return here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340114</commentid>
    <comment_count>8</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-01-25 20:20:41 -0800</bug_when>
    <thetext>Landed with the following fix: http://trac.webkit.org/changeset/76664

(In reply to comment #7)
&gt; &gt; WebCore/html/HTMLInputElement.cpp:652
&gt; &gt; +    if (!m_stateRestored) {
&gt; 
&gt; could be just an early return here.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340270</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-26 08:21:10 -0800</bug_when>
    <thetext>Kent, I found some ways to simplify the patch. I’ll submit a new patch soon that streamlines things a bit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76493</attachid>
            <date>2010-12-13 21:18:56 -0800</date>
            <delta_ts>2011-01-05 22:45:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50442-20101214141854.patch</filename>
            <type>text/plain</type>
            <size>12198</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NWE2MTg5OWNmZWJkMmQyZWQ0MTMwMGM4NjViZDM2NzFhNWJjODg4Li5jYWE2MjBk
NTU4MGFhODQ1NDdmNTZjMmU2ODVkYjE0MDZjY2ZmZjQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTItMTMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJhZGlvIGJ1dHRvbiBncm91
cCBzdGF0ZSBpcyBub3QgcmVzdG9yZWQgY29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDQ0MgorCisgICAgICAgICogZmFzdC9mb3Jtcy9z
dGF0ZS1yZXN0b3JlLXJhZGlvLWdyb3VwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXJhZGlvLWdyb3VwLmh0bWw6IEFkZGVkLgorCiAyMDEw
LTEyLTEzICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgQ2hyb21pdW0gdGVzdCBleHBlY3RhdGlvbnMgdXBkYXRlLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXJhZGlvLWdyb3VwLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS1yYWRpby1ncm91
cC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRkYTAyYTBkNDU1NmYzYjRhMmEzMjAxNmFhMmYz
NTBmZjhiMWI1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3Rh
dGUtcmVzdG9yZS1yYWRpby1ncm91cC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUZXN0
IHRvIHJlc3RvcmUgZm9ybSB2YWx1ZSBzdGF0ZXMgZm9yIGEgcmFkaW8gZ3JvdXAuCisKK1BBU1Mg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0MSIpLmNoZWNrZWQgaXMgdHJ1ZQorUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5wdXQyIikuY2hlY2tlZCBpcyBmYWxzZQorCisgCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtcmFkaW8tZ3Jv
dXAuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS1yYWRpby1ncm91
cC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmMxNTVkMjQ0M2U5MmEyNjMwNjI5Mjg2NGY1MGNjZDM0NDkwMzVi
ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3Rv
cmUtcmFkaW8tZ3JvdXAuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IHRvIHJlc3RvcmUgZm9ybSB2YWx1ZSBzdGF0ZXMgZm9y
IGEgcmFkaW8gZ3JvdXAuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxpbnB1dCBp
ZD1lbXB0eU9uRmlyc3RWaXNpdD4KKzxkaXYgaWQ9cGFyZW50PgorPGZvcm0gYWN0aW9uPSJkYXRh
OnRleHQvaHRtbCw8c2NyaXB0Pmhpc3RvcnkuYmFjaygpJmx0Oy9zY3JpcHQ+IiBpZD1mb3JtMT4K
KzxpbnB1dCBuYW1lPXVzZXIgdHlwZT1yYWRpbyBpZD1pbnB1dDE+Cis8aW5wdXQgY2hlY2tlZCBu
YW1lPXVzZXIgdHlwZT1yYWRpbyBpZD1pbnB1dDI+Cis8L2Zvcm0+Cis8L2Rpdj4KKworPHNjcmlw
dD4KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB2YXIgcGFyZW50ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3BhcmVudCcpOworICAgIHZhciBzdGF0ZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdlbXB0eU9uRmlyc3RWaXNpdCcpOworICAgIGlmICghc3RhdGUudmFsdWUpIHsKKyAg
ICAgICAgLy8gRmlyc3QgdmlzaXQuCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgIHN0YXRlLnZhbHVlID0gJ3Zpc2l0ZWQnOworICAgIAorICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaW5wdXQxJykuY2hlY2tlZCA9IHRydWU7CisgICAgICAgIC8vIFN1
Ym1pdCBmb3JtIGluIGEgdGltZW91dCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBjcmVhdGUgYSBuZXcg
YmFjay9mb3J3YXJkIGxpc3QgaXRlbS4gICAgICAgICAgICAKKyAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybTEnKS5zdWJtaXQoKTt9LCAw
KTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBTZWNvbmQgdmlzaXQuCisgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0MSIpLmNoZWNrZWQnKTsKKyAg
ICAgICAgc2hvdWxkQmVGYWxzZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0MiIpLmNo
ZWNrZWQnKTsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggOTZiYmRlODM3OWZkYWI2MjI5NDE3ZDUyMjJjMTliM2Q2Yzc1Y2FmYi4u
ZDlmMTZkM2E0ODE2N2ZkYmZkYTNjMDYzZjgxYWIwZjMzN2E3YTM5MiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAor
MjAxMC0xMi0xMyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmFkaW8gYnV0dG9uIGdyb3Vw
IHN0YXRlIGlzIG5vdCByZXN0b3JlZCBjb3JyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDQyCisKKyAgICAgICAgRml4ZXMgYSBidWcgdGhh
dCByYWRpbyBidXR0b24gc3RhdGVzIGFyZSBub3QgcmVzdG9yZWQgY29ycmVjdGx5IGluCisgICAg
ICAgIGEgY2FzZSB0aGF0IG5vbi1maXJzdCByYWRpbyBidXR0b24gaW4gYSBncm91cCBpcyBjaGVj
a2VkLgorCisgICAgICAgIElmICJjaGVja2VkIiBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgdGhlIHJh
ZGlvIGJ1dHRvbiBpcyBjaGVja2VkIGFuZAorICAgICAgICBvdGhlciByYWRpbyBidXR0b25zIGlu
IHRoZSBncm91cCBhcmUgdW5jaGVja2VkLiBUaGlzIGJlaGF2aW9yCisgICAgICAgIGRpc3R1cmJz
IGZvcm0gc3RhdGUgcmVzdG9yaW5nLiBUaGlzIHBhdGNoIGNoYW5nZXMgdGhpcyBiZWhhdmlvciBz
bworICAgICAgICB0aGF0IHRoZSAiY2hlY2tlZCIgYXR0cmlidXRlIGhhbmRsaW5nIGlzIGRlbGF5
ZWQgYWZ0ZXIgZm9ybSBzdGF0ZQorICAgICAgICByZXN0b3JpbmcuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXJhZGlvLWdyb3VwLmh0bWwKKworICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgICBJbnRyb2R1Y2UgbV9zdGF0
ZVJlc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4p
OgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAgSW50
cm9kdWNlIG1fc3RhdGVSZXN0b3JlZCBhbmQgc3RhdGVSZXN0b3JlZCgpLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6c3RhdGVSZXN0b3JlZCk6Cisg
ICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgIERvbid0IGNhbGwgc2V0Q2hlY2tl
ZCgpIGR1cmluZyBwYXJzaW5nLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
ZmluaXNoUGFyc2luZ0NoaWxkcmVuKToKKyAgICAgICAgIENhbGwgc2V0Q2hlY2tlZCgpIGlmIGZv
cm0gc3RhdGUgaXMgbm90IHJlc3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6c2V0Q2hlY2tlZCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6Cisg
ICAgICAgICBJbnRyb2R1Y2UgbV9jcmVhdGVkQnlQYXJzZXIuIEl0IGhhcyBiZWVuIHRydWUgdW50
aWwgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgaXMgY2FsbGVkLgorICAgICAgICAqIGh0bWwvSFRN
TFRhZ05hbWVzLmluOiBBZGQgY29uc3RydWN0b3JOZWVkc0NyZWF0ZWRCeVBhcnNlciBmbGFnLgor
CiAyMDEwLTEyLTEzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCmluZGV4IDg1NTZjMWU5ODkzMDJhMTBiNDg2ZmNiZWZlZjYwNGY4YmExODk5MDguLmJh
ODI3NTFkMmRkZTA4NWQ2NjA4Y2Y3MjcxNTdiODU0MGFiOWJmYmEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQzNCw2ICs0MzQsNyBAQCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpsYWJlbHMoKQogCiBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50V2l0aFN0YXRlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MsIEhUTUxGb3JtRWxlbWVudCog
ZikKICAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQodGFnTmFtZSwgZG9jLCBmKQorICAgICwg
bV9zdGF0ZVJlc3RvcmVkKGZhbHNlKQogewogICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9ybUVs
ZW1lbnRXaXRoU3RhdGUodGhpcyk7CiB9CkBAIC00ODEsOCArNDgyLDEwIEBAIHZvaWQgSFRNTEZv
cm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKICAgICBE
b2N1bWVudCogZG9jID0gZG9jdW1lbnQoKTsKICAgICBpZiAoZG9jLT5oYXNTdGF0ZUZvck5ld0Zv
cm1FbGVtZW50cygpKSB7CiAgICAgICAgIFN0cmluZyBzdGF0ZTsKLSAgICAgICAgaWYgKGRvYy0+
dGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQobmFtZSgpLmltcGwoKSwgdHlwZSgpLmltcGwoKSwgc3Rh
dGUpKQorICAgICAgICBpZiAoZG9jLT50YWtlU3RhdGVGb3JGb3JtRWxlbWVudChuYW1lKCkuaW1w
bCgpLCB0eXBlKCkuaW1wbCgpLCBzdGF0ZSkpIHsKICAgICAgICAgICAgIHJlc3RvcmVGb3JtQ29u
dHJvbFN0YXRlKHN0YXRlKTsKKyAgICAgICAgICAgIG1fc3RhdGVSZXN0b3JlZCA9IHRydWU7Cisg
ICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmlu
ZGV4IGU1ZDc0MWJhZjEyMTk2ODExNjBhMTgxMWM3MDc3OWJhYWU0M2IwMWQuLjMyYzFjMWRiNDUy
YTA1ZGI1ZjgwODEzZWY4ZTBhNzdhZTU3YzQxOGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuaApAQCAtMTY3LDE0ICsxNjcsMTcgQEAgcHJvdGVjdGVkOgogICAgIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhdXRvQ29tcGxl
dGUoKSBjb25zdDsKLQorICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAKKyAgICBib29sIHN0YXRlUmVzdG9yZWQoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlUmVzdG9yZWQ7IH0KKwogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOworCisgICAgYm9vbCBtX3N0YXRl
UmVzdG9yZWQgOiAxOwogfTsKIAogLy8gRklYTUU6IEdpdmUgdGhpcyBjbGFzcyBpdHMgb3duIGhl
YWRlciBmaWxlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
IGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDc2Zjg2NjUwYjM2N2Jj
MmE2NmZjNTUzYTAxOGYzZWUwNDBiYjdiZDQuLjQ4YTAzZjIzMTVmYjUwOWNkNDAyYTgzZDE1MGMw
YmQwMGQyN2JhODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTg2LDcgKzg2LDcg
QEAgc3RhdGljIGJvb2wgaXNOdW1iZXJDaGFyYWN0ZXIoVUNoYXIgY2gpCiAgICAgICAgIHx8IChj
aCA+PSAnMCcgJiYgY2ggPD0gJzknKTsKIH0KIAotSFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQs
IEhUTUxGb3JtRWxlbWVudCogZm9ybSkKK0hUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1M
Rm9ybUVsZW1lbnQqIGZvcm0sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogICAgIDogSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pCiAgICAgLCBtX21heFJl
c3VsdHMoLTEpCiAgICAgLCBtX2RlcHJlY2F0ZWRUeXBlTnVtYmVyKFRFWFQpCkBAIC05OSwxNCAr
OTksMTUgQEAgSFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KICAgICAsIG1fYXV0b2NvbXBsZXRlKFVu
aW5pdGlhbGl6ZWQpCiAgICAgLCBtX2F1dG9maWxsZWQoZmFsc2UpCiAgICAgLCBtX2luaXRlZChm
YWxzZSkKKyAgICAsIG1fY3JlYXRlZEJ5UGFyc2VyKGNyZWF0ZWRCeVBhcnNlcikKICAgICAsIG1f
aW5wdXRUeXBlKElucHV0VHlwZTo6Y3JlYXRlVGV4dCh0aGlzKSkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShpbnB1dFRhZykgfHwgaGFzVGFnTmFtZShpc2luZGV4VGFnKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50
KiBmb3JtKQorUGFzc1JlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBI
VE1MRm9ybUVsZW1lbnQqIGZvcm0sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSFRNTElucHV0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkp
OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTElucHV0RWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCwgZm9ybSwgY3JlYXRlZEJ5UGFyc2VyKSk7CiB9CiAKIEhUTUxJbnB1dEVsZW1lbnQ6On5I
VE1MSW5wdXRFbGVtZW50KCkKQEAgLTcwOSwxMSArNzEwLDEyIEBAIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBzZXRO
ZWVkc1ZhbGlkaXR5Q2hlY2soKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjaGVj
a2VkQXR0cikgewogICAgICAgICBtX2RlZmF1bHRDaGVja2VkID0gIWF0dHItPmlzTnVsbCgpOwot
ICAgICAgICBpZiAobV91c2VEZWZhdWx0Q2hlY2tlZCkgeworICAgICAgICAvLyBJZiBtX2NyZWF0
ZWRCeVBhcnNlciwgZGVsYXkgdGhlIHNldENoZWNrZWQoKSBjYWxsIGluIG9yZGVyIHRvIGF2b2lk
CisgICAgICAgIC8vIGJyZWFraW5nIHJlc290cmVkIHN0YXRlIG9mIG90aGVyIHJhZGlvIGJ1dHRv
bnMgaW4gdGhlIGdyb3VwLgorICAgICAgICBpZiAoIW1fY3JlYXRlZEJ5UGFyc2VyICYmIG1fdXNl
RGVmYXVsdENoZWNrZWQpIHsKICAgICAgICAgICAgIHNldENoZWNrZWQobV9kZWZhdWx0Q2hlY2tl
ZCk7CiAgICAgICAgICAgICBtX3VzZURlZmF1bHRDaGVja2VkID0gdHJ1ZTsKICAgICAgICAgfQot
ICAgICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBtYXhsZW5ndGhBdHRyKSB7CiAgICAgICAgIElucHV0RWxlbWVudDo6cGFyc2VNYXhM
ZW5ndGhBdHRyaWJ1dGUobV9kYXRhLCB0aGlzLCB0aGlzLCBhdHRyKTsKICAgICAgICAgc2V0TmVl
ZHNWYWxpZGl0eUNoZWNrKCk7CkBAIC03OTEsNiArNzkzLDE2IEBAIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAK
K3ZvaWQgSFRNTElucHV0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKK3sKKyAgICBt
X2NyZWF0ZWRCeVBhcnNlciA9IGZhbHNlOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRo
U3RhdGU6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOworICAgIGlmICghc3RhdGVSZXN0b3JlZCgp
KSB7CisgICAgICAgIHNldENoZWNrZWQobV9kZWZhdWx0Q2hlY2tlZCk7CisgICAgICAgIG1fdXNl
RGVmYXVsdENoZWNrZWQgPSB0cnVlOworICAgIH0KK30KKwogYm9vbCBIVE1MSW5wdXRFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkKIHsKICAgICBpZiAoZGVwcmVj
YXRlZElucHV0VHlwZSgpID09IEhJRERFTikKQEAgLTkxMSw2ICs5MjMsNyBAQCB2b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OnNldENoZWNrZWQoYm9vbCBub3dDaGVja2VkLCBib29sIHNlbmRDaGFuZ2VF
dmVudCkKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKICAgICB1cGRhdGVDaGVja2VkUmFk
aW9CdXR0b25zKCk7CisgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CiAKICAgICAvLyBJZGVh
bGx5IHdlJ2QgZG8gdGhpcyBmcm9tIHRoZSByZW5kZXIgdHJlZSAobWF0Y2hpbmcKICAgICAvLyBS
ZW5kZXJUZXh0VmlldyksIGJ1dCBpdCdzIG5vdCBwb3NzaWJsZSB0byBkbyBpdCBhdCB0aGUgbW9t
ZW50CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCAwZjBlOTdlNjdiNjUzODVkZmYxY2NmM2Qy
YTFkMzhjNmIwNmVkOTdhLi44MWMzZmE0ODczNTI0YTdjMTMzYmQ1NmU0MTY3MzlmMTg2OTEyZjVj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgVmlzaWJs
ZVNlbGVjdGlvbjsKIAogY2xhc3MgSFRNTElucHV0RWxlbWVudCA6IHB1YmxpYyBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudCwgcHVibGljIElucHV0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhUTUxJbnB1dEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
LCBIVE1MRm9ybUVsZW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAgICAgdmlydHVhbCB+
SFRNTElucHV0RWxlbWVudCgpOwogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uih3ZWJraXRzcGVlY2hjaGFuZ2UpOwpAQCAtMjExLDcgKzIxMSw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByb3RlY3RlZDoKLSAgICBIVE1MSW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCogPSAwKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCogPSAwLCBi
b29sIGNyZWF0ZWRCeVBhcnNlciA9IGZhbHNlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAKQEAgLTI4NSw2ICsyODUsNyBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUs
IE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
UGFyc2luZ0NoaWxkcmVuKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29weU5vbkF0dHJpYnV0ZVBy
b3BlcnRpZXMoY29uc3QgRWxlbWVudCogc291cmNlKTsKIApAQCAtMzY4LDYgKzM2OSw3IEBAIHBy
aXZhdGU6CiAjaWYgRU5BQkxFKERBVEFMSVNUKQogICAgIGJvb2wgbV9oYXNOb25FbXB0eUxpc3Qg
OiAxOwogI2VuZGlmCisgICAgYm9vbCBtX2NyZWF0ZWRCeVBhcnNlciA6IDE7CiAgICAgT3duUHRy
PElucHV0VHlwZT4gbV9pbnB1dFR5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTFRhZ05hbWVzLmluIGIvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgppbmRleCA0MTUz
ZjVjYjc0Yjk2MzRlYjgwMDliZWQxNzA5ZTczYzAzZGIxYzdmLi4xNTQ2YjQ5Y2ZhMjY1Y2I3NTgy
YTA3Mzc2NGFlNjFhN2VhZGEzYzhkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05h
bWVzLmluCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4KQEAgLTY3LDcgKzY3LDcg
QEAgaSBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CiBpZnJhbWUgaW50ZXJmYWNlTmFtZT1IVE1M
SUZyYW1lRWxlbWVudAogaW1hZ2UgbWFwVG9UYWdOYW1lPWltZwogaW1nIGludGVyZmFjZU5hbWU9
SFRNTEltYWdlRWxlbWVudCwgY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50Ci1pbnB1dCBjb25z
dHJ1Y3Rvck5lZWRzRm9ybUVsZW1lbnQKK2lucHV0IGNvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVu
dCwgY29uc3RydWN0b3JOZWVkc0NyZWF0ZWRCeVBhcnNlcgogaW5zIGludGVyZmFjZU5hbWU9SFRN
TE1vZEVsZW1lbnQKIGlzaW5kZXggaW50ZXJmYWNlTmFtZT1IVE1MSXNJbmRleEVsZW1lbnQsIGNv
bnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudAoga2JkIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78098</attachid>
            <date>2011-01-05 22:37:58 -0800</date>
            <delta_ts>2011-01-25 20:21:11 -0800</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-50442-20110106153756.patch</filename>
            <type>text/plain</type>
            <size>15153</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNWFiZDEzMzFiZmZjOTZhNTQ3NmJkYzY3OTAyMDBlZjRmYjI3YjZlLi44MjkxMTAz
YzQwNzM3ZGQzOGI2ZDMzMjc2NTk2NzkyYTg3ZGZiOTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTItMTMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJhZGlvIGJ1dHRvbiBncm91
cCBzdGF0ZSBpcyBub3QgcmVzdG9yZWQgY29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDQ0MgorCisgICAgICAgICogZmFzdC9mb3Jtcy9z
dGF0ZS1yZXN0b3JlLXJhZGlvLWdyb3VwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXJhZGlvLWdyb3VwLmh0bWw6IEFkZGVkLgorCiAyMDEx
LTAxLTA1ICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFtQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9zdGF0ZS1yZXN0b3JlLXJhZGlvLWdyb3VwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS1yYWRpby1ncm91cC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGRkYTAyYTBkNDU1NmYzYjRhMmEzMjAxNmFhMmYzNTBmZjhiMWI1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS1yYWRpby1ncm91
cC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUZXN0IHRvIHJlc3RvcmUgZm9ybSB2YWx1
ZSBzdGF0ZXMgZm9yIGEgcmFkaW8gZ3JvdXAuCisKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImlucHV0MSIpLmNoZWNrZWQgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiaW5wdXQyIikuY2hlY2tlZCBpcyBmYWxzZQorCisgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtcmFkaW8tZ3JvdXAuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS1yYWRpby1ncm91cC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5
NzE1ZWNkMWFkMWU0MGMyOWU0OWQzMjZjNjEyYWVmNmUwZTRkMWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtcmFkaW8tZ3JvdXAuaHRtbApA
QCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5U
ZXN0IHRvIHJlc3RvcmUgZm9ybSB2YWx1ZSBzdGF0ZXMgZm9yIGEgcmFkaW8gZ3JvdXAuPC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxpbnB1dCBpZD1lbXB0eU9uRmlyc3RWaXNpdD4K
KzxkaXYgaWQ9cGFyZW50PgorPGZvcm0gYWN0aW9uPSJkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pmhp
c3RvcnkuYmFjaygpJmx0Oy9zY3JpcHQ+IiBpZD1mb3JtMT4KKzxpbnB1dCBuYW1lPXVzZXIgdHlw
ZT1yYWRpbyBpZD1pbnB1dDE+Cis8aW5wdXQgY2hlY2tlZCBuYW1lPXVzZXIgdHlwZT1yYWRpbyBp
ZD1pbnB1dDI+Cis8L2Zvcm0+Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICB2YXIgcGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcmVudCcp
OworICAgIHZhciBzdGF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbXB0eU9uRmlyc3RW
aXNpdCcpOworICAgIGlmICghc3RhdGUudmFsdWUpIHsKKyAgICAgICAgLy8gRmlyc3QgdmlzaXQu
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHN0YXRlLnZhbHVl
ID0gJ3Zpc2l0ZWQnOworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dDEn
KS5jaGVja2VkID0gdHJ1ZTsKKyAgICAgICAgLy8gU3VibWl0IGZvcm0gaW4gYSB0aW1lb3V0IHRv
IG1ha2Ugc3VyZSB0aGF0IHdlIGNyZWF0ZSBhIG5ldyBiYWNrL2ZvcndhcmQgbGlzdCBpdGVtLgor
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdm
b3JtMScpLnN1Ym1pdCgpO30sIDApOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFNlY29uZCB2
aXNpdC4KKyAgICAgICAgc2hvdWxkQmVUcnVlKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5w
dXQxIikuY2hlY2tlZCcpOworICAgICAgICBzaG91bGRCZUZhbHNlKCdkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiaW5wdXQyIikuY2hlY2tlZCcpOworICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NmYyNzAwMTgzODI3MjBlMDNhMDJi
M2I3NGJjYjlhOTBmZDIxNTgzLi45YjgwOTA3Mjk4YzU3NjE2NjNhMzc0M2ViMjE5MzA1YTAzMTc4
MWM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU0IEBACisyMDEwLTEyLTEzICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSYWRpbyBidXR0b24gZ3JvdXAgc3RhdGUgaXMgbm90IHJlc3RvcmVkIGNvcnJlY3RseQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0NDIKKworICAg
ICAgICBGaXhlcyBhIGJ1ZyB0aGF0IHJhZGlvIGJ1dHRvbiBzdGF0ZXMgYXJlIG5vdCByZXN0b3Jl
ZCBjb3JyZWN0bHkgaW4KKyAgICAgICAgYSBjYXNlIHRoYXQgbm9uLWZpcnN0IHJhZGlvIGJ1dHRv
biBpbiBhIGdyb3VwIGlzIGNoZWNrZWQuCisKKyAgICAgICAgSWYgImNoZWNrZWQiIGF0dHJpYnV0
ZSBpcyBwcmVzZW50LCB0aGUgcmFkaW8gYnV0dG9uIGlzIGNoZWNrZWQgYW5kCisgICAgICAgIG90
aGVyIHJhZGlvIGJ1dHRvbnMgaW4gdGhlIGdyb3VwIGFyZSB1bmNoZWNrZWQuIFRoaXMgYmVoYXZp
b3IKKyAgICAgICAgZGlzdHVyYnMgZm9ybSBzdGF0ZSByZXN0b3JpbmcuIFRoaXMgcGF0Y2ggY2hh
bmdlcyB0aGlzIGJlaGF2aW9yIHNvCisgICAgICAgIHRoYXQgdGhlICJjaGVja2VkIiBhdHRyaWJ1
dGUgaGFuZGxpbmcgaXMgZGVsYXllZCBhZnRlciBmb3JtIHN0YXRlCisgICAgICAgIHJlc3Rvcmlu
Zy4KKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtcmFkaW8tZ3JvdXAu
aHRtbAorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAg
ICBNYWtlIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIHByb3RlY3RlZCBzbyB0aGF0IEhUTUxJbnB1
RWxlbWVudCBjYW4gY2FsbCBpdC4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudCk6
CisgICAgICAgICAtIEFkZCBjcmVhdGVkQnlQYXJzZXIgcGFyYW1ldGVyLgorICAgICAgICAgLSBJ
bml0aWFsaXplIG1fc3RhdGVSZXN0b3JlZCBhbmQgbV9wYXJzaW5nSW5Qcm9ncmVzcy4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZSk6IFN5bmMgd2l0aCB0aGUgY29u
c3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpyZXN0b3JlRm9y
bUNvbnRyb2xTdGF0ZSk6CisgICAgICAgICBTZXQgbV9zdGF0ZVJlc3RvcmVkIGluIG9yZGVyIHRv
IHJlZmVyIGl0IGluIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAgRG9uJ3Qg
Y2FsbCBzZXRDaGVja2VkKCkgZHVyaW5nIHBhcnNpbmcuIE1vdmUgc2V0TmVlZHNWYWxpZGl0eUNo
ZWNrKCkKKyAgICAgICAgIHRvIHNldENoZWNrZWQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJ
bnB1dEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6CisgICAgICAgICBDYWxsIHNldENo
ZWNrZWQoKSBpZiBmb3JtIHN0YXRlIGlzIG5vdCByZXN0b3JlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQpOgorICAgICAgICAgTW92ZSBzZXROZWVkc1Zh
bGlkaXR5Q2hlY2soKSBmcm9tIHBhcnNlTWFwcGVkQXR0cmlidXRlKCkgYmVjYXVzZQorICAgICAg
ICAgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgYWxzbyBuZWVkcyB0byBjYWxsIHNldE5lZWRzVmFs
aWRpdHlDaGVjaygpLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAg
ICAgLSBSZW1vdmUgdGhlIGRlZmF1bHQgdmFsdWUgb2YgSFRNTEZvcm1FbGVtZW50KiBvZiB0aGUg
SFRNTElucHV0RWxlbWVudAorICAgICAgICAgICBjb25zdHJ1Y3RvciwgYW5kIGFkZCBjcmVhdGVk
QnlQYXJzZXIgcGFyYW1ldGVyLgorICAgICAgICAgLSBJbnRyb2R1Y2UgbV9wYXJzaW5nSW5Qcm9n
cmVzcyBhbmQgbV9zdGF0ZVJlc3RvcmVkLgorICAgICAgICAqIGh0bWwvSFRNTElzSW5kZXhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJc0luZGV4RWxlbWVudDo6SFRNTElzSW5k
ZXhFbGVtZW50KToKKyAgICAgICAgIFN5bmMgd2l0aCB0aGUgSFRNTElucHV0RWxlbWVudCBjb25z
dHJ1Y3RvciBjaGFuZ2UuCisgICAgICAgICogaHRtbC9IVE1MVGFnTmFtZXMuaW46IEFkZCBjb25z
dHJ1Y3Rvck5lZWRzQ3JlYXRlZEJ5UGFyc2VyIGZsYWcuCisgICAgICAgICogcmVuZGVyaW5nL01l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbElu
cHV0RWxlbWVudDo6TWVkaWFDb250cm9sSW5wdXRFbGVtZW50KToKKyAgICAgICAgIFN5bmMgd2l0
aCB0aGUgSFRNTElucHV0RWxlbWVudCBjb25zdHJ1Y3RvciBjaGFuZ2UuCisgICAgICAgICogcmVu
ZGVyaW5nL1NoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5wdXRF
bGVtZW50OjpTaGFkb3dJbnB1dEVsZW1lbnQpOiBkaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcv
U2hhZG93RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RWxlbWVudDo6U2hhZG93
RWxlbWVudCk6IGRpdHRvLgorCiAyMDExLTAxLTA1ICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFt
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggZTVkNzQxYmFmMTIxOTY4MTE2MGExODEx
YzcwNzc5YmFhZTQzYjAxZC4uOTc1NDdlNzRhNmJjZTIyN2UwNDJiNmM0ZTBkMWU2MWMzOTM5Yjlj
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xNjcsMTQgKzE2Nywx
MyBAQCBwcm90ZWN0ZWQ6CiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwog
CiAgICAgdmlydHVhbCBib29sIGF1dG9Db21wbGV0ZSgpIGNvbnN0OwotCisgICAgdmlydHVhbCB2
b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsK
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29u
dHJvbFN0YXRlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJl
bigpOwogfTsKIAogLy8gRklYTUU6IEdpdmUgdGhpcyBjbGFzcyBpdHMgb3duIGhlYWRlciBmaWxl
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDAwNzYzOWIyMWFkZGUwMzgwNTBiNzI1
MDJiMjA0YTEwMTdiMWQ0NGUuLjZmZTk5Njc1M2FjZWM0NTgxZDg3ZDA1MmJkNzc3YzYwNjE0NTgy
N2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAogY29uc3QgaW50IG1heFNhdmVkUmVzdWx0cyA9IDI1NjsK
IAotSFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKK0hU
TUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyKQogICAgIDogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQsIGZvcm0pCiAgICAgLCBtX21heFJlc3VsdHMoLTEpCiAgICAgLCBtX2lzQ2hlY2tl
ZChmYWxzZSkKQEAgLTcxLDE0ICs3MSwxNiBAQCBIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bQogICAg
ICwgbV9pc0FjdGl2YXRlZFN1Ym1pdChmYWxzZSkKICAgICAsIG1fYXV0b2NvbXBsZXRlKFVuaW5p
dGlhbGl6ZWQpCiAgICAgLCBtX2lzQXV0b2ZpbGxlZChmYWxzZSkKKyAgICAsIG1fc3RhdGVSZXN0
b3JlZChmYWxzZSkKKyAgICAsIG1fcGFyc2luZ0luUHJvZ3Jlc3MoY3JlYXRlZEJ5UGFyc2VyKQog
ICAgICwgbV9pbnB1dFR5cGUoSW5wdXRUeXBlOjpjcmVhdGVUZXh0KHRoaXMpKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKGlucHV0VGFnKSB8fCBoYXNUYWdOYW1lKGlzaW5kZXhUYWcpKTsKIH0K
IAotUGFzc1JlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9y
bUVsZW1lbnQqIGZvcm0pCitQYXNzUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IEhUTUxJbnB1dEVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSW5wdXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
LCBmb3JtKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSW5wdXRFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIpKTsKIH0KIAogSFRNTElucHV0RWxl
bWVudDo6fkhUTUxJbnB1dEVsZW1lbnQoKQpAQCAtNTAzLDYgKzUwNSw3IEBAIGJvb2wgSFRNTElu
cHV0RWxlbWVudDo6c2F2ZUZvcm1Db250cm9sU3RhdGUoU3RyaW5nJiByZXN1bHQpIGNvbnN0CiB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IFN0cmlu
ZyYgc3RhdGUpCiB7CiAgICAgbV9pbnB1dFR5cGUtPnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKHN0
YXRlKTsKKyAgICBtX3N0YXRlUmVzdG9yZWQgPSB0cnVlOwogfQogCiBib29sIEhUTUxJbnB1dEVs
ZW1lbnQ6OmNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3QKQEAgLTU3MSwxMSArNTc0LDE0IEBAIHZv
aWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRy
KQogICAgICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZhbHNlKTsKICAg
ICAgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gY2hlY2tlZEF0dHIpIHsKLSAgICAgICAgaWYgKG1fcmVmbGVjdHNDaGVja2VkQXR0cmli
dXRlKSB7CisgICAgICAgIC8vIEFub3RoZXIgcmFkaW8gYnV0dG9uIGluIHRoZSBzYW1lIGdyb3Vw
IG1pZ2h0IGJlIGNoZWNrZWQgYnkgc3RhdGUKKyAgICAgICAgLy8gcmVzdG9yZS4gV2Ugc2hvdWxk
bid0IGNhbGwgc2V0Q2hlY2tlZCgpIGV2ZW4gaWYgdGhpcyBoYXMgdGhlIGNoZWNrZWQKKyAgICAg
ICAgLy8gYXR0cmlidXRlLiBTbywgZGVsYXkgdGhlIHNldENoZWNrZWQoKSBjYWxsIHVudGlsCisg
ICAgICAgIC8vIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIGlzIGNhbGxlZCBpZiBwYXJzaW5nIGlz
IGluIHByb2dyZXNzLgorICAgICAgICBpZiAoIW1fcGFyc2luZ0luUHJvZ3Jlc3MgJiYgbV9yZWZs
ZWN0c0NoZWNrZWRBdHRyaWJ1dGUpIHsKICAgICAgICAgICAgIHNldENoZWNrZWQoIWF0dHItPmlz
TnVsbCgpKTsKICAgICAgICAgICAgIG1fcmVmbGVjdHNDaGVja2VkQXR0cmlidXRlID0gdHJ1ZTsK
ICAgICAgICAgfQotICAgICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKICAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBtYXhsZW5ndGhBdHRyKSB7CiAgICAgICAgIElucHV0RWxlbWVu
dDo6cGFyc2VNYXhMZW5ndGhBdHRyaWJ1dGUobV9kYXRhLCB0aGlzLCB0aGlzLCBhdHRyKTsKICAg
ICAgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CkBAIC02MzksNiArNjQ1LDE4IEBAIHZvaWQg
SFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQog
ICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
YXR0cik7CiB9CiAKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCkKK3sKKyAgICBtX3BhcnNpbmdJblByb2dyZXNzID0gZmFsc2U7CisgICAgSFRNTEZvcm1Db250
cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CisgICAgaWYgKCFt
X3N0YXRlUmVzdG9yZWQpIHsKKyAgICAgICAgYm9vbCBjaGVja2VkID0gaGFzQXR0cmlidXRlKGNo
ZWNrZWRBdHRyKTsKKyAgICAgICAgaWYgKGNoZWNrZWQpCisgICAgICAgICAgICBzZXRDaGVja2Vk
KGNoZWNrZWQpOworICAgICAgICBtX3JlZmxlY3RzQ2hlY2tlZEF0dHJpYnV0ZSA9IHRydWU7Cisg
ICAgfQorfQorCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUqIHN0eWxlKQogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+cmVuZGVyZXJJc05lZWRl
ZCgpICYmIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OnJlbmRlcmVySXNOZWVkZWQo
c3R5bGUpOwpAQCAtNzM3LDYgKzc1NSw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0Q2hl
Y2tlZChib29sIG5vd0NoZWNrZWQsIGJvb2wgc2VuZENoYW5nZUV2ZW50KQogICAgIHNldE5lZWRz
U3R5bGVSZWNhbGMoKTsKIAogICAgIHVwZGF0ZUNoZWNrZWRSYWRpb0J1dHRvbnMoKTsKKyAgICBz
ZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKIAogICAgIC8vIElkZWFsbHkgd2UnZCBkbyB0aGlzIGZy
b20gdGhlIHJlbmRlciB0cmVlIChtYXRjaGluZwogICAgIC8vIFJlbmRlclRleHRWaWV3KSwgYnV0
IGl0J3Mgbm90IHBvc3NpYmxlIHRvIGRvIGl0IGF0IHRoZSBtb21lbnQKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCmluZGV4IGViMzBkZTA4OWNjMDI2NWY3ZmYwNTcxYWVhODdjZDM2OGE5ZjM5YTIuLjYz
MDUwMTMwMTg5MTJhYmEwYTFhYjMwNjllNzZkOWY5NjJiNmM1YWMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBLVVJMOwogCiBjbGFzcyBIVE1MSW5wdXRF
bGVtZW50IDogcHVibGljIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LCBwdWJsaWMgSW5wdXRF
bGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSW5wdXRFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50
Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3JlYXRl
ZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MSW5wdXRFbGVtZW50KCk7CiAKICAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdHNwZWVjaGNoYW5nZSk7CkBAIC0xOTgs
NyArMTk4LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQ2hlY2tlZFJhZGlvQnV0dG9ucygp
OwogICAgIAogcHJvdGVjdGVkOgotICAgIEhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50KiA9IDApOworICAgIEhUTUxJbnB1dEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kiwg
Ym9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqKTsKIApAQCAtMjM5LDYgKzIzOSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVk
QXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5n
Q2hpbGRyZW4oKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGll
cyhjb25zdCBFbGVtZW50KiBzb3VyY2UpOwogCkBAIC0zMTEsNiArMzEyLDggQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoREFUQUxJU1QpCiAgICAgYm9vbCBtX2hhc05vbkVtcHR5TGlzdCA6IDE7CiAj
ZW5kaWYKKyAgICBib29sIG1fc3RhdGVSZXN0b3JlZCA6IDE7CisgICAgYm9vbCBtX3BhcnNpbmdJ
blByb2dyZXNzIDogMTsKICAgICBPd25QdHI8SW5wdXRUeXBlPiBtX2lucHV0VHlwZTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSXNJbmRleEVsZW1lbnQuY3BwIGIvV2ViQ29y
ZS9odG1sL0hUTUxJc0luZGV4RWxlbWVudC5jcHAKaW5kZXggYTIzYTM1M2VjMzAxZWQzYjVkYzY2
NGI0OWVjMDI3ODJmOGNjMjNhNi4uZjg2NTc5MDA5OWQ4NGE3ZTMxODU0N2NiNWNlOTljODUwZWFj
OGJhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJc0luZGV4RWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxJc0luZGV4RWxlbWVudC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogSFRNTElz
SW5kZXhFbGVtZW50OjpIVE1MSXNJbmRleEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCi0gICAgOiBI
VE1MSW5wdXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKQorICAgIDogSFRNTElucHV0
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSwgZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoaXNpbmRleFRhZykpOwogICAgIHNldERlZmF1bHROYW1lKGlzaW5kZXhUYWcubG9j
YWxOYW1lKCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbiBiL1dl
YkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4KaW5kZXggNDE1M2Y1Y2I3NGI5NjM0ZWI4MDA5YmVk
MTcwOWU3M2MwM2RiMWM3Zi4uMTU0NmI0OWNmYTI2NWNiNzU4MmEwNzM3NjRhZTYxYTdlYWRhM2M4
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTFRhZ05hbWVzLmluCkBAIC02Nyw3ICs2Nyw3IEBAIGkgaW50ZXJmYWNlTmFtZT1I
VE1MRWxlbWVudAogaWZyYW1lIGludGVyZmFjZU5hbWU9SFRNTElGcmFtZUVsZW1lbnQKIGltYWdl
IG1hcFRvVGFnTmFtZT1pbWcKIGltZyBpbnRlcmZhY2VOYW1lPUhUTUxJbWFnZUVsZW1lbnQsIGNv
bnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudAotaW5wdXQgY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVt
ZW50CitpbnB1dCBjb25zdHJ1Y3Rvck5lZWRzRm9ybUVsZW1lbnQsIGNvbnN0cnVjdG9yTmVlZHND
cmVhdGVkQnlQYXJzZXIKIGlucyBpbnRlcmZhY2VOYW1lPUhUTUxNb2RFbGVtZW50CiBpc2luZGV4
IGludGVyZmFjZU5hbWU9SFRNTElzSW5kZXhFbGVtZW50LCBjb25zdHJ1Y3Rvck5lZWRzRm9ybUVs
ZW1lbnQKIGtiZCBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggOGRmZGM4MTYzODY0YjAzYzFlZTgxMWMxNzE2
NDgyYTRjZTliNGY1ZS4uMDE3YmFiNzRiZWI4YjI4NzQxZGRkMTMyZTc2NjFmY2Y3ZDkzMTdhMCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtMzUzLDcg
KzM1Myw3IEBAIGJvb2wgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogICAgIAogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpNZWRpYUNvbnRyb2xJbnB1dEVs
ZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBQc2V1ZG9JZCBwc2V1ZG8pCi0g
ICAgOiBIVE1MSW5wdXRFbGVtZW50KGlucHV0VGFnLCBtZWRpYUVsZW1lbnQtPmRvY3VtZW50KCkp
CisgICAgOiBIVE1MSW5wdXRFbGVtZW50KGlucHV0VGFnLCBtZWRpYUVsZW1lbnQtPmRvY3VtZW50
KCksIDAsIGZhbHNlKQogICAgICwgbV9tZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KQogICAgICwg
bV9wc2V1ZG9TdHlsZUlkKHBzZXVkbykKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1NoYWRvd0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvU2hhZG93RWxlbWVudC5jcHAK
aW5kZXggZTFiMjQ3Y2RkOWFjNDZlOGRiMDUxNWQwNzZjMDNhNTExNjY2Y2E3ZC4uNWIxYTk2MmU5
Yzc5NzQ4NWYxMzBiN2U1MTlhNjgzMGM2MjE0MWQ3NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvU2hhZG93RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvU2hhZG93RWxl
bWVudC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBQYXNzUmVmUHRyPFNoYWRvd0lucHV0RWxlbWVu
dD4gU2hhZG93SW5wdXRFbGVtZW50OjpjcmVhdGUoSFRNTEVsZW1lbnQqIHNoYWRvd1BhcgogfQog
CiBTaGFkb3dJbnB1dEVsZW1lbnQ6OlNoYWRvd0lucHV0RWxlbWVudChIVE1MRWxlbWVudCogc2hh
ZG93UGFyZW50KQotICAgIDogU2hhZG93RWxlbWVudDxIVE1MSW5wdXRFbGVtZW50PihpbnB1dFRh
Zywgc2hhZG93UGFyZW50KQorICAgIDogU2hhZG93RWxlbWVudDxIVE1MSW5wdXRFbGVtZW50Pihp
bnB1dFRhZywgc2hhZG93UGFyZW50LCAwLCBmYWxzZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvU2hhZG93RWxlbWVudC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvU2hhZG93
RWxlbWVudC5oCmluZGV4IDJjMWE2OWVmYjk1YTUzZDY3YzkzMzBiNTk4ZmQzZmI5ZGRlMTlmOGUu
LjMxOTM1YjMzNTUxZjA5ZTFhNzM2YjNlNzIxYWQwOTJhNjIxYjI2ZDcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1NoYWRvd0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9T
aGFkb3dFbGVtZW50LmgKQEAgLTQ0LDYgKzQ0LDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAgQmFz
ZUVsZW1lbnQ6OnNldFNoYWRvd0hvc3Qoc2hhZG93UGFyZW50KTsKICAgICB9CiAKKyAgICBTaGFk
b3dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIEhUTUxFbGVtZW50KiBzaGFkb3dQ
YXJlbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCisgICAg
ICAgIDogQmFzZUVsZW1lbnQobmFtZSwgc2hhZG93UGFyZW50LT5kb2N1bWVudCgpLCBmb3JtLCBj
cmVhdGVkQnlQYXJzZXIpCisgICAgICAgICwgbV9zaGFkb3dQYXJlbnQoc2hhZG93UGFyZW50KQor
ICAgIHsKKyAgICAgICAgQmFzZUVsZW1lbnQ6OnNldFNoYWRvd0hvc3Qoc2hhZG93UGFyZW50KTsK
KyAgICB9CisKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>