<?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>40084</bug_id>
          
          <creation_ts>2010-06-02 14:36:11 -0700</creation_ts>
          <short_desc>Introduce FormSubmission, the structure representing a form submission.</short_desc>
          <delta_ts>2010-06-20 14:00:49 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>39430</dependson>
          <blocked>40137</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>233455</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-02 14:36:11 -0700</bug_when>
    <thetext>Introduce FormSubmission, the structure representing a form submission.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233457</commentid>
    <comment_count>1</comment_count>
      <attachid>57705</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-02 14:42:41 -0700</bug_when>
    <thetext>Created attachment 57705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233646</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-03 00:25:15 -0700</bug_when>
    <thetext>Did you mean to mark this for review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233750</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-03 07:22:49 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Did you mean to mark this for review?

Not yet, it depends on bug 39430 to land first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238109</commentid>
    <comment_count>4</comment_count>
      <attachid>58717</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-14 15:54:45 -0700</bug_when>
    <thetext>Created attachment 58717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238111</commentid>
    <comment_count>5</comment_count>
      <attachid>57705</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-14 15:56:03 -0700</bug_when>
    <thetext>Comment on attachment 57705
Patch

Whoops, webkit-patch upload for some reason didn&apos;t like the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238117</commentid>
    <comment_count>6</comment_count>
      <attachid>58721</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-14 15:57:53 -0700</bug_when>
    <thetext>Created attachment 58721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238120</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-14 16:02:50 -0700</bug_when>
    <thetext>Attachment 58717 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3281139</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238122</commentid>
    <comment_count>8</comment_count>
      <attachid>58721</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-14 16:06:08 -0700</bug_when>
    <thetext>Comment on attachment 58721
Patch

Argh. More merge untangling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238123</commentid>
    <comment_count>9</comment_count>
      <attachid>58723</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-14 16:09:47 -0700</bug_when>
    <thetext>Created attachment 58723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238175</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-14 17:59:07 -0700</bug_when>
    <thetext>Attachment 58723 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3288158</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238197</commentid>
    <comment_count>11</comment_count>
      <attachid>58723</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-14 19:03:02 -0700</bug_when>
    <thetext>Comment on attachment 58723
Patch

:( I&apos;ll figure out what&apos;s wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238554</commentid>
    <comment_count>12</comment_count>
      <attachid>58823</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-15 14:51:50 -0700</bug_when>
    <thetext>Created attachment 58823
Actually working patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238555</commentid>
    <comment_count>13</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-15 14:53:40 -0700</bug_when>
    <thetext>This now works and doesn&apos;t regress anything. Chromium fails are because the EWS doesn&apos;t seem to refresh the project after applying the patch. Please take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238585</commentid>
    <comment_count>14</comment_count>
      <attachid>58823</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-15 15:31:35 -0700</bug_when>
    <thetext>Comment on attachment 58823
Actually working patch

&gt;      for (unsigned i = 0; i &lt; m_associatedElements.size(); ++i) {
&gt;          HTMLFormControlElement* control = m_associatedElements[i];
&gt;          if (!control-&gt;disabled())
&gt;              control-&gt;appendFormData(*domFormData, m_formDataBuilder.isMultiPartForm());
&gt; +        if (control-&gt;hasLocalName(inputTag)) {
&gt; +            HTMLInputElement* input = static_cast&lt;HTMLInputElement*&gt;(control);
&gt; +            if (input-&gt;isTextField()) {
&gt; +                formValues.append(pair&lt;String, String&gt;(input-&gt;name(), input-&gt;value()));
&gt; +                if (input-&gt;isSearchField())
&gt; +                    input-&gt;addSearchResult();
&gt; +            }
&gt; +        }
&gt;      }

This redundancy between form data and form values is so bizarre. I can&apos;t believe we have it. And for the form data we have a nice abstraction and virtual functions, but for the form values, none at all! We need to fix that.

And the call to addSearchResult here is so random too! Anyway, not your fault, but nutty.

&gt; +    FormSubmission::Method method = m_formDataBuilder.isPostMethod() ? FormSubmission::PostMethod : FormSubmission::GetMethod;
&gt; +    return FormSubmission::create(method, m_url, m_target, m_formDataBuilder.encodingType(), FormState::create(this, formValues, document()-&gt;frame(), trigger), formData.release(), boundary, lockHistory, event);

Even I, famous for long lines, would be tempted to break this into multiple lines. Maybe put the FormState into a local variable.

It occurs to me that FormSubmission, FormData, and FormState are all too similar. Too bad, but might be worth thinking about. Do we need all three? Are they all easy to explain?

&gt; +FormSubmission::FormSubmission(Method method, const String&amp; action, const String&amp; target, const String&amp; contentType, PassRefPtr&lt;FormState&gt; state, PassRefPtr&lt;FormData&gt; data, const String&amp; boundary, bool lockHistory, PassRefPtr&lt;Event&gt; event)

I suggest marking this inline since it&apos;s called only in one place.

&gt; +{
&gt; +}
&gt; +
&gt; +
&gt; +PassRefPtr&lt;FormSubmission&gt; FormSubmission::create(Method method, const String&amp; action, const String&amp; target, const String&amp; contentType, PassRefPtr&lt;FormState&gt; state, PassRefPtr&lt;FormData&gt; data, const String&amp; boundary, bool lockHistory, PassRefPtr&lt;Event&gt; event)

Extra blank line here.

&gt; +class FormSubmission : public RefCounted&lt;FormSubmission&gt; {

Do we really need a reference counted object for this, and a class? Why not just use a struct, and pass const FormSubmission&amp; to the function that takes it? I&apos;m not sure that a class adds enough value here.

&gt; +    enum Method {
&gt; +        GetMethod,
&gt; +        PostMethod
&gt; +    };

I’d put this on a single line instead of breaking it across multiple lines.

&gt; +    String action() const { return m_action; }
&gt; +    String target() const { return m_target; }
&gt; +    String contentType() const { return m_contentType; }

&gt; +    String boundary() const { return m_boundary; }

More efficient to return const String&amp; from functions like these, and very little downside to doing so.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238594</commentid>
    <comment_count>15</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-15 15:52:39 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 58823 [details])
&gt; &gt;      for (unsigned i = 0; i &lt; m_associatedElements.size(); ++i) {
&gt; &gt;          HTMLFormControlElement* control = m_associatedElements[i];
&gt; &gt;          if (!control-&gt;disabled())
&gt; &gt;              control-&gt;appendFormData(*domFormData, m_formDataBuilder.isMultiPartForm());
&gt; &gt; +        if (control-&gt;hasLocalName(inputTag)) {
&gt; &gt; +            HTMLInputElement* input = static_cast&lt;HTMLInputElement*&gt;(control);
&gt; &gt; +            if (input-&gt;isTextField()) {
&gt; &gt; +                formValues.append(pair&lt;String, String&gt;(input-&gt;name(), input-&gt;value()));
&gt; &gt; +                if (input-&gt;isSearchField())
&gt; &gt; +                    input-&gt;addSearchResult();
&gt; &gt; +            }
&gt; &gt; +        }
&gt; &gt;      }
&gt; 
&gt; This redundancy between form data and form values is so bizarre. I can&apos;t believe we have it. And for the form data we have a nice abstraction and virtual functions, but for the form values, none at all! We need to fix that.

I agree. That&apos;s my goal.

&gt; And the call to addSearchResult here is so random too! Anyway, not your fault, but nutty.
&gt; 
&gt; &gt; +    FormSubmission::Method method = m_formDataBuilder.isPostMethod() ? FormSubmission::PostMethod : FormSubmission::GetMethod;
&gt; &gt; +    return FormSubmission::create(method, m_url, m_target, m_formDataBuilder.encodingType(), FormState::create(this, formValues, document()-&gt;frame(), trigger), formData.release(), boundary, lockHistory, event);
&gt; 
&gt; Even I, famous for long lines, would be tempted to break this into multiple lines. Maybe put the FormState into a local variable.

Sounds good.

&gt; 
&gt; It occurs to me that FormSubmission, FormData, and FormState are all too similar. Too bad, but might be worth thinking about. Do we need all three? Are they all easy to explain?

Out of the three, I want FormState to go away. It already name-conflicts with a completely separate concept of restoring form state (see Document::formElementsWithState, et al.).

&gt; 
&gt; &gt; +FormSubmission::FormSubmission(Method method, const String&amp; action, const String&amp; target, const String&amp; contentType, PassRefPtr&lt;FormState&gt; state, PassRefPtr&lt;FormData&gt; data, const String&amp; boundary, bool lockHistory, PassRefPtr&lt;Event&gt; event)
&gt; 
&gt; I suggest marking this inline since it&apos;s called only in one place.

ok.

&gt; &gt; +{
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +
&gt; &gt; +PassRefPtr&lt;FormSubmission&gt; FormSubmission::create(Method method, const String&amp; action, const String&amp; target, const String&amp; contentType, PassRefPtr&lt;FormState&gt; state, PassRefPtr&lt;FormData&gt; data, const String&amp; boundary, bool lockHistory, PassRefPtr&lt;Event&gt; event)
&gt; 
&gt; Extra blank line here.
&gt; 
&gt; &gt; +class FormSubmission : public RefCounted&lt;FormSubmission&gt; {
&gt; 
&gt; Do we really need a reference counted object for this, and a class? Why not just use a struct, and pass const FormSubmission&amp; to the function that takes it? I&apos;m not sure that a class adds enough value here.

I&apos;ve been back and forth on it. So far, I don&apos;t see the need for it to be ref-counted -- the ownership flows forward-only, so yes, simpler the better.

&gt; &gt; +    enum Method {
&gt; &gt; +        GetMethod,
&gt; &gt; +        PostMethod
&gt; &gt; +    };
&gt; 
&gt; I’d put this on a single line instead of breaking it across multiple lines.

ok.

&gt; 
&gt; &gt; +    String action() const { return m_action; }
&gt; &gt; +    String target() const { return m_target; }
&gt; &gt; +    String contentType() const { return m_contentType; }
&gt; 
&gt; &gt; +    String boundary() const { return m_boundary; }
&gt; 
&gt; More efficient to return const String&amp; from functions like these, and very little downside to doing so.

ok.

&gt; 
&gt; r=me

Would it be ok for me to land this as-is and address the issues in a separate patch? I have two patches sitting on top of this and my last round of merge resolution was a b*tch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238937</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-16 10:12:54 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Would it be ok for me to land this as-is and address the issues in a separate patch? I have two patches sitting on top of this and my last round of merge resolution was a b*tch :)

Yes, it’s OK with me. If it wasn’t OK I would have said review-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240526</commentid>
    <comment_count>17</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-20 14:00:49 -0700</bug_when>
    <thetext>Committed r61511: &lt;http://trac.webkit.org/changeset/61511&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57705</attachid>
            <date>2010-06-02 14:42:41 -0700</date>
            <delta_ts>2010-06-14 15:56:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40084-20100602144240.patch</filename>
            <type>text/plain</type>
            <size>23513</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzIyYjE1MDA2ZDFhNGY5Yzk1ZDk1N2MyODg5Y2M5MDI0MTFlOWQ3ZC4uNzZjYTJjZDdhNmU5MGQ2
MGZmZmNjMTc3YmE3MWQ0NmI5YjU1YTlmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0wNi0wMiAgRGlt
aXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBGb3JtU3VibWlzc2lvbiwg
dGhlIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgYSBmb3JtIHN1Ym1pc3Npb24uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDA4NAorCisgICAgICAgIE5v
IGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZGVkIEZvcm1TdWJtaXNzaW9uLmgvY3BwLgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5wcm86IERpdHRv
LgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAq
IGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxl
bWVudDo6cHJlcGFyZUZvcm1TdWJtaXNzaW9uKTogUmVuYW1lZCBwcmVwYXJlRm9ybURhdGEgdG8g
cHJlcGFyZUZvcm1TdWJtaXNzaW9uLAorICAgICAgICAgICAgYWRkZWQgY29kZSBmb3IgcG9wdWxh
dGluZyBhIEZvcm1TdWJtaXNzaW9uIGluc3RhbmNlLCBtb3ZlZCB0aGUgbG9vcCBvZiBhY2N1bXVs
YXRpbmcgdGV4dCBpbnB1dAorICAgICAgICAgICAgdmFsdWVzIGludG8gdGhpcyBmdW5jdGlvbnMg
KGl0IGJlbG9uZ3MgaGVyZSBsb2dpY2FsbHkpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1F
bGVtZW50OjpzdWJtaXQpOiBNb2RpZmllZCB0byB1c2UgcHJlcGFyZUZvcm1TdWJtaXNzaW9uLgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmg6
IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybSk6IE1vZGlmaWVkIHRvIHVzZSBGb3JtU3VibWlz
c2lvbi4gU3RvcHBlZCBwbHVtYmluZyBmdXJ0aGVyIHRvIGtlZXAKKyAgICAgICAgICAgIHRoZSBw
YXRjaCBzaXplIGRvd24uCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6IE1vZGlmaWVk
IHN1Ym1pdEZvcm0gc2lnbmF0dXJlLgorCiAyMDEwLTA2LTAxICBEaW1pdHJpIEdsYXprb3YgIDxk
Z2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQppbmRleCAwMTY3NjI4N2IxYmIyYzQzZmQwNTE3MTgzMDM5ODQyMWNiOTFlMjFhLi5k
NDllNjI4YmFmOTBhZjNhMWQ0OGE2ZTRmNzhjMjYwNGQ4OGEwYzM0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTEzNzgs
NiArMTM3OCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9sb2FkZXIvRlRQRGly
ZWN0b3J5UGFyc2VyLmggXAogCVdlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5jcHAgXAogCVdlYkNv
cmUvbG9hZGVyL0Zvcm1TdGF0ZS5oIFwKKwlXZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5j
cHAgXAorCVdlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmggXAogCVdlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBcCiAJV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGM2NmEzMmJlNmRlNjcwNGNm
MTU5OGI0ZDg5MTAyZWZiM2I2MWZkZDIuLjEwYTU3OTI2ODM2M2EzZTIwODgzOTNlMjZhMmM4ZDY3
YmYyZDUxNWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0xNzg4LDYgKzE3ODgsOCBAQAogICAgICAgICAgICAgJ2xvYWRlci9G
VFBEaXJlY3RvcnlQYXJzZXIuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL0Zvcm1TdGF0ZS5jcHAn
LAogICAgICAgICAgICAgJ2xvYWRlci9Gb3JtU3RhdGUuaCcsCisgICAgICAgICAgICAnbG9hZGVy
L0Zvcm1TdWJtaXNzaW9uLmNwcCcsCisgICAgICAgICAgICAnbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9GcmFtZUxvYWRlci5jcHAnLAogICAgICAgICAgICAg
J2xvYWRlci9GcmFtZUxvYWRlci5oJywKICAgICAgICAgICAgICdsb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJD
b3JlLnBybwppbmRleCA4ZDI1YzhkYjZhOTA1MjIzNzE1OWM2MjU2YzI1MGM4MDhhYjk2NGVlLi5i
ZDg4NzIzMjE1OWU3NmIxYmZkYmY2YTM3NDE5NjEwYmVhZGFiZjIyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTczNiw2ICs3MzYs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBcCiAgICAgbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBcCiAgICAgbG9hZGVyL0Zvcm1TdGF0
ZS5jcHAgXAorICAgIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgXAogICAgIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHAgXAogICAgIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgXAogICAgIGxv
YWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggZjZmNDk2NmJhZDE2ZTkzNTRjNTE3MTc3NjQwZGMyY2E1ZmRmMDA0Mi4u
OTljNzNlZTQxMTFiODI5NzdhZTAxZmRjMGM2YmY2ZTRhOTYwNTUzNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yMTg5Nyw2ICsyMTg5NywxNCBAQAogCQkJCT4NCiAJ
CQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcRm9ybVN1
Ym1pc3Npb24uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cbG9hZGVyXEZvcm1TdWJtaXNzaW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcRnJhbWVMb2FkZXIuY3Bw
Ig0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNTg0NWU4ZDVkM2UyNzEwMjVhMjNiZjM5NjZkN2Y1ZDNjMDI3ZjBkYS4u
ZTRmNjMwZjQ5MDZiYWZhN2FlYjMyZDk2YTE5OGEzZWI1YjJiZDAxNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc3Nyw2ICs3NzcsOCBAQAogCQk0MTZF
NzVDQjBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFNzVDOTBFREY5MEM3MDAzNjBFMUQg
LyogU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCTQxNkU3NUNDMEVERjkwQzcwMDM2MEUxRCAv
KiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE2RTc1Q0EwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5j
cHAgKi87IH07CiAJCTQxNkY0NUYwMEVEN0IzMTEwMDgyMTVCNiAvKiBTY3JpcHRTdHJpbmcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkY0NUVGMEVE
N0IzMTEwMDgyMTVCNiAvKiBTY3JpcHRTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTg4NUI5MzExQjZGREE2MDAzMzgzQkIgLyogRm9y
bVN1Ym1pc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oICovOyB9Owor
CQk0MTg4NUI5NDExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4ODVCOTIxMUI2RkRBNjAw
MzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmNwcCAqLzsgfTsKIAkJNDE4Rjg4MDQwRkY5NTdBRTAw
ODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJh
Y3RXb3JrZXIuY3BwICovOyB9OwogCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUgLyogSlNBYnN0
cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsK
IAkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUEzRDU4QzEw
MUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLzsgfTsKQEAgLTYz
NDIsNiArNjM0NCw4IEBACiAJCTQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxs
RnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1l
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUNBMEVERjkwQzcwMDM2MEUx
RCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE2RjQ1RUYwRUQ3QjMxMTAwODIxNUI2IC8qIFNjcmlwdFN0cmluZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDE4ODVCOTExMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1TdWJtaXNzaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODg1QjkyMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3Vi
bWlzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtU3Vi
bWlzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOEY4ODAyMEZGOTU3
QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQWJzdHJhY3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MThGODgwMzBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Fic3RyYWN0V29ya2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTNENThDMTAxQzE1MkQwMDMxNkQwNyAvKiBE
ZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcDsgcGF0aCA9IHdvcmtlcnMvRGVkaWNhdGVk
V29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1Njc5LDYg
KzE1NjgzLDggQEAKIAkJCQlCMjU1OTkwRDBEMDBEOEI5MDBCQjgyNUMgLyogRW1wdHlDbGllbnRz
LmggKi8sCiAJCQkJNjU2RDM3MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5jcHAgKi8s
CiAJCQkJNjU2RDM3MjIwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5oICovLAorCQkJCTQx
ODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oICovLAorCQkJCTQxODg1
QjkyMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5jcHAgKi8sCiAJCQkJOTMyRTE2
MDgwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCAqLywKIAkJCQk2NTZEMzcyNDBB
REJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXIuaCAqLywKIAkJCQk2NTZEMzcyNjBBREJBNURF
MDBBNDU1NEQgLyogRnJhbWVMb2FkZXJDbGllbnQuaCAqLywKQEAgLTE3ODkyLDYgKzE3ODk4LDcg
QEAKIAkJCQlBODEzNkQzODA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTRDNzY0RTBDRTkyMzRFMDA3RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1N
YWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NkQzNzNBMEFEQkE1REUwMEE0NTU0RCAvKiBGb3Jt
U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxODg1QjkzMTFCNkZEQTYwMDMzODNCQiAvKiBG
b3JtU3VibWlzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NkQwOUFDNEQ2MzAwQTZB
QUI0IC8qIEZvdW5kYXRpb25FeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QkYwMjJGMDk3
NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2RDM3M0MwQURC
QTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTIwMjI0LDYg
KzIwMjMxLDcgQEAKIAkJCQlBODEzNkQzOTA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjRGMENFOTIzNEUwMDdFRjNDRCAvKiBGb3Jt
RGF0YVN0cmVhbU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTY1NkQzNzNCMEFEQkE1REUwMEE0
NTU0RCAvKiBGb3JtU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4ODVCOTQxMUI2RkRB
NjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QkYw
MjJFMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzJF
MTYwOTBBRjU3ODM0MDAyNUY0MDggLyogRnJhbWVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNjVCRjAyNDUwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDI3ZjdjOGZjN2Y1NDFmYzBjNDA4ODk3MTUx
MjRjODQxYzJiNDJjMTMuLjI4ZjQxZDY3YTM0YzAwMmEyNzYwNmRmMzkyODQxNTAwNzAyY2FjYjgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
Rm9ybURhdGEuaCIKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRlICJGb3JtU3Rh
dGUuaCIKKyNpbmNsdWRlICJGb3JtU3VibWlzc2lvbi5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpA
QCAtMjIxLDcgKzIyMiw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRv
VVJMKEtVUkwmIHVybCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0CiAgICAgdXJsLnNldFF1
ZXJ5KHF1ZXJ5KTsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gSFRNTEZvcm1FbGVtZW50Ojpw
cmVwYXJlRm9ybURhdGEoKQorUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gSFRNTEZvcm1FbGVt
ZW50OjpwcmVwYXJlRm9ybVN1Ym1pc3Npb24oRXZlbnQqIGV2ZW50LCBib29sIGxvY2tIaXN0b3J5
LCBGb3JtU3VibWlzc2lvblRyaWdnZXIgdHJpZ2dlcikKIHsKICAgICBpZiAobV9mb3JtRGF0YUJ1
aWxkZXIuaXNQb3N0TWV0aG9kKCkpIHsKICAgICAgICAgaWYgKG1fZm9ybURhdGFCdWlsZGVyLmlz
TXVsdGlQYXJ0Rm9ybSgpICYmIGlzTWFpbHRvRm9ybSgpKSB7CkBAIC0yMzMsMzAgKzIzNCw0MyBA
QCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVGb3JtRGF0YSgp
CiAgICAgICAgIG1fZm9ybURhdGFCdWlsZGVyLnNldElzTXVsdGlQYXJ0Rm9ybShmYWxzZSk7CiAK
ICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IGRvbUZvcm1EYXRhID0gRE9NRm9ybURhdGE6OmNyZWF0
ZShkYXRhRW5jb2RpbmcoKS5lbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9uKCkpOworICAgIFZlY3Rv
cjxwYWlyPFN0cmluZywgU3RyaW5nPiA+IGZvcm1WYWx1ZXM7CisKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
SFRNTEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCA9IG1fYXNzb2NpYXRlZEVsZW1lbnRzW2ld
OwogICAgICAgICBpZiAoIWNvbnRyb2wtPmRpc2FibGVkKCkpCiAgICAgICAgICAgICBjb250cm9s
LT5hcHBlbmRGb3JtRGF0YSgqZG9tRm9ybURhdGEsIG1fZm9ybURhdGFCdWlsZGVyLmlzTXVsdGlQ
YXJ0Rm9ybSgpKTsKKyAgICAgICAgaWYgKGNvbnRyb2wtPmhhc0xvY2FsTmFtZShpbnB1dFRhZykp
IHsKKyAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRN
TElucHV0RWxlbWVudCo+KGNvbnRyb2wpOworICAgICAgICAgICAgaWYgKGlucHV0LT5pc1RleHRG
aWVsZCgpKSB7CisgICAgICAgICAgICAgICAgZm9ybVZhbHVlcy5hcHBlbmQocGFpcjxTdHJpbmcs
IFN0cmluZz4oaW5wdXQtPm5hbWUoKSwgaW5wdXQtPnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoaW5wdXQtPmlzU2VhcmNoRmllbGQoKSkKKyAgICAgICAgICAgICAgICAgICAgaW5wdXQt
PmFkZFNlYXJjaFJlc3VsdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCi0g
ICAgUmVmUHRyPEZvcm1EYXRhPiByZXN1bHQ7CisgICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0
YTsKKyAgICBTdHJpbmcgYm91bmRhcnk7CiAKLSAgICBpZiAobV9mb3JtRGF0YUJ1aWxkZXIuaXNN
dWx0aVBhcnRGb3JtKCkpCi0gICAgICAgIHJlc3VsdCA9IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBh
cnQoKmRvbUZvcm1EYXRhLCBkb2N1bWVudCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgcmVzdWx0
ID0gRm9ybURhdGE6OmNyZWF0ZSgqZG9tRm9ybURhdGEpOworICAgIGlmIChtX2Zvcm1EYXRhQnVp
bGRlci5pc011bHRpUGFydEZvcm0oKSkgeworICAgICAgICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpj
cmVhdGVNdWx0aVBhcnQoKmRvbUZvcm1EYXRhLCBkb2N1bWVudCgpKTsKKyAgICAgICAgYm91bmRh
cnkgPSBmb3JtRGF0YS0+Ym91bmRhcnkoKS5kYXRhKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Zm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCpkb21Gb3JtRGF0YSk7CiAgICAgICAgIGlmICht
X2Zvcm1EYXRhQnVpbGRlci5pc1Bvc3RNZXRob2QoKSAmJiBpc01haWx0b0Zvcm0oKSkgewogICAg
ICAgICAgICAgLy8gQ29udmVydCB0aGUgZm9ybSBkYXRhIGludG8gYSBzdHJpbmcgdGhhdCB3ZSBw
dXQgaW50byB0aGUgVVJMLgogICAgICAgICAgICAgS1VSTCB1cmwgPSBkb2N1bWVudCgpLT5jb21w
bGV0ZVVSTChtX3VybCk7Ci0gICAgICAgICAgICBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VS
TCh1cmwsICpyZXN1bHQsIG1fZm9ybURhdGFCdWlsZGVyLmVuY29kaW5nVHlwZSgpKTsKKyAgICAg
ICAgICAgIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKHVybCwgKmZvcm1EYXRhLCBtX2Zv
cm1EYXRhQnVpbGRlci5lbmNvZGluZ1R5cGUoKSk7CiAgICAgICAgICAgICBtX3VybCA9IHVybC5z
dHJpbmcoKTsKIAotICAgICAgICAgICAgcmVzdWx0ID0gRm9ybURhdGE6OmNyZWF0ZSgpOworICAg
ICAgICAgICAgZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICByZXN1bHQtPnNldElkZW50aWZpZXIoZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIo
KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBmb3JtRGF0YS0+c2V0SWRlbnRpZmllcihnZW5l
cmF0ZUZvcm1EYXRhSWRlbnRpZmllcigpKTsKKyAgICBGb3JtU3VibWlzc2lvbjo6TWV0aG9kIG1l
dGhvZCA9IG1fZm9ybURhdGFCdWlsZGVyLmlzUG9zdE1ldGhvZCgpID8gRm9ybVN1Ym1pc3Npb246
OlBvc3RNZXRob2QgOiBGb3JtU3VibWlzc2lvbjo6R2V0TWV0aG9kOworICAgIHJldHVybiBGb3Jt
U3VibWlzc2lvbjo6Y3JlYXRlKG1ldGhvZCwgbV91cmwsIG1fdGFyZ2V0LCBtX2Zvcm1EYXRhQnVp
bGRlci5lbmNvZGluZ1R5cGUoKSwgRm9ybVN0YXRlOjpjcmVhdGUodGhpcywgZm9ybVZhbHVlcywg
ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgdHJpZ2dlciksIGZvcm1EYXRhLnJlbGVhc2UoKSwgYm91bmRh
cnksIGxvY2tIaXN0b3J5LCBldmVudCk7CiB9CiAKIGJvb2wgSFRNTEZvcm1FbGVtZW50Ojppc01h
aWx0b0Zvcm0oKSBjb25zdApAQCAtMzczLDE4ICszODcsOCBAQCB2b2lkIEhUTUxGb3JtRWxlbWVu
dDo6c3VibWl0KEV2ZW50KiBldmVudCwgYm9vbCBhY3RpdmF0ZVN1Ym1pdEJ1dHRvbiwgYm9vbCBs
b2NrSAogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGZpcnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1
dHRvbiA9IDA7CiAgICAgYm9vbCBuZWVkQnV0dG9uQWN0aXZhdGlvbiA9IGFjdGl2YXRlU3VibWl0
QnV0dG9uOyAvLyBkbyB3ZSBuZWVkIHRvIGFjdGl2YXRlIGEgc3VibWl0IGJ1dHRvbj8KICAgICAK
LSAgICBWZWN0b3I8cGFpcjxTdHJpbmcsIFN0cmluZz4gPiBmb3JtVmFsdWVzOwotCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGNvbnRyb2wgPSBtX2Fzc29jaWF0ZWRF
bGVtZW50c1tpXTsKLSAgICAgICAgaWYgKGNvbnRyb2wtPmhhc0xvY2FsTmFtZShpbnB1dFRhZykp
IHsKLSAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRN
TElucHV0RWxlbWVudCo+KGNvbnRyb2wpOwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc1RleHRG
aWVsZCgpKSB7Ci0gICAgICAgICAgICAgICAgZm9ybVZhbHVlcy5hcHBlbmQocGFpcjxTdHJpbmcs
IFN0cmluZz4oaW5wdXQtPm5hbWUoKSwgaW5wdXQtPnZhbHVlKCkpKTsKLSAgICAgICAgICAgICAg
ICBpZiAoaW5wdXQtPmlzU2VhcmNoRmllbGQoKSkKLSAgICAgICAgICAgICAgICAgICAgaW5wdXQt
PmFkZFNlYXJjaFJlc3VsdCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgICAgIGlm
IChuZWVkQnV0dG9uQWN0aXZhdGlvbikgewogICAgICAgICAgICAgaWYgKGNvbnRyb2wtPmlzQWN0
aXZhdGVkU3VibWl0KCkpCiAgICAgICAgICAgICAgICAgbmVlZEJ1dHRvbkFjdGl2YXRpb24gPSBm
YWxzZTsKQEAgLTM5MywxOCArMzk3LDEzIEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzdWJtaXQo
RXZlbnQqIGV2ZW50LCBib29sIGFjdGl2YXRlU3VibWl0QnV0dG9uLCBib29sIGxvY2tICiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUgPSBGb3JtU3Rh
dGU6OmNyZWF0ZSh0aGlzLCBmb3JtVmFsdWVzLCBmcmFtZSwgZm9ybVN1Ym1pc3Npb25UcmlnZ2Vy
KTsKLQogICAgIGlmIChuZWVkQnV0dG9uQWN0aXZhdGlvbiAmJiBmaXJzdFN1Y2Nlc3NmdWxTdWJt
aXRCdXR0b24pCiAgICAgICAgIGZpcnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbi0+c2V0QWN0aXZh
dGVkU3VibWl0KHRydWUpOwogICAgIAogICAgIGlmIChtX3VybC5pc0VtcHR5KCkpCiAgICAgICAg
IG1fdXJsID0gZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7CiAKLSAgICBSZWZQdHI8Rm9ybURh
dGE+IGRhdGEgPSBwcmVwYXJlRm9ybURhdGEoKTsKLSAgICBTdHJpbmcgYm91bmRhcnkgPSBtX2Zv
cm1EYXRhQnVpbGRlci5pc011bHRpUGFydEZvcm0oKSA/IGRhdGEtPmJvdW5kYXJ5KCkuZGF0YSgp
IDogU3RyaW5nKCk7Ci0gICAgY29uc3QgY2hhciogbWV0aG9kID0gbV9mb3JtRGF0YUJ1aWxkZXIu
aXNQb3N0TWV0aG9kKCkgPyAiUE9TVCIgOiAiR0VUIjsKLSAgICBmcmFtZS0+bG9hZGVyKCktPnN1
Ym1pdEZvcm0obWV0aG9kLCBtX3VybCwgZGF0YS5yZWxlYXNlKCksIG1fdGFyZ2V0LCBtX2Zvcm1E
YXRhQnVpbGRlci5lbmNvZGluZ1R5cGUoKSwgYm91bmRhcnksIGxvY2tIaXN0b3J5LCBldmVudCwg
Zm9ybVN0YXRlLnJlbGVhc2UoKSk7CisgICAgZnJhbWUtPmxvYWRlcigpLT5zdWJtaXRGb3JtKHBy
ZXBhcmVGb3JtU3VibWlzc2lvbihldmVudCwgbG9ja0hpc3RvcnksIGZvcm1TdWJtaXNzaW9uVHJp
Z2dlcikpOwogCiAgICAgaWYgKG5lZWRCdXR0b25BY3RpdmF0aW9uICYmIGZpcnN0U3VjY2Vzc2Z1
bFN1Ym1pdEJ1dHRvbikKICAgICAgICAgZmlyc3RTdWNjZXNzZnVsU3VibWl0QnV0dG9uLT5zZXRB
Y3RpdmF0ZWRTdWJtaXQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IGFhZjc3M2Ji
YWExMTE4NzliYjA2ZGQ4MDFmODExMTlmMDJjNjYzOGUuLjdlM2JkMzNjOWRkMWM4MzcxNWNjZjVk
NjU3N2M3YmI1ZDVjNzQxMzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTM0LDYgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFdmVudDsKIGNsYXNzIEZvcm1EYXRhOwor
Y2xhc3MgRm9ybVN1Ym1pc3Npb247CiBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OwogY2xh
c3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CkBAIC0xMzcsNyAr
MTM4LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNNYWlsdG9Gb3JtKCkgY29uc3Q7CiAgICAg
VGV4dEVuY29kaW5nIGRhdGFFbmNvZGluZygpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8Rm9ybURh
dGE+IHByZXBhcmVGb3JtRGF0YSgpOworICAgIFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IHBy
ZXBhcmVGb3JtU3VibWlzc2lvbihFdmVudCosIGJvb2wgbG9ja0hpc3RvcnksIEZvcm1TdWJtaXNz
aW9uVHJpZ2dlcik7CiAgICAgdW5zaWduZWQgZm9ybUVsZW1lbnRJbmRleChIVE1MRm9ybUNvbnRy
b2xFbGVtZW50Kik7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzdWJtaXNzaW9uIHNob3Vs
ZCBiZSBwcm9jZWVkZWQuCiAgICAgYm9vbCB2YWxpZGF0ZUludGVyYWN0aXZlbHkoRXZlbnQqKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBiL1dlYkNvcmUv
bG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2VmZjU4MGEwOWM0NjNjYWVm
ZDU5YzU0NzZlNTk4YjgzOTNlY2M1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRm9ybVN1Ym1pc3Npb24uaCIKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVk
ZSAiRm9ybURhdGEuaCIKKyNpbmNsdWRlICJGb3JtU3RhdGUuaCIKKyNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRm9ybVN1Ym1pc3Npb246OkZvcm1TdWJtaXNz
aW9uKE1ldGhvZCBtZXRob2QsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHRh
cmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IHN0
YXRlLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkYXRhLCBjb25zdCBTdHJpbmcmIGJvdW5kYXJ5LCBi
b29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKKzogbV9tZXRob2QobWV0
aG9kKQorLCBtX2FjdGlvbihhY3Rpb24pCissIG1fdGFyZ2V0KHRhcmdldCkKKywgbV9jb250ZW50
VHlwZShjb250ZW50VHlwZSkKKywgbV9mb3JtU3RhdGUoc3RhdGUpCissIG1fZm9ybURhdGEoZGF0
YSkKKywgbV9ib3VuZGFyeShib3VuZGFyeSkKKywgbV9sb2NrSGlzdG9yeShsb2NrSGlzdG9yeSkK
KywgbV9ldmVudChldmVudCkKK3sgfQorCisKK1Bhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IEZv
cm1TdWJtaXNzaW9uOjpjcmVhdGUoTWV0aG9kIG1ldGhvZCwgY29uc3QgU3RyaW5nJiBhY3Rpb24s
IGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQYXNzUmVm
UHRyPEZvcm1TdGF0ZT4gc3RhdGUsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGRhdGEsIGNvbnN0IFN0
cmluZyYgYm91bmRhcnksIGJvb2wgbG9ja0hpc3RvcnksIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRm9ybVN1Ym1pc3Npb24obWV0aG9kLCBhY3Rp
b24sIHRhcmdldCwgY29udGVudFR5cGUsIHN0YXRlLCBkYXRhLCBib3VuZGFyeSwgbG9ja0hpc3Rv
cnksIGV2ZW50KSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmggYi9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5
NWJkMzkzMTNhNGE2MGE1ZjBkMTIwYWI4MzgwNTdlNDRiMDUwYmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEZvcm1TdWJtaXNzaW9uX2gKKyNkZWZpbmUgRm9ybVN1Ym1pc3Npb25faAorCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnQ7Citj
bGFzcyBGb3JtRGF0YTsKK2NsYXNzIEZvcm1TdGF0ZTsKKworY2xhc3MgRm9ybVN1Ym1pc3Npb24g
OiBwdWJsaWMgUmVmQ291bnRlZDxGb3JtU3VibWlzc2lvbj4geworcHVibGljOgorICAgIGVudW0g
TWV0aG9kIHsKKyAgICAgICAgR2V0TWV0aG9kLAorICAgICAgICBQb3N0TWV0aG9kCisgICAgfTsK
KworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBjcmVhdGUoTWV0aG9kLCBj
b25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgUGFzc1JlZlB0cjxGb3JtRGF0YT4s
IGNvbnN0IFN0cmluZyYgYm91bmRhcnksIGJvb2wgbG9ja0hpc3RvcnksIFBhc3NSZWZQdHI8RXZl
bnQ+KTsKKworICAgIE1ldGhvZCBtZXRob2QoKSBjb25zdCB7IHJldHVybiBtX21ldGhvZDsgfQor
ICAgIFN0cmluZyBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQorICAgIFN0cmlu
ZyB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldDsgfQorICAgIFN0cmluZyBjb250ZW50
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFR5cGU7IH0KKyAgICBGb3JtU3RhdGUqIHN0
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9mb3JtU3RhdGUuZ2V0KCk7IH0KKyAgICBGb3JtRGF0YSog
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybURhdGEuZ2V0KCk7IH0KKyAgICBTdHJpbmcgYm91
bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kYXJ5OyB9CisgICAgYm9vbCBsb2NrSGlzdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9ja0hpc3Rvcnk7IH0KKyAgICBFdmVudCogZXZlbnQoKSBj
b25zdCB7IHJldHVybiBtX2V2ZW50LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgRm9ybVN1Ym1p
c3Npb24oTWV0aG9kLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0YXJnZXQs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4sIGNvbnN0IFN0cmluZyYgYm91bmRhcnksIGJvb2wgbG9ja0hpc3Rvcnks
IFBhc3NSZWZQdHI8RXZlbnQ+KTsKKworICAgIE1ldGhvZCBtX21ldGhvZDsKKyAgICBTdHJpbmcg
bV9hY3Rpb247CisgICAgU3RyaW5nIG1fdGFyZ2V0OworICAgIFN0cmluZyBtX2NvbnRlbnRUeXBl
OworICAgIFJlZlB0cjxGb3JtU3RhdGU+IG1fZm9ybVN0YXRlOworICAgIFJlZlB0cjxGb3JtRGF0
YT4gbV9mb3JtRGF0YTsKKyAgICBTdHJpbmcgbV9ib3VuZGFyeTsKKyAgICBib29sIG1fbG9ja0hp
c3Rvcnk7CisgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50OworfTsKKworfQorCisjZW5kaWYgLy8g
Rm9ybVN1Ym1pc3Npb25faApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDQzZGRmM2I1NDc2ZWRh
ZjQ1OGEwNjQzNzI1MWExMmQ5NTQzMTEwZTQuLjlmOTUwNDc2MmYzNDUwN2Q2Mjg2OTIwOTdkZTk4
NTcyNWE1MGZlNGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAor
KysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
Rm9ybVN0YXRlLmgiCisjaW5jbHVkZSAiRm9ybVN1Ym1pc3Npb24uaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ckNsaWVudC5oIgpAQCAtNDYxLDEwICs0NjIsMTkgQEAgRnJhbWUqIEZyYW1lTG9hZGVyOjpsb2Fk
U3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IEtVUkwK
ICAgICByZXR1cm4gZnJhbWUuZ2V0KCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnN1Ym1pdEZv
cm0oY29uc3QgY2hhciogYWN0aW9uLCBjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gZm9ybURhdGEsCi0gICAgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgYm91bmRhcnksCi0gICAgYm9vbCBsb2NrSGlzdG9y
eSwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3Rh
dGUpCit2b2lkIEZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Np
b24+IHN1Ym1pc3Npb24pCiB7CisgICAgLy8gRklYTUU6IFBsdW1iIHRoaXMgZnVydGhlciBpbi4K
KyAgICBjb25zdCBjaGFyKiBhY3Rpb24gPSBzdWJtaXNzaW9uLT5tZXRob2QoKSA9PSBGb3JtU3Vi
bWlzc2lvbjo6UG9zdE1ldGhvZCA/ICJQT1NUIiA6ICJHRVQiOworICAgIFJlZlB0cjxGb3JtRGF0
YT4gZm9ybURhdGEgPSBzdWJtaXNzaW9uLT5kYXRhKCk7CisgICAgUmVmUHRyPEZvcm1TdGF0ZT4g
Zm9ybVN0YXRlID0gc3VibWlzc2lvbi0+c3RhdGUoKTsKKyAgICBTdHJpbmcgdXJsID0gc3VibWlz
c2lvbi0+YWN0aW9uKCk7CisgICAgU3RyaW5nIHRhcmdldCA9IHN1Ym1pc3Npb24tPnRhcmdldCgp
OworICAgIFN0cmluZyBib3VuZGFyeSA9IHN1Ym1pc3Npb24tPmJvdW5kYXJ5KCk7CisgICAgU3Ry
aW5nIGNvbnRlbnRUeXBlID0gc3VibWlzc2lvbi0+Y29udGVudFR5cGUoKTsKKyAgICBib29sIGxv
Y2tIaXN0b3J5ID0gc3VibWlzc2lvbi0+bG9ja0hpc3RvcnkoKTsKKyAgICBSZWZQdHI8RXZlbnQ+
IGV2ZW50ID0gc3VibWlzc2lvbi0+ZXZlbnQoKTsKKwogICAgIEFTU0VSVChhY3Rpb24pOwogICAg
IEFTU0VSVChzdHJjbXAoYWN0aW9uLCAiR0VUIikgPT0gMCB8fCBzdHJjbXAoYWN0aW9uLCAiUE9T
VCIpID09IDApOwogICAgIEFTU0VSVChmb3JtRGF0YSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCA0
OTc3MjNhZjMyZTE3ODc0Y2ExYWE4Y2JiNThhNzYwZmNjMWVmMTZiLi4yMTQyN2NjNjNhOGYzYTVj
NjQ3MGY1OTRkOWIxNjNlYjU5NzNkODg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU3LDYgKzU3
LDcgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEZvcm1EYXRh
OwogY2xhc3MgRm9ybVN0YXRlOworY2xhc3MgRm9ybVN1Ym1pc3Npb247CiBjbGFzcyBGcmFtZTsK
IGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50OwogY2xhc3MgSGlzdG9yeUl0ZW07CkBAIC0yMjQsOSAr
MjI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgdGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50PiwgYm9vbCBsb2NrSGlzdG9yeSwgYm9v
bCBsb2NrQmFja0ZvcndhcmRMaXN0LCBib29sIHVzZXJHZXN0dXJlLCBSZWZlcnJlclBvbGljeSk7
CiAgICAgYm9vbCByZXF1ZXN0RnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBib29sIGxvY2tIaXN0b3J5
ID0gdHJ1ZSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0ID0gdHJ1ZSk7CiAKLSAgICB2b2lkIHN1
Ym1pdEZvcm0oY29uc3QgY2hhciogYWN0aW9uLCBjb25zdCBTdHJpbmcmIHVybCwKLSAgICAgICAg
UGFzc1JlZlB0cjxGb3JtRGF0YT4sIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGJvdW5kYXJ5LAotICAgICAgICBib29sIGxvY2tI
aXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KTsKKyAgICB2
b2lkIHN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4pOwogCiAgICAgdm9pZCBz
dG9wKCk7CiAgICAgdm9pZCBzdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeSwgRGF0YWJhc2VQ
b2xpY3kgPSBEYXRhYmFzZVBvbGljeVN0b3ApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58717</attachid>
            <date>2010-06-14 15:54:45 -0700</date>
            <delta_ts>2010-06-14 15:57:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40084-20100614155443.patch</filename>
            <type>text/plain</type>
            <size>22246</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA2MTVjMjg5OTcyMDJhYmJlNTcwOTJjMDc4MmY0NjNkNTY5NzQ4NWZkLi5lMDg5NDgwYTEwNWU0
ZDU2NThiMTIzOTkwNGE3MjBkYzU5MWQwNTdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yOTcsNiArMjk3LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAgXAogCWxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgXAogCWxvYWRlci9Gb3Jt
U3RhdGUuY3BwIFwKKwlsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIFwKIAlsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwIFwKIAlsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIFwKIAlsb2FkZXIvSW1h
Z2VEb2N1bWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNDc4ZDNiYmZhNDZiZTA3NDQwOTc0NWZiZThmYjE2
NzYyNjg2ZDVjMi4uOTlhY2YxMjQxZmJmYWU5MTI1OGEyYzNmNmY1Njk2M2E3OGM0MWUwZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCkBAIC0xMzgyLDYgKzEzODIsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUv
bG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5oIFwKIAlXZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUu
Y3BwIFwKIAlXZWJDb3JlL2xvYWRlci9Gb3JtU3RhdGUuaCBcCisJV2ViQ29yZS9sb2FkZXIvRm9y
bVN1Ym1pc3Npb24uY3BwIFwKKwlXZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oIFwKIAlX
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgXAogCVdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmggXAogCVdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggXApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiOWUz
ZjQ2NGI3MjQ4YzkxYzdiNWFjZTc0NWMyOWY2MDVkMTUxYTUyLi42YzE3YjM3ZDE2MWJjMDVjYjZm
NjM3NWJmMzQ3MmU3OWIzYjQ2OWQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTc4Nyw2ICsxNzg3LDggQEAKICAgICAgICAg
ICAgICdsb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9G
b3JtU3RhdGUuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvRm9ybVN0YXRlLmgnLAorICAgICAg
ICAgICAgJ2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAnLAorICAgICAgICAgICAgJ2xvYWRlci9G
b3JtU3VibWlzc2lvbi5oJywKICAgICAgICAgICAgICdsb2FkZXIvRnJhbWVMb2FkZXIuY3BwJywK
ICAgICAgICAgICAgICdsb2FkZXIvRnJhbWVMb2FkZXIuaCcsCiAgICAgICAgICAgICAnbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBi
L1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMGUyZTMxYjhjYzZjZGZiNjQ4MzY5NDU3NWY3Y2Ux
NTA1NmQ2ZWVkOC4uNzkxM2IxZjZhNjJkMTNmZjY1ODc4ZTg0OGUzMDM0MDE0MDUwNDQwYiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBA
IC03MzksNiArNzM5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAgXAogICAgIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgXAogICAgIGxv
YWRlci9Gb3JtU3RhdGUuY3BwIFwKKyAgICBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIFwKICAg
ICBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwIFwKICAgICBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
Y3BwIFwKICAgICBsb2FkZXIvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDljYmEyMTMwOTY2YmY4NTFkOGY2ZDJlNzMzYjBj
NTM2Zjg4MTA2OWUuLmI0YmU5MTM1OWQxNGJkYTVlZTk4M2M3NTc3YmE2MWJkNjBkMzIxMGUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjE5NTMsNiArMjE5NTMsMTQg
QEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
bG9hZGVyXEZvcm1TdWJtaXNzaW9uLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxGb3JtU3VibWlzc2lvbi5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXEZy
YW1lTG9hZGVyLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE0NjZjOTg3ZGIxZjc5MjRjZTM1NGYyM2EzOGQ0
MGUwN2Q1MzY0MmYuLjk3MTdlZTU3MmQ4ODUyMDJhYTkwZWZlMzU3OGExY2QwY2I5YTljNTUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NzUsNiArNzc1
LDggQEAKIAkJNDE2RTc1Q0IwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1QzkwRURG
OTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQk0MTZFNzVDQzBFREY5
MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU3NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3Jp
cHRDYWxsRnJhbWUuY3BwICovOyB9OwogCQk0MTZGNDVGMDBFRDdCMzExMDA4MjE1QjYgLyogU2Ny
aXB0U3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTZGNDVFRjBFRDdCMzExMDA4MjE1QjYgLyogU2NyaXB0U3RyaW5nLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE4ODVCOTMxMUI2RkRBNjAw
MzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTg4NUI5MTExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Np
b24uaCAqLzsgfTsKKwkJNDE4ODVCOTQxMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODg1
QjkyMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5jcHAgKi87IH07CiAJCTQxOEY4
ODA0MEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEY4ODAyMEZGOTU3QUUwMDgwRjA0
NSAvKiBKU0Fic3RyYWN0V29ya2VyLmNwcCAqLzsgfTsKIAkJNDE4Rjg4MDUwRkY5NTdBRjAwODBG
MDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxOEY4ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29y
a2VyLmggKi87IH07CiAJCTQxQTNENThFMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFBM0Q1OEMxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5jcHAg
Ki87IH07CkBAIC02MzM5LDYgKzYzNDEsOCBAQAogCQk0MTZFNzVDOTBFREY5MEM3MDAzNjBFMUQg
LyogU2NyaXB0Q2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cmlwdENhbGxGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFNzVDQTBF
REY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNkY0NUVGMEVEN0IzMTEwMDgyMTVCNiAvKiBTY3JpcHRTdHJpbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0U3RyaW5nLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3Vi
bWlzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtU3VibWlzc2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTg4NUI5MjExQjZGREE2MDAzMzgz
QkIgLyogRm9ybVN1Ym1pc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRm9ybVN1Ym1pc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MThGODgwMjBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Fic3RyYWN0V29ya2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJz
dHJhY3RXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBYnN0cmFj
dFdvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEzRDU4QzEwMUMxNTJE
MDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERlZGljYXRlZFdvcmtlclRocmVhZC5jcHA7IHBhdGggPSB3b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNTcxMyw2ICsxNTcxNyw4IEBACiAJCQkJQjI1NTk5MEQwRDAwRDhCOTAwQkI4MjVDIC8q
IEVtcHR5Q2xpZW50cy5oICovLAogCQkJCTY1NkQzNzIzMEFEQkE1REUwMEE0NTU0RCAvKiBGb3Jt
U3RhdGUuY3BwICovLAogCQkJCTY1NkQzNzIyMEFEQkE1REUwMEE0NTU0RCAvKiBGb3JtU3RhdGUu
aCAqLywKKwkJCQk0MTg4NUI5MTExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uaCAq
LywKKwkJCQk0MTg4NUI5MjExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uY3BwICov
LAogCQkJCTkzMkUxNjA4MEFGNTc4MzQwMDI1RjQwOCAvKiBGcmFtZUxvYWRlci5jcHAgKi8sCiAJ
CQkJNjU2RDM3MjQwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyLmggKi8sCiAJCQkJNjU2
RDM3MjYwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmggKi8sCkBAIC0xNzkw
NSw2ICsxNzkxMSw3IEBACiAJCQkJQTgxMzZEMzgwOTczQThFNzAwRDc0NDYzIC8qIEZvcm1EYXRh
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NEUwQ0U5MjM0RTAwN0VGM0NEIC8qIEZv
cm1EYXRhU3RyZWFtTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTZEMzczQTBBREJBNURFMDBB
NDU1NEQgLyogRm9ybVN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTg4NUI5MzExQjZGREE2
MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzZE
MDlBQzRENjMwMEE2QUFCNCAvKiBGb3VuZGF0aW9uRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2NUJGMDIyRjA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTY1NkQzNzNDMEFEQkE1REUwMEE0NTU0RCAvKiBGcmFtZUxvYWRlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yMDI0Myw2ICsyMDI1MCw3IEBACiAJCQkJQTgxMzZEMzkwOTczQThFNzAwRDc0NDYzIC8q
IEZvcm1EYXRhTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY0RjBDRTkyMzRFMDA3
RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk2NTZEMzcz
QjBBREJBNURFMDBBNDU1NEQgLyogRm9ybVN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQx
ODg1Qjk0MTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk2NUJGMDIyRTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTMyRTE2MDkwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTY1QkYwMjQ1MDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCAxOGNhOTE2MDMwNGVi
MjFiY2QyNGU3MDBmNTUyMjM3OGY2YzQxZmNiLi40Mjk2NGE4MjkzMDdlMjlmYzE1MDEwMDRjYzdk
NmYwYTVjNDFiMjg3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFMaXN0LmgiCiAjaW5j
bHVkZSAiRm9ybVN0YXRlLmgiCisjaW5jbHVkZSAiRm9ybVN1Ym1pc3Npb24uaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnQuaCIKQEAgLTIyMSw3ICsyMjIsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNYWlsdG9Q
b3N0Rm9ybURhdGFUb1VSTChLVVJMJiB1cmwsIGNvbnN0IEZvcm1EYXRhJiBkYXRhLCBjb25zdAog
ICAgIHVybC5zZXRRdWVyeShxdWVyeSk7CiB9CiAKLVBhc3NSZWZQdHI8Rm9ybURhdGE+IEhUTUxG
b3JtRWxlbWVudDo6cHJlcGFyZUZvcm1EYXRhKCkKK1Bhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+
IEhUTUxGb3JtRWxlbWVudDo6cHJlcGFyZUZvcm1TdWJtaXNzaW9uKEV2ZW50KiBldmVudCwgYm9v
bCBsb2NrSGlzdG9yeSwgRm9ybVN1Ym1pc3Npb25UcmlnZ2VyIHRyaWdnZXIpCiB7CiAgICAgaWYg
KG1fZm9ybURhdGFCdWlsZGVyLmlzUG9zdE1ldGhvZCgpKSB7CiAgICAgICAgIGlmIChtX2Zvcm1E
YXRhQnVpbGRlci5pc011bHRpUGFydEZvcm0oKSAmJiBpc01haWx0b0Zvcm0oKSkgewpAQCAtMjMz
LDEzICsyMzQsMjQgQEAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gSFRNTEZvcm1FbGVtZW50OjpwcmVw
YXJlRm9ybURhdGEoKQogICAgICAgICBtX2Zvcm1EYXRhQnVpbGRlci5zZXRJc011bHRpUGFydEZv
cm0oZmFsc2UpOwogCiAgICAgUmVmUHRyPERPTUZvcm1EYXRhPiBkb21Gb3JtRGF0YSA9IERPTUZv
cm1EYXRhOjpjcmVhdGUoZGF0YUVuY29kaW5nKCkuZW5jb2RpbmdGb3JGb3JtU3VibWlzc2lvbigp
KTsKKyAgICBWZWN0b3I8cGFpcjxTdHJpbmcsIFN0cmluZz4gPiBmb3JtVmFsdWVzOworCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGNvbnRyb2wgPSBtX2Fzc29jaWF0
ZWRFbGVtZW50c1tpXTsKICAgICAgICAgaWYgKCFjb250cm9sLT5kaXNhYmxlZCgpKQogICAgICAg
ICAgICAgY29udHJvbC0+YXBwZW5kRm9ybURhdGEoKmRvbUZvcm1EYXRhLCBtX2Zvcm1EYXRhQnVp
bGRlci5pc011bHRpUGFydEZvcm0oKSk7CisgICAgICAgIGlmIChjb250cm9sLT5oYXNMb2NhbE5h
bWUoaW5wdXRUYWcpKSB7CisgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0
YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihjb250cm9sKTsKKyAgICAgICAgICAgIGlmIChp
bnB1dC0+aXNUZXh0RmllbGQoKSkgeworICAgICAgICAgICAgICAgIGZvcm1WYWx1ZXMuYXBwZW5k
KHBhaXI8U3RyaW5nLCBTdHJpbmc+KGlucHV0LT5uYW1lKCksIGlucHV0LT52YWx1ZSgpKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKGlucHV0LT5pc1NlYXJjaEZpZWxkKCkpCisgICAgICAgICAgICAg
ICAgICAgIGlucHV0LT5hZGRTZWFyY2hSZXN1bHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQogICAgIH0KIAotICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVzdWx0OworICAgIFJlZlB0cjxGb3Jt
RGF0YT4gZm9ybURhdGE7CisgICAgU3RyaW5nIGJvdW5kYXJ5OwogCiAgICAgaWYgKG1fZm9ybURh
dGFCdWlsZGVyLmlzTXVsdGlQYXJ0Rm9ybSgpKQogICAgICAgICByZXN1bHQgPSBGb3JtRGF0YTo6
Y3JlYXRlTXVsdGlQYXJ0KGRvbUZvcm1EYXRhLT5pdGVtcygpLCBkb21Gb3JtRGF0YS0+ZW5jb2Rp
bmcoKSwgZG9jdW1lbnQoKSk7CkBAIC0yNDgsMTUgKzI2MCwxNiBAQCBQYXNzUmVmUHRyPEZvcm1E
YXRhPiBIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVGb3JtRGF0YSgpCiAgICAgICAgIGlmIChtX2Zv
cm1EYXRhQnVpbGRlci5pc1Bvc3RNZXRob2QoKSAmJiBpc01haWx0b0Zvcm0oKSkgewogICAgICAg
ICAgICAgLy8gQ29udmVydCB0aGUgZm9ybSBkYXRhIGludG8gYSBzdHJpbmcgdGhhdCB3ZSBwdXQg
aW50byB0aGUgVVJMLgogICAgICAgICAgICAgS1VSTCB1cmwgPSBkb2N1bWVudCgpLT5jb21wbGV0
ZVVSTChtX3VybCk7Ci0gICAgICAgICAgICBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTCh1
cmwsICpyZXN1bHQsIG1fZm9ybURhdGFCdWlsZGVyLmVuY29kaW5nVHlwZSgpKTsKKyAgICAgICAg
ICAgIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKHVybCwgKmZvcm1EYXRhLCBtX2Zvcm1E
YXRhQnVpbGRlci5lbmNvZGluZ1R5cGUoKSk7CiAgICAgICAgICAgICBtX3VybCA9IHVybC5zdHJp
bmcoKTsKIAotICAgICAgICAgICAgcmVzdWx0ID0gRm9ybURhdGE6OmNyZWF0ZSgpOworICAgICAg
ICAgICAgZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICByZXN1bHQtPnNldElkZW50aWZpZXIoZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKSk7
Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgZm9ybURhdGEtPnNldElkZW50aWZp
ZXIoZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKSk7CisgICAgRm9ybVN1Ym1pc3Npb246Ok1l
dGhvZCBtZXRob2QgPSBtX2Zvcm1EYXRhQnVpbGRlci5pc1Bvc3RNZXRob2QoKSA/IEZvcm1TdWJt
aXNzaW9uOjpQb3N0TWV0aG9kIDogRm9ybVN1Ym1pc3Npb246OkdldE1ldGhvZDsKKyAgICByZXR1
cm4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShtZXRob2QsIG1fdXJsLCBtX3RhcmdldCwgbV9mb3Jt
RGF0YUJ1aWxkZXIuZW5jb2RpbmdUeXBlKCksIEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGZvcm1W
YWx1ZXMsIGRvY3VtZW50KCktPmZyYW1lKCksIHRyaWdnZXIpLCBmb3JtRGF0YS5yZWxlYXNlKCks
IGJvdW5kYXJ5LCBsb2NrSGlzdG9yeSwgZXZlbnQpOwogfQogCiBib29sIEhUTUxGb3JtRWxlbWVu
dDo6aXNNYWlsdG9Gb3JtKCkgY29uc3QKQEAgLTM3MywxOCArMzg2LDggQEAgdm9pZCBIVE1MRm9y
bUVsZW1lbnQ6OnN1Ym1pdChFdmVudCogZXZlbnQsIGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24s
IGJvb2wgbG9ja0gKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBmaXJzdFN1Y2Nlc3NmdWxT
dWJtaXRCdXR0b24gPSAwOwogICAgIGJvb2wgbmVlZEJ1dHRvbkFjdGl2YXRpb24gPSBhY3RpdmF0
ZVN1Ym1pdEJ1dHRvbjsgLy8gZG8gd2UgbmVlZCB0byBhY3RpdmF0ZSBhIHN1Ym1pdCBidXR0b24/
CiAgICAgCi0gICAgVmVjdG9yPHBhaXI8U3RyaW5nLCBTdHJpbmc+ID4gZm9ybVZhbHVlczsKLQog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7
ICsraSkgewogICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBjb250cm9sID0gbV9hc3Nv
Y2lhdGVkRWxlbWVudHNbaV07Ci0gICAgICAgIGlmIChjb250cm9sLT5oYXNMb2NhbE5hbWUoaW5w
dXRUYWcpKSB7Ci0gICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19j
YXN0PEhUTUxJbnB1dEVsZW1lbnQqPihjb250cm9sKTsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+
aXNUZXh0RmllbGQoKSkgewotICAgICAgICAgICAgICAgIGZvcm1WYWx1ZXMuYXBwZW5kKHBhaXI8
U3RyaW5nLCBTdHJpbmc+KGlucHV0LT5uYW1lKCksIGlucHV0LT52YWx1ZSgpKSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKGlucHV0LT5pc1NlYXJjaEZpZWxkKCkpCi0gICAgICAgICAgICAgICAgICAg
IGlucHV0LT5hZGRTZWFyY2hSZXN1bHQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAg
ICAgICBpZiAobmVlZEJ1dHRvbkFjdGl2YXRpb24pIHsKICAgICAgICAgICAgIGlmIChjb250cm9s
LT5pc0FjdGl2YXRlZFN1Ym1pdCgpKQogICAgICAgICAgICAgICAgIG5lZWRCdXR0b25BY3RpdmF0
aW9uID0gZmFsc2U7CkBAIC0zOTMsMTggKzM5NiwxMyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6
c3VibWl0KEV2ZW50KiBldmVudCwgYm9vbCBhY3RpdmF0ZVN1Ym1pdEJ1dHRvbiwgYm9vbCBsb2Nr
SAogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlID0g
Rm9ybVN0YXRlOjpjcmVhdGUodGhpcywgZm9ybVZhbHVlcywgZnJhbWUsIGZvcm1TdWJtaXNzaW9u
VHJpZ2dlcik7Ci0KICAgICBpZiAobmVlZEJ1dHRvbkFjdGl2YXRpb24gJiYgZmlyc3RTdWNjZXNz
ZnVsU3VibWl0QnV0dG9uKQogICAgICAgICBmaXJzdFN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24tPnNl
dEFjdGl2YXRlZFN1Ym1pdCh0cnVlKTsKICAgICAKICAgICBpZiAobV91cmwuaXNFbXB0eSgpKQog
ICAgICAgICBtX3VybCA9IGRvY3VtZW50KCktPnVybCgpLnN0cmluZygpOwogCi0gICAgUmVmUHRy
PEZvcm1EYXRhPiBkYXRhID0gcHJlcGFyZUZvcm1EYXRhKCk7Ci0gICAgU3RyaW5nIGJvdW5kYXJ5
ID0gbV9mb3JtRGF0YUJ1aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkgPyBkYXRhLT5ib3VuZGFyeSgp
LmRhdGEoKSA6IFN0cmluZygpOwotICAgIGNvbnN0IGNoYXIqIG1ldGhvZCA9IG1fZm9ybURhdGFC
dWlsZGVyLmlzUG9zdE1ldGhvZCgpID8gIlBPU1QiIDogIkdFVCI7Ci0gICAgZnJhbWUtPmxvYWRl
cigpLT5zdWJtaXRGb3JtKG1ldGhvZCwgbV91cmwsIGRhdGEucmVsZWFzZSgpLCBtX3RhcmdldCwg
bV9mb3JtRGF0YUJ1aWxkZXIuZW5jb2RpbmdUeXBlKCksIGJvdW5kYXJ5LCBsb2NrSGlzdG9yeSwg
ZXZlbnQsIGZvcm1TdGF0ZS5yZWxlYXNlKCkpOworICAgIGZyYW1lLT5sb2FkZXIoKS0+c3VibWl0
Rm9ybShwcmVwYXJlRm9ybVN1Ym1pc3Npb24oZXZlbnQsIGxvY2tIaXN0b3J5LCBmb3JtU3VibWlz
c2lvblRyaWdnZXIpKTsKIAogICAgIGlmIChuZWVkQnV0dG9uQWN0aXZhdGlvbiAmJiBmaXJzdFN1
Y2Nlc3NmdWxTdWJtaXRCdXR0b24pCiAgICAgICAgIGZpcnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRv
bi0+c2V0QWN0aXZhdGVkU3VibWl0KGZhbHNlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAppbmRleCBh
YWY3NzNiYmFhMTExODc5YmIwNmRkODAxZjgxMTE5ZjAyYzY2MzhlLi43ZTNiZDMzYzlkZDFjODM3
MTVjY2Y1ZDY1NzdjN2JiNWQ1Yzc0MTM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCkBAIC0zNCw2
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGb3Jt
RGF0YTsKK2NsYXNzIEZvcm1TdWJtaXNzaW9uOwogY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwpAQCAt
MTM3LDcgKzEzOCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzTWFpbHRvRm9ybSgpIGNvbnN0
OwogICAgIFRleHRFbmNvZGluZyBkYXRhRW5jb2RpbmcoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRy
PEZvcm1EYXRhPiBwcmVwYXJlRm9ybURhdGEoKTsKKyAgICBQYXNzUmVmUHRyPEZvcm1TdWJtaXNz
aW9uPiBwcmVwYXJlRm9ybVN1Ym1pc3Npb24oRXZlbnQqLCBib29sIGxvY2tIaXN0b3J5LCBGb3Jt
U3VibWlzc2lvblRyaWdnZXIpOwogICAgIHVuc2lnbmVkIGZvcm1FbGVtZW50SW5kZXgoSFRNTEZv
cm1Db250cm9sRWxlbWVudCopOwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3VibWlzc2lv
biBzaG91bGQgYmUgcHJvY2VlZGVkLgogICAgIGJvb2wgdmFsaWRhdGVJbnRlcmFjdGl2ZWx5KEV2
ZW50Kik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9X
ZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGVhN2QxNzdmYzc1
MjA5MmY2MDJkNDVmZDMxODk2YmM1NDI4ZjEzNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
bG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkZvcm1TdWJtaXNzaW9uLmgiCisKKyNpbmNsdWRlICJFdmVudC5oIgor
I2luY2x1ZGUgIkZvcm1EYXRhLmgiCisjaW5jbHVkZSAiRm9ybVN0YXRlLmgiCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Zvcm1TdWJtaXNzaW9uOjpGb3Jt
U3VibWlzc2lvbihNZXRob2QgbWV0aG9kLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPiBzdGF0ZSwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZGF0YSwgY29uc3QgU3RyaW5nJiBib3Vu
ZGFyeSwgYm9vbCBsb2NrSGlzdG9yeSwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCisgICAgOiBt
X21ldGhvZChtZXRob2QpCisgICAgLCBtX2FjdGlvbihhY3Rpb24pCisgICAgLCBtX3RhcmdldCh0
YXJnZXQpCisgICAgLCBtX2NvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKQorICAgICwgbV9mb3JtU3Rh
dGUoc3RhdGUpCisgICAgLCBtX2Zvcm1EYXRhKGRhdGEpCisgICAgLCBtX2JvdW5kYXJ5KGJvdW5k
YXJ5KQorICAgICwgbV9sb2NrSGlzdG9yeShsb2NrSGlzdG9yeSkKKyAgICAsIG1fZXZlbnQoZXZl
bnQpCit7Cit9CisKKworUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246
OmNyZWF0ZShNZXRob2QgbWV0aG9kLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5n
JiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PiBzdGF0ZSwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZGF0YSwgY29uc3QgU3RyaW5nJiBib3VuZGFy
eSwgYm9vbCBsb2NrSGlzdG9yeSwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBGb3JtU3VibWlzc2lvbihtZXRob2QsIGFjdGlvbiwgdGFyZ2V0LCBj
b250ZW50VHlwZSwgc3RhdGUsIGRhdGEsIGJvdW5kYXJ5LCBsb2NrSGlzdG9yeSwgZXZlbnQpKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaCBiL1dl
YkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk1YmQzOTMxM2E0YTYw
YTVmMGQxMjBhYjgzODA1N2U0NGIwNTBiZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9h
ZGVyL0Zvcm1TdWJtaXNzaW9uLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRm9ybVN1Ym1pc3Np
b25faAorI2RlZmluZSBGb3JtU3VibWlzc2lvbl9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFdmVudDsKK2NsYXNzIEZvcm1EYXRh
OworY2xhc3MgRm9ybVN0YXRlOworCitjbGFzcyBGb3JtU3VibWlzc2lvbiA6IHB1YmxpYyBSZWZD
b3VudGVkPEZvcm1TdWJtaXNzaW9uPiB7CitwdWJsaWM6CisgICAgZW51bSBNZXRob2QgeworICAg
ICAgICBHZXRNZXRob2QsCisgICAgICAgIFBvc3RNZXRob2QKKyAgICB9OworCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IGNyZWF0ZShNZXRob2QsIGNvbnN0IFN0cmluZyYg
YWN0aW9uLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
UGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgU3RyaW5n
JiBib3VuZGFyeSwgYm9vbCBsb2NrSGlzdG9yeSwgUGFzc1JlZlB0cjxFdmVudD4pOworCisgICAg
TWV0aG9kIG1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9kOyB9CisgICAgU3RyaW5nIGFj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aW9uOyB9CisgICAgU3RyaW5nIHRhcmdldCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGFyZ2V0OyB9CisgICAgU3RyaW5nIGNvbnRlbnRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50VHlwZTsgfQorICAgIEZvcm1TdGF0ZSogc3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX2Zvcm1TdGF0ZS5nZXQoKTsgfQorICAgIEZvcm1EYXRhKiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JtRGF0YS5nZXQoKTsgfQorICAgIFN0cmluZyBib3VuZGFyeSgpIGNvbnN0
IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KKyAgICBib29sIGxvY2tIaXN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2NrSGlzdG9yeTsgfQorICAgIEV2ZW50KiBldmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZXZlbnQuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBGb3JtU3VibWlzc2lvbihNZXRob2Qs
IGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBQYXNzUmVmUHRyPEZvcm1EYXRh
PiwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwgYm9vbCBsb2NrSGlzdG9yeSwgUGFzc1JlZlB0cjxF
dmVudD4pOworCisgICAgTWV0aG9kIG1fbWV0aG9kOworICAgIFN0cmluZyBtX2FjdGlvbjsKKyAg
ICBTdHJpbmcgbV90YXJnZXQ7CisgICAgU3RyaW5nIG1fY29udGVudFR5cGU7CisgICAgUmVmUHRy
PEZvcm1TdGF0ZT4gbV9mb3JtU3RhdGU7CisgICAgUmVmUHRyPEZvcm1EYXRhPiBtX2Zvcm1EYXRh
OworICAgIFN0cmluZyBtX2JvdW5kYXJ5OworICAgIGJvb2wgbV9sb2NrSGlzdG9yeTsKKyAgICBS
ZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBGb3JtU3VibWlzc2lv
bl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggOTc0NThmYTBhOGU1YzQ0YzgzNGMyOTgxMDA5
N2E2OTM5ODg0YWQxMC4uMTM1MzcwMDFhZjUyMDRiY2Q2NDI1NzI5OGJmZjAwNmMwN2M0OTI2MSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIK
KyNpbmNsdWRlICJGb3JtU3VibWlzc2lvbi5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBA
IC00NjEsMTAgKzQ2MiwxOSBAQCBGcmFtZSogRnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZShIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgS1VSTAogICAgIHJldHVybiBm
cmFtZS5nZXQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShjb25zdCBjaGFy
KiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0
YSwKLSAgICBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBib3VuZGFyeSwKLSAgICBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRy
PEV2ZW50PiBldmVudCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSkKK3ZvaWQgRnJh
bWVMb2FkZXI6OnN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlzc2lv
bikKIHsKKyAgICAvLyBGSVhNRTogUGx1bWIgdGhpcyBmdXJ0aGVyIGluLgorICAgIGNvbnN0IGNo
YXIqIGFjdGlvbiA9IHN1Ym1pc3Npb24tPm1ldGhvZCgpID09IEZvcm1TdWJtaXNzaW9uOjpQb3N0
TWV0aG9kID8gIlBPU1QiIDogIkdFVCI7CisgICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9
IHN1Ym1pc3Npb24tPmRhdGEoKTsKKyAgICBSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUgPSBz
dWJtaXNzaW9uLT5zdGF0ZSgpOworICAgIFN0cmluZyB1cmwgPSBzdWJtaXNzaW9uLT5hY3Rpb24o
KTsKKyAgICBTdHJpbmcgdGFyZ2V0ID0gc3VibWlzc2lvbi0+dGFyZ2V0KCk7CisgICAgU3RyaW5n
IGJvdW5kYXJ5ID0gc3VibWlzc2lvbi0+Ym91bmRhcnkoKTsKKyAgICBTdHJpbmcgY29udGVudFR5
cGUgPSBzdWJtaXNzaW9uLT5jb250ZW50VHlwZSgpOworICAgIGJvb2wgbG9ja0hpc3RvcnkgPSBz
dWJtaXNzaW9uLT5sb2NrSGlzdG9yeSgpOworICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBzdWJt
aXNzaW9uLT5ldmVudCgpOworCiAgICAgQVNTRVJUKGFjdGlvbik7CiAgICAgQVNTRVJUKHN0cmNt
cChhY3Rpb24sICJHRVQiKSA9PSAwIHx8IHN0cmNtcChhY3Rpb24sICJQT1NUIikgPT0gMCk7CiAg
ICAgQVNTRVJUKGZvcm1EYXRhKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmggYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDE4ZTAwYjNhYTk0NjAy
ODdkMzBhNGIyNjQ4NDIwYTYxODFkM2FhYTYuLmQ1MGMxM2ZjZjRlZWQzNTdhYWQ2MjkwMDMyYmI4
MGNmMTY2MWFhZDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysr
IGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTcsNiArNTcsNyBAQCBjbGFzcyBE
b2N1bWVudExvYWRlcjsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBGb3Jt
U3RhdGU7CitjbGFzcyBGb3JtU3VibWlzc2lvbjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVM
b2FkZXJDbGllbnQ7CiBjbGFzcyBIaXN0b3J5SXRlbTsKQEAgLTIyNCw5ICsyMjUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB1cmxTZWxlY3RlZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIFBhc3NSZWZQdHI8RXZlbnQ+LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9y
d2FyZExpc3QsIGJvb2wgdXNlckdlc3R1cmUsIFJlZmVycmVyUG9saWN5KTsKICAgICBib29sIHJl
cXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29s
IGxvY2tCYWNrRm9yd2FyZExpc3QgPSB0cnVlKTsKIAotICAgIHZvaWQgc3VibWl0Rm9ybShjb25z
dCBjaGFyKiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdXJsLAotICAgICAgICBQYXNzUmVmUHRyPEZv
cm1EYXRhPiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYgYm91bmRhcnksCi0gICAgICAgIGJvb2wgbG9ja0hpc3RvcnksIFBhc3NS
ZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOworICAgIHZvaWQgc3VibWl0Rm9y
bShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPik7CiAKICAgICB2b2lkIHN0b3AoKTsKICAgICB2
b2lkIHN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5LCBEYXRhYmFzZVBvbGljeSA9IERhdGFi
YXNlUG9saWN5U3RvcCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58721</attachid>
            <date>2010-06-14 15:57:53 -0700</date>
            <delta_ts>2010-06-14 16:06:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40084-20100614155752.patch</filename>
            <type>text/plain</type>
            <size>23838</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA2MTVjMjg5OTcyMDJhYmJlNTcwOTJjMDc4MmY0NjNkNTY5NzQ4NWZkLi5lMDg5NDgwYTEwNWU0
ZDU2NThiMTIzOTkwNGE3MjBkYzU5MWQwNTdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yOTcsNiArMjk3LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAgXAogCWxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgXAogCWxvYWRlci9Gb3Jt
U3RhdGUuY3BwIFwKKwlsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIFwKIAlsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwIFwKIAlsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIFwKIAlsb2FkZXIvSW1h
Z2VEb2N1bWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBiNWM0MGFjNDg0ZmE1NjhmYjQ5NGZkOTczZWQ2MzNjNjQ4OTk0ZWQw
Li5lOTZjN2MzZjExNTA5NjNkNjVmYjlmZjYzZjljN2E5Y2Y3MDVkNDk3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBA
CisyMDEwLTA2LTE0ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IEZvcm1TdWJtaXNzaW9uLCB0aGUgc3RydWN0dXJlIHJlcHJlc2VudGluZyBhIGZvcm0gc3VibWlz
c2lvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQw
MDg0CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHksIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQgRm9ybVN1Ym1p
c3Npb24uaC9jcHAuCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLnBybzogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
RGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50OjpwcmVwYXJlRm9ybVN1Ym1pc3Npb24pOiBSZW5hbWVkIHBy
ZXBhcmVGb3JtRGF0YSB0byBwcmVwYXJlRm9ybVN1Ym1pc3Npb24sCisgICAgICAgICAgICBhZGRl
ZCBjb2RlIGZvciBwb3B1bGF0aW5nIGEgRm9ybVN1Ym1pc3Npb24gaW5zdGFuY2UsIG1vdmVkIHRo
ZSBsb29wIG9mIGFjY3VtdWxhdGluZyB0ZXh0IGlucHV0CisgICAgICAgICAgICB2YWx1ZXMgaW50
byB0aGlzIGZ1bmN0aW9ucyAoaXQgYmVsb25ncyBoZXJlIGxvZ2ljYWxseSkuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdCk6IE1vZGlmaWVkIHRvIHVzZSBwcmVwYXJl
Rm9ybVN1Ym1pc3Npb24uCisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uaDogQWRkZWQuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKTogTW9kaWZpZWQg
dG8gdXNlIEZvcm1TdWJtaXNzaW9uLiBTdG9wcGVkIHBsdW1iaW5nIGZ1cnRoZXIgdG8ga2VlcAor
ICAgICAgICAgICAgdGhlIHBhdGNoIHNpemUgZG93bi4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuaDogTW9kaWZpZWQgc3VibWl0Rm9ybSBzaWduYXR1cmUuCisKIDIwMTAtMDYtMTQgIER1
bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCA0NzhkM2JiZmE0NmJlMDc0NDA5NzQ1ZmJlOGZiMTY3NjI2
ODZkNWMyLi45OWFjZjEyNDFmYmZhZTkxMjU4YTJjM2Y2ZjU2OTYzYTc4YzQxZTBlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
QEAgLTEzODIsNiArMTM4Miw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9sb2Fk
ZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmggXAogCVdlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5jcHAg
XAogCVdlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5oIFwKKwlXZWJDb3JlL2xvYWRlci9Gb3JtU3Vi
bWlzc2lvbi5jcHAgXAorCVdlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmggXAogCVdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aCBcCiAJV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGI5ZTNmNDY0
YjcyNDhjOTFjN2I1YWNlNzQ1YzI5ZjYwNWQxNTFhNTIuLjZjMTdiMzdkMTYxYmMwNWNiNmY2Mzc1
YmYzNDcyZTc5YjNiNDY5ZDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNzg3LDYgKzE3ODcsOCBAQAogICAgICAgICAgICAg
J2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL0Zvcm1T
dGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9Gb3JtU3RhdGUuaCcsCisgICAgICAgICAg
ICAnbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCcsCisgICAgICAgICAgICAnbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9GcmFtZUxvYWRlci5jcHAnLAogICAg
ICAgICAgICAgJ2xvYWRlci9GcmFtZUxvYWRlci5oJywKICAgICAgICAgICAgICdsb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwppbmRleCAwZTJlMzFiOGNjNmNkZmI2NDgzNjk0NTc1ZjdjZTE1MDU2
ZDZlZWQ4Li43OTEzYjFmNmE2MmQxM2ZmNjU4NzhlODQ4ZTMwMzQwMTQwNTA0NDBiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTcz
OSw2ICs3MzksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcCBcCiAgICAgbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBcCiAgICAgbG9hZGVy
L0Zvcm1TdGF0ZS5jcHAgXAorICAgIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgXAogICAgIGxv
YWRlci9GcmFtZUxvYWRlci5jcHAgXAogICAgIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAg
XAogICAgIGxvYWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOWNiYTIxMzA5NjZiZjg1MWQ4ZjZkMmU3MzNiMGM1MzZm
ODgxMDY5ZS4uYjRiZTkxMzU5ZDE0YmRhNWVlOTgzYzc1NzdiYTYxYmQ2MGQzMjEwZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yMTk1Myw2ICsyMTk1MywxNCBAQAog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2Fk
ZXJcRm9ybVN1Ym1pc3Npb24uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXEZvcm1TdWJtaXNzaW9uLmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcRnJhbWVM
b2FkZXIuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTQ2NmM5ODdkYjFmNzkyNGNlMzU0ZjIzYTM4ZDQwZTA3
ZDUzNjQyZi4uOTcxN2VlNTcyZDg4NTIwMmFhOTBlZmUzNTc4YTFjZDBjYjlhOWM1NSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc3NSw2ICs3NzUsOCBA
QAogCQk0MTZFNzVDQjBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFNzVDOTBFREY5MEM3
MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCTQxNkU3NUNDMEVERjkwQzcw
MDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1Q0EwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENh
bGxGcmFtZS5jcHAgKi87IH07CiAJCTQxNkY0NUYwMEVEN0IzMTEwMDgyMTVCNiAvKiBTY3JpcHRT
dHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NkY0NUVGMEVEN0IzMTEwMDgyMTVCNiAvKiBTY3JpcHRTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTg4NUI5MzExQjZGREE2MDAzMzgz
QkIgLyogRm9ybVN1Ym1pc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5o
ICovOyB9OworCQk0MTg4NUI5NDExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4ODVCOTIx
MUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmNwcCAqLzsgfTsKIAkJNDE4Rjg4MDQw
RkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8q
IEpTQWJzdHJhY3RXb3JrZXIuY3BwICovOyB9OwogCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUg
LyogSlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIu
aCAqLzsgfTsKIAkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRo
cmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLzsg
fTsKQEAgLTYzMzksNiArNjM0MSw4IEBACiAJCTQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBT
Y3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUNBMEVERjkw
QzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE2RjQ1RUYwRUQ3QjMxMTAwODIxNUI2IC8qIFNjcmlwdFN0cmluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTdHJpbmcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDE4ODVCOTExMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNz
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1TdWJtaXNzaW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODg1QjkyMTFCNkZEQTYwMDMzODNCQiAv
KiBGb3JtU3VibWlzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGb3JtU3VibWlzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOEY4
ODAyMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWJzdHJhY3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MThGODgwMzBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFj
dFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Fic3RyYWN0V29y
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTNENThDMTAxQzE1MkQwMDMx
NkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcDsgcGF0aCA9IHdvcmtlcnMv
RGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE1NzEzLDYgKzE1NzE3LDggQEAKIAkJCQlCMjU1OTkwRDBEMDBEOEI5MDBCQjgyNUMgLyogRW1w
dHlDbGllbnRzLmggKi8sCiAJCQkJNjU2RDM3MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0
ZS5jcHAgKi8sCiAJCQkJNjU2RDM3MjIwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5oICov
LAorCQkJCTQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oICovLAor
CQkJCTQxODg1QjkyMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5jcHAgKi8sCiAJ
CQkJOTMyRTE2MDgwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCAqLywKIAkJCQk2
NTZEMzcyNDBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXIuaCAqLywKIAkJCQk2NTZEMzcy
NjBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXJDbGllbnQuaCAqLywKQEAgLTE3OTA1LDYg
KzE3OTExLDcgQEAKIAkJCQlBODEzNkQzODA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY0RTBDRTkyMzRFMDA3RUYzQ0QgLyogRm9ybURh
dGFTdHJlYW1NYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NkQzNzNBMEFEQkE1REUwMEE0NTU0
RCAvKiBGb3JtU3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxODg1QjkzMTFCNkZEQTYwMDMz
ODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NkQwOUFD
NEQ2MzAwQTZBQUI0IC8qIEZvdW5kYXRpb25FeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1
QkYwMjJGMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2
RDM3M0MwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTIwMjQzLDYgKzIwMjUwLDcgQEAKIAkJCQlBODEzNkQzOTA5NzNBOEU3MDBENzQ0NjMgLyogRm9y
bURhdGFMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjRGMENFOTIzNEUwMDdFRjND
RCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTY1NkQzNzNCMEFE
QkE1REUwMEE0NTU0RCAvKiBGb3JtU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4ODVC
OTQxMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTY1QkYwMjJFMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5MzJFMTYwOTBBRjU3ODM0MDAyNUY0MDggLyogRnJhbWVMb2FkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNjVCRjAyNDUwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDE4Y2E5MTYwMzA0ZWIyMWJj
ZDI0ZTcwMGY1NTIyMzc4ZjZjNDFmY2IuLjQyOTY0YTgyOTMwN2UyOWZjMTUwMTAwNGNjN2Q2ZjBh
NWM0MWIyODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRl
ICJGb3JtU3RhdGUuaCIKKyNpbmNsdWRlICJGb3JtU3VibWlzc2lvbi5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudC5oIgpAQCAtMjIxLDcgKzIyMiw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RG
b3JtRGF0YVRvVVJMKEtVUkwmIHVybCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0CiAgICAg
dXJsLnNldFF1ZXJ5KHF1ZXJ5KTsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gSFRNTEZvcm1F
bGVtZW50OjpwcmVwYXJlRm9ybURhdGEoKQorUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gSFRN
TEZvcm1FbGVtZW50OjpwcmVwYXJlRm9ybVN1Ym1pc3Npb24oRXZlbnQqIGV2ZW50LCBib29sIGxv
Y2tIaXN0b3J5LCBGb3JtU3VibWlzc2lvblRyaWdnZXIgdHJpZ2dlcikKIHsKICAgICBpZiAobV9m
b3JtRGF0YUJ1aWxkZXIuaXNQb3N0TWV0aG9kKCkpIHsKICAgICAgICAgaWYgKG1fZm9ybURhdGFC
dWlsZGVyLmlzTXVsdGlQYXJ0Rm9ybSgpICYmIGlzTWFpbHRvRm9ybSgpKSB7CkBAIC0yMzMsMTMg
KzIzNCwyNCBAQCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVG
b3JtRGF0YSgpCiAgICAgICAgIG1fZm9ybURhdGFCdWlsZGVyLnNldElzTXVsdGlQYXJ0Rm9ybShm
YWxzZSk7CiAKICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IGRvbUZvcm1EYXRhID0gRE9NRm9ybURh
dGE6OmNyZWF0ZShkYXRhRW5jb2RpbmcoKS5lbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9uKCkpOwor
ICAgIFZlY3RvcjxwYWlyPFN0cmluZywgU3RyaW5nPiA+IGZvcm1WYWx1ZXM7CisKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCA9IG1fYXNzb2NpYXRlZEVs
ZW1lbnRzW2ldOwogICAgICAgICBpZiAoIWNvbnRyb2wtPmRpc2FibGVkKCkpCiAgICAgICAgICAg
ICBjb250cm9sLT5hcHBlbmRGb3JtRGF0YSgqZG9tRm9ybURhdGEsIG1fZm9ybURhdGFCdWlsZGVy
LmlzTXVsdGlQYXJ0Rm9ybSgpKTsKKyAgICAgICAgaWYgKGNvbnRyb2wtPmhhc0xvY2FsTmFtZShp
bnB1dFRhZykpIHsKKyAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGNvbnRyb2wpOworICAgICAgICAgICAgaWYgKGlucHV0
LT5pc1RleHRGaWVsZCgpKSB7CisgICAgICAgICAgICAgICAgZm9ybVZhbHVlcy5hcHBlbmQocGFp
cjxTdHJpbmcsIFN0cmluZz4oaW5wdXQtPm5hbWUoKSwgaW5wdXQtPnZhbHVlKCkpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoaW5wdXQtPmlzU2VhcmNoRmllbGQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgaW5wdXQtPmFkZFNlYXJjaFJlc3VsdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAg
ICAgfQogCi0gICAgUmVmUHRyPEZvcm1EYXRhPiByZXN1bHQ7CisgICAgUmVmUHRyPEZvcm1EYXRh
PiBmb3JtRGF0YTsKKyAgICBTdHJpbmcgYm91bmRhcnk7CiAKICAgICBpZiAobV9mb3JtRGF0YUJ1
aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkpCiAgICAgICAgIHJlc3VsdCA9IEZvcm1EYXRhOjpjcmVh
dGVNdWx0aVBhcnQoZG9tRm9ybURhdGEtPml0ZW1zKCksIGRvbUZvcm1EYXRhLT5lbmNvZGluZygp
LCBkb2N1bWVudCgpKTsKQEAgLTI0OCwxNSArMjYwLDE2IEBAIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IEhUTUxGb3JtRWxlbWVudDo6cHJlcGFyZUZvcm1EYXRhKCkKICAgICAgICAgaWYgKG1fZm9ybURh
dGFCdWlsZGVyLmlzUG9zdE1ldGhvZCgpICYmIGlzTWFpbHRvRm9ybSgpKSB7CiAgICAgICAgICAg
ICAvLyBDb252ZXJ0IHRoZSBmb3JtIGRhdGEgaW50byBhIHN0cmluZyB0aGF0IHdlIHB1dCBpbnRv
IHRoZSBVUkwuCiAgICAgICAgICAgICBLVVJMIHVybCA9IGRvY3VtZW50KCktPmNvbXBsZXRlVVJM
KG1fdXJsKTsKLSAgICAgICAgICAgIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKHVybCwg
KnJlc3VsdCwgbV9mb3JtRGF0YUJ1aWxkZXIuZW5jb2RpbmdUeXBlKCkpOworICAgICAgICAgICAg
YXBwZW5kTWFpbHRvUG9zdEZvcm1EYXRhVG9VUkwodXJsLCAqZm9ybURhdGEsIG1fZm9ybURhdGFC
dWlsZGVyLmVuY29kaW5nVHlwZSgpKTsKICAgICAgICAgICAgIG1fdXJsID0gdXJsLnN0cmluZygp
OwogCi0gICAgICAgICAgICByZXN1bHQgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKICAgICAgICAgfQogICAgIH0KIAotICAg
IHJlc3VsdC0+c2V0SWRlbnRpZmllcihnZW5lcmF0ZUZvcm1EYXRhSWRlbnRpZmllcigpKTsKLSAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICBmb3JtRGF0YS0+c2V0SWRlbnRpZmllcihn
ZW5lcmF0ZUZvcm1EYXRhSWRlbnRpZmllcigpKTsKKyAgICBGb3JtU3VibWlzc2lvbjo6TWV0aG9k
IG1ldGhvZCA9IG1fZm9ybURhdGFCdWlsZGVyLmlzUG9zdE1ldGhvZCgpID8gRm9ybVN1Ym1pc3Np
b246OlBvc3RNZXRob2QgOiBGb3JtU3VibWlzc2lvbjo6R2V0TWV0aG9kOworICAgIHJldHVybiBG
b3JtU3VibWlzc2lvbjo6Y3JlYXRlKG1ldGhvZCwgbV91cmwsIG1fdGFyZ2V0LCBtX2Zvcm1EYXRh
QnVpbGRlci5lbmNvZGluZ1R5cGUoKSwgRm9ybVN0YXRlOjpjcmVhdGUodGhpcywgZm9ybVZhbHVl
cywgZG9jdW1lbnQoKS0+ZnJhbWUoKSwgdHJpZ2dlciksIGZvcm1EYXRhLnJlbGVhc2UoKSwgYm91
bmRhcnksIGxvY2tIaXN0b3J5LCBldmVudCk7CiB9CiAKIGJvb2wgSFRNTEZvcm1FbGVtZW50Ojpp
c01haWx0b0Zvcm0oKSBjb25zdApAQCAtMzczLDE4ICszODYsOCBAQCB2b2lkIEhUTUxGb3JtRWxl
bWVudDo6c3VibWl0KEV2ZW50KiBldmVudCwgYm9vbCBhY3RpdmF0ZVN1Ym1pdEJ1dHRvbiwgYm9v
bCBsb2NrSAogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGZpcnN0U3VjY2Vzc2Z1bFN1Ym1p
dEJ1dHRvbiA9IDA7CiAgICAgYm9vbCBuZWVkQnV0dG9uQWN0aXZhdGlvbiA9IGFjdGl2YXRlU3Vi
bWl0QnV0dG9uOyAvLyBkbyB3ZSBuZWVkIHRvIGFjdGl2YXRlIGEgc3VibWl0IGJ1dHRvbj8KICAg
ICAKLSAgICBWZWN0b3I8cGFpcjxTdHJpbmcsIFN0cmluZz4gPiBmb3JtVmFsdWVzOwotCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGNvbnRyb2wgPSBtX2Fzc29jaWF0
ZWRFbGVtZW50c1tpXTsKLSAgICAgICAgaWYgKGNvbnRyb2wtPmhhc0xvY2FsTmFtZShpbnB1dFRh
ZykpIHsKLSAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8
SFRNTElucHV0RWxlbWVudCo+KGNvbnRyb2wpOwotICAgICAgICAgICAgaWYgKGlucHV0LT5pc1Rl
eHRGaWVsZCgpKSB7Ci0gICAgICAgICAgICAgICAgZm9ybVZhbHVlcy5hcHBlbmQocGFpcjxTdHJp
bmcsIFN0cmluZz4oaW5wdXQtPm5hbWUoKSwgaW5wdXQtPnZhbHVlKCkpKTsKLSAgICAgICAgICAg
ICAgICBpZiAoaW5wdXQtPmlzU2VhcmNoRmllbGQoKSkKLSAgICAgICAgICAgICAgICAgICAgaW5w
dXQtPmFkZFNlYXJjaFJlc3VsdCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgICAg
IGlmIChuZWVkQnV0dG9uQWN0aXZhdGlvbikgewogICAgICAgICAgICAgaWYgKGNvbnRyb2wtPmlz
QWN0aXZhdGVkU3VibWl0KCkpCiAgICAgICAgICAgICAgICAgbmVlZEJ1dHRvbkFjdGl2YXRpb24g
PSBmYWxzZTsKQEAgLTM5MywxOCArMzk2LDEzIEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzdWJt
aXQoRXZlbnQqIGV2ZW50LCBib29sIGFjdGl2YXRlU3VibWl0QnV0dG9uLCBib29sIGxvY2tICiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUgPSBGb3Jt
U3RhdGU6OmNyZWF0ZSh0aGlzLCBmb3JtVmFsdWVzLCBmcmFtZSwgZm9ybVN1Ym1pc3Npb25Ucmln
Z2VyKTsKLQogICAgIGlmIChuZWVkQnV0dG9uQWN0aXZhdGlvbiAmJiBmaXJzdFN1Y2Nlc3NmdWxT
dWJtaXRCdXR0b24pCiAgICAgICAgIGZpcnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbi0+c2V0QWN0
aXZhdGVkU3VibWl0KHRydWUpOwogICAgIAogICAgIGlmIChtX3VybC5pc0VtcHR5KCkpCiAgICAg
ICAgIG1fdXJsID0gZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7CiAKLSAgICBSZWZQdHI8Rm9y
bURhdGE+IGRhdGEgPSBwcmVwYXJlRm9ybURhdGEoKTsKLSAgICBTdHJpbmcgYm91bmRhcnkgPSBt
X2Zvcm1EYXRhQnVpbGRlci5pc011bHRpUGFydEZvcm0oKSA/IGRhdGEtPmJvdW5kYXJ5KCkuZGF0
YSgpIDogU3RyaW5nKCk7Ci0gICAgY29uc3QgY2hhciogbWV0aG9kID0gbV9mb3JtRGF0YUJ1aWxk
ZXIuaXNQb3N0TWV0aG9kKCkgPyAiUE9TVCIgOiAiR0VUIjsKLSAgICBmcmFtZS0+bG9hZGVyKCkt
PnN1Ym1pdEZvcm0obWV0aG9kLCBtX3VybCwgZGF0YS5yZWxlYXNlKCksIG1fdGFyZ2V0LCBtX2Zv
cm1EYXRhQnVpbGRlci5lbmNvZGluZ1R5cGUoKSwgYm91bmRhcnksIGxvY2tIaXN0b3J5LCBldmVu
dCwgZm9ybVN0YXRlLnJlbGVhc2UoKSk7CisgICAgZnJhbWUtPmxvYWRlcigpLT5zdWJtaXRGb3Jt
KHByZXBhcmVGb3JtU3VibWlzc2lvbihldmVudCwgbG9ja0hpc3RvcnksIGZvcm1TdWJtaXNzaW9u
VHJpZ2dlcikpOwogCiAgICAgaWYgKG5lZWRCdXR0b25BY3RpdmF0aW9uICYmIGZpcnN0U3VjY2Vz
c2Z1bFN1Ym1pdEJ1dHRvbikKICAgICAgICAgZmlyc3RTdWNjZXNzZnVsU3VibWl0QnV0dG9uLT5z
ZXRBY3RpdmF0ZWRTdWJtaXQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IGFhZjc3
M2JiYWExMTE4NzliYjA2ZGQ4MDFmODExMTlmMDJjNjYzOGUuLjdlM2JkMzNjOWRkMWM4MzcxNWNj
ZjVkNjU3N2M3YmI1ZDVjNzQxMzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTM0LDYgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFdmVudDsKIGNsYXNzIEZvcm1EYXRh
OworY2xhc3MgRm9ybVN1Ym1pc3Npb247CiBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Owog
Y2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CkBAIC0xMzcs
NyArMTM4LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNNYWlsdG9Gb3JtKCkgY29uc3Q7CiAg
ICAgVGV4dEVuY29kaW5nIGRhdGFFbmNvZGluZygpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IHByZXBhcmVGb3JtRGF0YSgpOworICAgIFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+
IHByZXBhcmVGb3JtU3VibWlzc2lvbihFdmVudCosIGJvb2wgbG9ja0hpc3RvcnksIEZvcm1TdWJt
aXNzaW9uVHJpZ2dlcik7CiAgICAgdW5zaWduZWQgZm9ybUVsZW1lbnRJbmRleChIVE1MRm9ybUNv
bnRyb2xFbGVtZW50Kik7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzdWJtaXNzaW9uIHNo
b3VsZCBiZSBwcm9jZWVkZWQuCiAgICAgYm9vbCB2YWxpZGF0ZUludGVyYWN0aXZlbHkoRXZlbnQq
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBiL1dlYkNv
cmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWE3ZDE3N2ZjNzUyMDky
ZjYwMmQ0NWZkMzE4OTZiYzU0MjhmMTM0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9sb2Fk
ZXIvRm9ybVN1Ym1pc3Npb24uY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRm9ybVN1Ym1pc3Npb24uaCIKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5j
bHVkZSAiRm9ybURhdGEuaCIKKyNpbmNsdWRlICJGb3JtU3RhdGUuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRm9ybVN1Ym1pc3Npb246OkZvcm1TdWJt
aXNzaW9uKE1ldGhvZCBtZXRob2QsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcm
IHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
IHN0YXRlLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkYXRhLCBjb25zdCBTdHJpbmcmIGJvdW5kYXJ5
LCBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKKyAgICA6IG1fbWV0
aG9kKG1ldGhvZCkKKyAgICAsIG1fYWN0aW9uKGFjdGlvbikKKyAgICAsIG1fdGFyZ2V0KHRhcmdl
dCkKKyAgICAsIG1fY29udGVudFR5cGUoY29udGVudFR5cGUpCisgICAgLCBtX2Zvcm1TdGF0ZShz
dGF0ZSkKKyAgICAsIG1fZm9ybURhdGEoZGF0YSkKKyAgICAsIG1fYm91bmRhcnkoYm91bmRhcnkp
CisgICAgLCBtX2xvY2tIaXN0b3J5KGxvY2tIaXN0b3J5KQorICAgICwgbV9ldmVudChldmVudCkK
K3sKK30KKworCitQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBGb3JtU3VibWlzc2lvbjo6Y3Jl
YXRlKE1ldGhvZCBtZXRob2QsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHRh
cmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IHN0
YXRlLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkYXRhLCBjb25zdCBTdHJpbmcmIGJvdW5kYXJ5LCBi
b29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEZvcm1TdWJtaXNzaW9uKG1ldGhvZCwgYWN0aW9uLCB0YXJnZXQsIGNvbnRl
bnRUeXBlLCBzdGF0ZSwgZGF0YSwgYm91bmRhcnksIGxvY2tIaXN0b3J5LCBldmVudCkpOworfQor
Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oIGIvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTViZDM5MzEzYTRhNjBhNWYw
ZDEyMGFiODM4MDU3ZTQ0YjA1MGJmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGb3JtU3VibWlzc2lvbl9o
CisjZGVmaW5lIEZvcm1TdWJtaXNzaW9uX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEV2ZW50OworY2xhc3MgRm9ybURhdGE7Citj
bGFzcyBGb3JtU3RhdGU7CisKK2NsYXNzIEZvcm1TdWJtaXNzaW9uIDogcHVibGljIFJlZkNvdW50
ZWQ8Rm9ybVN1Ym1pc3Npb24+IHsKK3B1YmxpYzoKKyAgICBlbnVtIE1ldGhvZCB7CisgICAgICAg
IEdldE1ldGhvZCwKKyAgICAgICAgUG9zdE1ldGhvZAorICAgIH07CisKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gY3JlYXRlKE1ldGhvZCwgY29uc3QgU3RyaW5nJiBhY3Rp
b24sIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBTdHJpbmcmIGJv
dW5kYXJ5LCBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50Pik7CisKKyAgICBNZXRo
b2QgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9tZXRob2Q7IH0KKyAgICBTdHJpbmcgYWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb247IH0KKyAgICBTdHJpbmcgdGFyZ2V0KCkgY29uc3Qg
eyByZXR1cm4gbV90YXJnZXQ7IH0KKyAgICBTdHJpbmcgY29udGVudFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnRUeXBlOyB9CisgICAgRm9ybVN0YXRlKiBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZm9ybVN0YXRlLmdldCgpOyB9CisgICAgRm9ybURhdGEqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2Zvcm1EYXRhLmdldCgpOyB9CisgICAgU3RyaW5nIGJvdW5kYXJ5KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZGFyeTsgfQorICAgIGJvb2wgbG9ja0hpc3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX2xvY2tIaXN0b3J5OyB9CisgICAgRXZlbnQqIGV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9l
dmVudC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEZvcm1TdWJtaXNzaW9uKE1ldGhvZCwgY29u
c3QgU3RyaW5nJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBj
b25zdCBTdHJpbmcmIGJvdW5kYXJ5LCBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50
Pik7CisKKyAgICBNZXRob2QgbV9tZXRob2Q7CisgICAgU3RyaW5nIG1fYWN0aW9uOworICAgIFN0
cmluZyBtX3RhcmdldDsKKyAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKKyAgICBSZWZQdHI8Rm9y
bVN0YXRlPiBtX2Zvcm1TdGF0ZTsKKyAgICBSZWZQdHI8Rm9ybURhdGE+IG1fZm9ybURhdGE7Cisg
ICAgU3RyaW5nIG1fYm91bmRhcnk7CisgICAgYm9vbCBtX2xvY2tIaXN0b3J5OworICAgIFJlZlB0
cjxFdmVudD4gbV9ldmVudDsKK307CisKK30KKworI2VuZGlmIC8vIEZvcm1TdWJtaXNzaW9uX2gK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA5NzQ1OGZhMGE4ZTVjNDRjODM0YzI5ODEwMDk3YTY5
Mzk4ODRhZDEwLi4xMzUzNzAwMWFmNTIwNGJjZDY0MjU3Mjk4YmZmMDA2YzA3YzQ5MjYxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgorI2lu
Y2x1ZGUgIkZvcm1TdWJtaXNzaW9uLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTQ2
MSwxMCArNDYyLDE5IEBAIEZyYW1lKiBGcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBLVVJMCiAgICAgcmV0dXJuIGZyYW1l
LmdldCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKGNvbnN0IGNoYXIqIGFj
dGlvbiwgY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLAot
ICAgIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGJvdW5kYXJ5LAotICAgIGJvb2wgbG9ja0hpc3RvcnksIFBhc3NSZWZQdHI8RXZl
bnQ+IGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQordm9pZCBGcmFtZUxv
YWRlcjo6c3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBzdWJtaXNzaW9uKQog
eworICAgIC8vIEZJWE1FOiBQbHVtYiB0aGlzIGZ1cnRoZXIgaW4uCisgICAgY29uc3QgY2hhciog
YWN0aW9uID0gc3VibWlzc2lvbi0+bWV0aG9kKCkgPT0gRm9ybVN1Ym1pc3Npb246OlBvc3RNZXRo
b2QgPyAiUE9TVCIgOiAiR0VUIjsKKyAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gc3Vi
bWlzc2lvbi0+ZGF0YSgpOworICAgIFJlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9IHN1Ym1p
c3Npb24tPnN0YXRlKCk7CisgICAgU3RyaW5nIHVybCA9IHN1Ym1pc3Npb24tPmFjdGlvbigpOwor
ICAgIFN0cmluZyB0YXJnZXQgPSBzdWJtaXNzaW9uLT50YXJnZXQoKTsKKyAgICBTdHJpbmcgYm91
bmRhcnkgPSBzdWJtaXNzaW9uLT5ib3VuZGFyeSgpOworICAgIFN0cmluZyBjb250ZW50VHlwZSA9
IHN1Ym1pc3Npb24tPmNvbnRlbnRUeXBlKCk7CisgICAgYm9vbCBsb2NrSGlzdG9yeSA9IHN1Ym1p
c3Npb24tPmxvY2tIaXN0b3J5KCk7CisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IHN1Ym1pc3Np
b24tPmV2ZW50KCk7CisKICAgICBBU1NFUlQoYWN0aW9uKTsKICAgICBBU1NFUlQoc3RyY21wKGFj
dGlvbiwgIkdFVCIpID09IDAgfHwgc3RyY21wKGFjdGlvbiwgIlBPU1QiKSA9PSAwKTsKICAgICBB
U1NFUlQoZm9ybURhdGEpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggMThlMDBiM2FhOTQ2MDI4N2Qz
MGE0YjI2NDg0MjBhNjE4MWQzYWFhNi4uZDUwYzEzZmNmNGVlZDM1N2FhZDYyOTAwMzJiYjgwY2Yx
NjYxYWFkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIERvY3Vt
ZW50TG9hZGVyOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEZvcm1TdGF0
ZTsKK2NsYXNzIEZvcm1TdWJtaXNzaW9uOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRl
ckNsaWVudDsKIGNsYXNzIEhpc3RvcnlJdGVtOwpAQCAtMjI0LDkgKzIyNSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwg
UGFzc1JlZlB0cjxFdmVudD4sIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJk
TGlzdCwgYm9vbCB1c2VyR2VzdHVyZSwgUmVmZXJyZXJQb2xpY3kpOwogICAgIGJvb2wgcmVxdWVz
dEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBB
dG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSA9IHRydWUsIGJvb2wgbG9j
a0JhY2tGb3J3YXJkTGlzdCA9IHRydWUpOwogCi0gICAgdm9pZCBzdWJtaXRGb3JtKGNvbnN0IGNo
YXIqIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB1cmwsCi0gICAgICAgIFBhc3NSZWZQdHI8Rm9ybURh
dGE+LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBib3VuZGFyeSwKLSAgICAgICAgYm9vbCBsb2NrSGlzdG9yeSwgUGFzc1JlZlB0
cjxFdmVudD4sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7CisgICAgdm9pZCBzdWJtaXRGb3JtKFBh
c3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+KTsKIAogICAgIHZvaWQgc3RvcCgpOwogICAgIHZvaWQg
c3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3ksIERhdGFiYXNlUG9saWN5ID0gRGF0YWJhc2VQ
b2xpY3lTdG9wKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58723</attachid>
            <date>2010-06-14 16:09:47 -0700</date>
            <delta_ts>2010-06-15 14:51:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40084-20100614160946.patch</filename>
            <type>text/plain</type>
            <size>24046</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA2MTVjMjg5OTcyMDJhYmJlNTcwOTJjMDc4MmY0NjNkNTY5NzQ4NWZkLi5lMDg5NDgwYTEwNWU0
ZDU2NThiMTIzOTkwNGE3MjBkYzU5MWQwNTdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yOTcsNiArMjk3LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAgXAogCWxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgXAogCWxvYWRlci9Gb3Jt
U3RhdGUuY3BwIFwKKwlsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIFwKIAlsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwIFwKIAlsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIFwKIAlsb2FkZXIvSW1h
Z2VEb2N1bWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBiNWM0MGFjNDg0ZmE1NjhmYjQ5NGZkOTczZWQ2MzNjNjQ4OTk0ZWQw
Li5lOTZjN2MzZjExNTA5NjNkNjVmYjlmZjYzZjljN2E5Y2Y3MDVkNDk3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBA
CisyMDEwLTA2LTE0ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IEZvcm1TdWJtaXNzaW9uLCB0aGUgc3RydWN0dXJlIHJlcHJlc2VudGluZyBhIGZvcm0gc3VibWlz
c2lvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQw
MDg0CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHksIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQgRm9ybVN1Ym1p
c3Npb24uaC9jcHAuCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLnBybzogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
RGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50OjpwcmVwYXJlRm9ybVN1Ym1pc3Npb24pOiBSZW5hbWVkIHBy
ZXBhcmVGb3JtRGF0YSB0byBwcmVwYXJlRm9ybVN1Ym1pc3Npb24sCisgICAgICAgICAgICBhZGRl
ZCBjb2RlIGZvciBwb3B1bGF0aW5nIGEgRm9ybVN1Ym1pc3Npb24gaW5zdGFuY2UsIG1vdmVkIHRo
ZSBsb29wIG9mIGFjY3VtdWxhdGluZyB0ZXh0IGlucHV0CisgICAgICAgICAgICB2YWx1ZXMgaW50
byB0aGlzIGZ1bmN0aW9ucyAoaXQgYmVsb25ncyBoZXJlIGxvZ2ljYWxseSkuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdCk6IE1vZGlmaWVkIHRvIHVzZSBwcmVwYXJl
Rm9ybVN1Ym1pc3Npb24uCisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uaDogQWRkZWQuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKTogTW9kaWZpZWQg
dG8gdXNlIEZvcm1TdWJtaXNzaW9uLiBTdG9wcGVkIHBsdW1iaW5nIGZ1cnRoZXIgdG8ga2VlcAor
ICAgICAgICAgICAgdGhlIHBhdGNoIHNpemUgZG93bi4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuaDogTW9kaWZpZWQgc3VibWl0Rm9ybSBzaWduYXR1cmUuCisKIDIwMTAtMDYtMTQgIER1
bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCA0NzhkM2JiZmE0NmJlMDc0NDA5NzQ1ZmJlOGZiMTY3NjI2
ODZkNWMyLi45OWFjZjEyNDFmYmZhZTkxMjU4YTJjM2Y2ZjU2OTYzYTc4YzQxZTBlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
QEAgLTEzODIsNiArMTM4Miw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9sb2Fk
ZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmggXAogCVdlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5jcHAg
XAogCVdlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5oIFwKKwlXZWJDb3JlL2xvYWRlci9Gb3JtU3Vi
bWlzc2lvbi5jcHAgXAorCVdlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmggXAogCVdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aCBcCiAJV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGI5ZTNmNDY0
YjcyNDhjOTFjN2I1YWNlNzQ1YzI5ZjYwNWQxNTFhNTIuLjZjMTdiMzdkMTYxYmMwNWNiNmY2Mzc1
YmYzNDcyZTc5YjNiNDY5ZDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNzg3LDYgKzE3ODcsOCBAQAogICAgICAgICAgICAg
J2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL0Zvcm1T
dGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9Gb3JtU3RhdGUuaCcsCisgICAgICAgICAg
ICAnbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCcsCisgICAgICAgICAgICAnbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9GcmFtZUxvYWRlci5jcHAnLAogICAg
ICAgICAgICAgJ2xvYWRlci9GcmFtZUxvYWRlci5oJywKICAgICAgICAgICAgICdsb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwppbmRleCAwZTJlMzFiOGNjNmNkZmI2NDgzNjk0NTc1ZjdjZTE1MDU2
ZDZlZWQ4Li43OTEzYjFmNmE2MmQxM2ZmNjU4NzhlODQ4ZTMwMzQwMTQwNTA0NDBiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTcz
OSw2ICs3MzksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcCBcCiAgICAgbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBcCiAgICAgbG9hZGVy
L0Zvcm1TdGF0ZS5jcHAgXAorICAgIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgXAogICAgIGxv
YWRlci9GcmFtZUxvYWRlci5jcHAgXAogICAgIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAg
XAogICAgIGxvYWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOWNiYTIxMzA5NjZiZjg1MWQ4ZjZkMmU3MzNiMGM1MzZm
ODgxMDY5ZS4uYjRiZTkxMzU5ZDE0YmRhNWVlOTgzYzc1NzdiYTYxYmQ2MGQzMjEwZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yMTk1Myw2ICsyMTk1MywxNCBAQAog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2Fk
ZXJcRm9ybVN1Ym1pc3Npb24uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXEZvcm1TdWJtaXNzaW9uLmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcRnJhbWVM
b2FkZXIuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTQ2NmM5ODdkYjFmNzkyNGNlMzU0ZjIzYTM4ZDQwZTA3
ZDUzNjQyZi4uOTcxN2VlNTcyZDg4NTIwMmFhOTBlZmUzNTc4YTFjZDBjYjlhOWM1NSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc3NSw2ICs3NzUsOCBA
QAogCQk0MTZFNzVDQjBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFNzVDOTBFREY5MEM3
MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCTQxNkU3NUNDMEVERjkwQzcw
MDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1Q0EwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENh
bGxGcmFtZS5jcHAgKi87IH07CiAJCTQxNkY0NUYwMEVEN0IzMTEwMDgyMTVCNiAvKiBTY3JpcHRT
dHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NkY0NUVGMEVEN0IzMTEwMDgyMTVCNiAvKiBTY3JpcHRTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTg4NUI5MzExQjZGREE2MDAzMzgz
QkIgLyogRm9ybVN1Ym1pc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5o
ICovOyB9OworCQk0MTg4NUI5NDExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4ODVCOTIx
MUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmNwcCAqLzsgfTsKIAkJNDE4Rjg4MDQw
RkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8q
IEpTQWJzdHJhY3RXb3JrZXIuY3BwICovOyB9OwogCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUg
LyogSlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIu
aCAqLzsgfTsKIAkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRo
cmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLzsg
fTsKQEAgLTYzMzksNiArNjM0MSw4IEBACiAJCTQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBT
Y3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUNBMEVERjkw
QzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE2RjQ1RUYwRUQ3QjMxMTAwODIxNUI2IC8qIFNjcmlwdFN0cmluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTdHJpbmcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDE4ODVCOTExMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNz
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1TdWJtaXNzaW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODg1QjkyMTFCNkZEQTYwMDMzODNCQiAv
KiBGb3JtU3VibWlzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGb3JtU3VibWlzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOEY4
ODAyMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWJzdHJhY3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MThGODgwMzBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFj
dFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Fic3RyYWN0V29y
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTNENThDMTAxQzE1MkQwMDMx
NkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcDsgcGF0aCA9IHdvcmtlcnMv
RGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE1NzEzLDYgKzE1NzE3LDggQEAKIAkJCQlCMjU1OTkwRDBEMDBEOEI5MDBCQjgyNUMgLyogRW1w
dHlDbGllbnRzLmggKi8sCiAJCQkJNjU2RDM3MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0
ZS5jcHAgKi8sCiAJCQkJNjU2RDM3MjIwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5oICov
LAorCQkJCTQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oICovLAor
CQkJCTQxODg1QjkyMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5jcHAgKi8sCiAJ
CQkJOTMyRTE2MDgwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCAqLywKIAkJCQk2
NTZEMzcyNDBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXIuaCAqLywKIAkJCQk2NTZEMzcy
NjBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXJDbGllbnQuaCAqLywKQEAgLTE3OTA1LDYg
KzE3OTExLDcgQEAKIAkJCQlBODEzNkQzODA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY0RTBDRTkyMzRFMDA3RUYzQ0QgLyogRm9ybURh
dGFTdHJlYW1NYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NkQzNzNBMEFEQkE1REUwMEE0NTU0
RCAvKiBGb3JtU3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxODg1QjkzMTFCNkZEQTYwMDMz
ODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NkQwOUFD
NEQ2MzAwQTZBQUI0IC8qIEZvdW5kYXRpb25FeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1
QkYwMjJGMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2
RDM3M0MwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTIwMjQzLDYgKzIwMjUwLDcgQEAKIAkJCQlBODEzNkQzOTA5NzNBOEU3MDBENzQ0NjMgLyogRm9y
bURhdGFMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjRGMENFOTIzNEUwMDdFRjND
RCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTY1NkQzNzNCMEFE
QkE1REUwMEE0NTU0RCAvKiBGb3JtU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4ODVC
OTQxMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTY1QkYwMjJFMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5MzJFMTYwOTBBRjU3ODM0MDAyNUY0MDggLyogRnJhbWVMb2FkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNjVCRjAyNDUwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDE4Y2E5MTYwMzA0ZWIyMWJj
ZDI0ZTcwMGY1NTIyMzc4ZjZjNDFmY2IuLjRhYzg0MDhhOTY4OTEwYWZjNTQwOTVlMjc3N2EzNGZh
NjI5YzI2NDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRl
ICJGb3JtU3RhdGUuaCIKKyNpbmNsdWRlICJGb3JtU3VibWlzc2lvbi5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudC5oIgpAQCAtMjIxLDcgKzIyMiw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RG
b3JtRGF0YVRvVVJMKEtVUkwmIHVybCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0CiAgICAg
dXJsLnNldFF1ZXJ5KHF1ZXJ5KTsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gSFRNTEZvcm1F
bGVtZW50OjpwcmVwYXJlRm9ybURhdGEoKQorUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gSFRN
TEZvcm1FbGVtZW50OjpwcmVwYXJlRm9ybVN1Ym1pc3Npb24oRXZlbnQqIGV2ZW50LCBib29sIGxv
Y2tIaXN0b3J5LCBGb3JtU3VibWlzc2lvblRyaWdnZXIgdHJpZ2dlcikKIHsKICAgICBpZiAobV9m
b3JtRGF0YUJ1aWxkZXIuaXNQb3N0TWV0aG9kKCkpIHsKICAgICAgICAgaWYgKG1fZm9ybURhdGFC
dWlsZGVyLmlzTXVsdGlQYXJ0Rm9ybSgpICYmIGlzTWFpbHRvRm9ybSgpKSB7CkBAIC0yMzMsMzAg
KzIzNCw0MiBAQCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVG
b3JtRGF0YSgpCiAgICAgICAgIG1fZm9ybURhdGFCdWlsZGVyLnNldElzTXVsdGlQYXJ0Rm9ybShm
YWxzZSk7CiAKICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IGRvbUZvcm1EYXRhID0gRE9NRm9ybURh
dGE6OmNyZWF0ZShkYXRhRW5jb2RpbmcoKS5lbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9uKCkpOwor
ICAgIFZlY3RvcjxwYWlyPFN0cmluZywgU3RyaW5nPiA+IGZvcm1WYWx1ZXM7CisKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCA9IG1fYXNzb2NpYXRlZEVs
ZW1lbnRzW2ldOwogICAgICAgICBpZiAoIWNvbnRyb2wtPmRpc2FibGVkKCkpCiAgICAgICAgICAg
ICBjb250cm9sLT5hcHBlbmRGb3JtRGF0YSgqZG9tRm9ybURhdGEsIG1fZm9ybURhdGFCdWlsZGVy
LmlzTXVsdGlQYXJ0Rm9ybSgpKTsKKyAgICAgICAgaWYgKGNvbnRyb2wtPmhhc0xvY2FsTmFtZShp
bnB1dFRhZykpIHsKKyAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGNvbnRyb2wpOworICAgICAgICAgICAgaWYgKGlucHV0
LT5pc1RleHRGaWVsZCgpKSB7CisgICAgICAgICAgICAgICAgZm9ybVZhbHVlcy5hcHBlbmQocGFp
cjxTdHJpbmcsIFN0cmluZz4oaW5wdXQtPm5hbWUoKSwgaW5wdXQtPnZhbHVlKCkpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoaW5wdXQtPmlzU2VhcmNoRmllbGQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgaW5wdXQtPmFkZFNlYXJjaFJlc3VsdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAg
ICAgfQogCi0gICAgUmVmUHRyPEZvcm1EYXRhPiByZXN1bHQ7CisgICAgUmVmUHRyPEZvcm1EYXRh
PiBmb3JtRGF0YTsKKyAgICBTdHJpbmcgYm91bmRhcnk7CiAKICAgICBpZiAobV9mb3JtRGF0YUJ1
aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkpCi0gICAgICAgIHJlc3VsdCA9IEZvcm1EYXRhOjpjcmVh
dGVNdWx0aVBhcnQoZG9tRm9ybURhdGEtPml0ZW1zKCksIGRvbUZvcm1EYXRhLT5lbmNvZGluZygp
LCBkb2N1bWVudCgpKTsKKyAgICAgICAgZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlTXVsdGlQ
YXJ0KGRvbUZvcm1EYXRhLT5pdGVtcygpLCBkb21Gb3JtRGF0YS0+ZW5jb2RpbmcoKSwgZG9jdW1l
bnQoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHJlc3VsdCA9IEZvcm1EYXRhOjpjcmVhdGUoZG9t
Rm9ybURhdGEtPml0ZW1zKCksIGRvbUZvcm1EYXRhLT5lbmNvZGluZygpKTsKKyAgICAgICAgZm9y
bURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKGRvbUZvcm1EYXRhLT5pdGVtcygpLCBkb21Gb3JtRGF0
YS0+ZW5jb2RpbmcoKSk7CiAgICAgICAgIGlmIChtX2Zvcm1EYXRhQnVpbGRlci5pc1Bvc3RNZXRo
b2QoKSAmJiBpc01haWx0b0Zvcm0oKSkgewogICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgZm9y
bSBkYXRhIGludG8gYSBzdHJpbmcgdGhhdCB3ZSBwdXQgaW50byB0aGUgVVJMLgogICAgICAgICAg
ICAgS1VSTCB1cmwgPSBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChtX3VybCk7Ci0gICAgICAgICAg
ICBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTCh1cmwsICpyZXN1bHQsIG1fZm9ybURhdGFC
dWlsZGVyLmVuY29kaW5nVHlwZSgpKTsKKyAgICAgICAgICAgIGFwcGVuZE1haWx0b1Bvc3RGb3Jt
RGF0YVRvVVJMKHVybCwgKmZvcm1EYXRhLCBtX2Zvcm1EYXRhQnVpbGRlci5lbmNvZGluZ1R5cGUo
KSk7CiAgICAgICAgICAgICBtX3VybCA9IHVybC5zdHJpbmcoKTsKIAotICAgICAgICAgICAgcmVz
dWx0ID0gRm9ybURhdGE6OmNyZWF0ZSgpOworICAgICAgICAgICAgZm9ybURhdGEgPSBGb3JtRGF0
YTo6Y3JlYXRlKCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXN1bHQtPnNldElkZW50aWZp
ZXIoZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxl
YXNlKCk7CisgICAgZm9ybURhdGEtPnNldElkZW50aWZpZXIoZ2VuZXJhdGVGb3JtRGF0YUlkZW50
aWZpZXIoKSk7CisgICAgRm9ybVN1Ym1pc3Npb246Ok1ldGhvZCBtZXRob2QgPSBtX2Zvcm1EYXRh
QnVpbGRlci5pc1Bvc3RNZXRob2QoKSA/IEZvcm1TdWJtaXNzaW9uOjpQb3N0TWV0aG9kIDogRm9y
bVN1Ym1pc3Npb246OkdldE1ldGhvZDsKKyAgICByZXR1cm4gRm9ybVN1Ym1pc3Npb246OmNyZWF0
ZShtZXRob2QsIG1fdXJsLCBtX3RhcmdldCwgbV9mb3JtRGF0YUJ1aWxkZXIuZW5jb2RpbmdUeXBl
KCksIEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGZvcm1WYWx1ZXMsIGRvY3VtZW50KCktPmZyYW1l
KCksIHRyaWdnZXIpLCBmb3JtRGF0YS5yZWxlYXNlKCksIGJvdW5kYXJ5LCBsb2NrSGlzdG9yeSwg
ZXZlbnQpOwogfQogCiBib29sIEhUTUxGb3JtRWxlbWVudDo6aXNNYWlsdG9Gb3JtKCkgY29uc3QK
QEAgLTM3MywxOCArMzg2LDggQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdChFdmVudCog
ZXZlbnQsIGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24sIGJvb2wgbG9ja0gKICAgICBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50KiBmaXJzdFN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24gPSAwOwogICAgIGJv
b2wgbmVlZEJ1dHRvbkFjdGl2YXRpb24gPSBhY3RpdmF0ZVN1Ym1pdEJ1dHRvbjsgLy8gZG8gd2Ug
bmVlZCB0byBhY3RpdmF0ZSBhIHN1Ym1pdCBidXR0b24/CiAgICAgCi0gICAgVmVjdG9yPHBhaXI8
U3RyaW5nLCBTdHJpbmc+ID4gZm9ybVZhbHVlczsKLQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50KiBjb250cm9sID0gbV9hc3NvY2lhdGVkRWxlbWVudHNbaV07Ci0gICAg
ICAgIGlmIChjb250cm9sLT5oYXNMb2NhbE5hbWUoaW5wdXRUYWcpKSB7Ci0gICAgICAgICAgICBI
VE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihj
b250cm9sKTsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNUZXh0RmllbGQoKSkgewotICAgICAg
ICAgICAgICAgIGZvcm1WYWx1ZXMuYXBwZW5kKHBhaXI8U3RyaW5nLCBTdHJpbmc+KGlucHV0LT5u
YW1lKCksIGlucHV0LT52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGlucHV0LT5pc1Nl
YXJjaEZpZWxkKCkpCi0gICAgICAgICAgICAgICAgICAgIGlucHV0LT5hZGRTZWFyY2hSZXN1bHQo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgICAgICBpZiAobmVlZEJ1dHRvbkFjdGl2
YXRpb24pIHsKICAgICAgICAgICAgIGlmIChjb250cm9sLT5pc0FjdGl2YXRlZFN1Ym1pdCgpKQog
ICAgICAgICAgICAgICAgIG5lZWRCdXR0b25BY3RpdmF0aW9uID0gZmFsc2U7CkBAIC0zOTMsMTgg
KzM5NiwxMyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6c3VibWl0KEV2ZW50KiBldmVudCwgYm9v
bCBhY3RpdmF0ZVN1Ym1pdEJ1dHRvbiwgYm9vbCBsb2NrSAogICAgICAgICB9CiAgICAgfQogCi0g
ICAgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlID0gRm9ybVN0YXRlOjpjcmVhdGUodGhpcywg
Zm9ybVZhbHVlcywgZnJhbWUsIGZvcm1TdWJtaXNzaW9uVHJpZ2dlcik7Ci0KICAgICBpZiAobmVl
ZEJ1dHRvbkFjdGl2YXRpb24gJiYgZmlyc3RTdWNjZXNzZnVsU3VibWl0QnV0dG9uKQogICAgICAg
ICBmaXJzdFN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24tPnNldEFjdGl2YXRlZFN1Ym1pdCh0cnVlKTsK
ICAgICAKICAgICBpZiAobV91cmwuaXNFbXB0eSgpKQogICAgICAgICBtX3VybCA9IGRvY3VtZW50
KCktPnVybCgpLnN0cmluZygpOwogCi0gICAgUmVmUHRyPEZvcm1EYXRhPiBkYXRhID0gcHJlcGFy
ZUZvcm1EYXRhKCk7Ci0gICAgU3RyaW5nIGJvdW5kYXJ5ID0gbV9mb3JtRGF0YUJ1aWxkZXIuaXNN
dWx0aVBhcnRGb3JtKCkgPyBkYXRhLT5ib3VuZGFyeSgpLmRhdGEoKSA6IFN0cmluZygpOwotICAg
IGNvbnN0IGNoYXIqIG1ldGhvZCA9IG1fZm9ybURhdGFCdWlsZGVyLmlzUG9zdE1ldGhvZCgpID8g
IlBPU1QiIDogIkdFVCI7Ci0gICAgZnJhbWUtPmxvYWRlcigpLT5zdWJtaXRGb3JtKG1ldGhvZCwg
bV91cmwsIGRhdGEucmVsZWFzZSgpLCBtX3RhcmdldCwgbV9mb3JtRGF0YUJ1aWxkZXIuZW5jb2Rp
bmdUeXBlKCksIGJvdW5kYXJ5LCBsb2NrSGlzdG9yeSwgZXZlbnQsIGZvcm1TdGF0ZS5yZWxlYXNl
KCkpOworICAgIGZyYW1lLT5sb2FkZXIoKS0+c3VibWl0Rm9ybShwcmVwYXJlRm9ybVN1Ym1pc3Np
b24oZXZlbnQsIGxvY2tIaXN0b3J5LCBmb3JtU3VibWlzc2lvblRyaWdnZXIpKTsKIAogICAgIGlm
IChuZWVkQnV0dG9uQWN0aXZhdGlvbiAmJiBmaXJzdFN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24pCiAg
ICAgICAgIGZpcnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbi0+c2V0QWN0aXZhdGVkU3VibWl0KGZh
bHNlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBiL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAppbmRleCBhYWY3NzNiYmFhMTExODc5YmIwNmRkODAx
ZjgxMTE5ZjAyYzY2MzhlLi43ZTNiZDMzYzlkZDFjODM3MTVjY2Y1ZDY1NzdjN2JiNWQ1Yzc0MTM4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGb3JtRGF0YTsKK2NsYXNzIEZvcm1TdWJtaXNz
aW9uOwogY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1l
bnQ7CiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwpAQCAtMTM3LDcgKzEzOCw3IEBAIHByaXZhdGU6
CiAKICAgICBib29sIGlzTWFpbHRvRm9ybSgpIGNvbnN0OwogICAgIFRleHRFbmNvZGluZyBkYXRh
RW5jb2RpbmcoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiBwcmVwYXJlRm9ybURh
dGEoKTsKKyAgICBQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBwcmVwYXJlRm9ybVN1Ym1pc3Np
b24oRXZlbnQqLCBib29sIGxvY2tIaXN0b3J5LCBGb3JtU3VibWlzc2lvblRyaWdnZXIpOwogICAg
IHVuc2lnbmVkIGZvcm1FbGVtZW50SW5kZXgoSFRNTEZvcm1Db250cm9sRWxlbWVudCopOwogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3VibWlzc2lvbiBzaG91bGQgYmUgcHJvY2VlZGVkLgog
ICAgIGJvb2wgdmFsaWRhdGVJbnRlcmFjdGl2ZWx5KEV2ZW50Kik7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlz
c2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGVhN2QxNzdmYzc1MjA5MmY2MDJkNDVmZDMxODk2YmM1NDI4
ZjEzNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNw
cApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZvcm1TdWJt
aXNzaW9uLmgiCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkZvcm1EYXRhLmgiCisj
aW5jbHVkZSAiRm9ybVN0YXRlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1M
Rm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0Zvcm1TdWJtaXNzaW9uOjpGb3JtU3VibWlzc2lvbihNZXRob2QgbWV0aG9k
LCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBzdGF0ZSwgUGFzc1JlZlB0cjxG
b3JtRGF0YT4gZGF0YSwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwgYm9vbCBsb2NrSGlzdG9yeSwg
UGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCisgICAgOiBtX21ldGhvZChtZXRob2QpCisgICAgLCBt
X2FjdGlvbihhY3Rpb24pCisgICAgLCBtX3RhcmdldCh0YXJnZXQpCisgICAgLCBtX2NvbnRlbnRU
eXBlKGNvbnRlbnRUeXBlKQorICAgICwgbV9mb3JtU3RhdGUoc3RhdGUpCisgICAgLCBtX2Zvcm1E
YXRhKGRhdGEpCisgICAgLCBtX2JvdW5kYXJ5KGJvdW5kYXJ5KQorICAgICwgbV9sb2NrSGlzdG9y
eShsb2NrSGlzdG9yeSkKKyAgICAsIG1fZXZlbnQoZXZlbnQpCit7Cit9CisKKworUGFzc1JlZlB0
cjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShNZXRob2QgbWV0aG9kLCBj
b25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBzdGF0ZSwgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gZGF0YSwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwgYm9vbCBsb2NrSGlzdG9yeSwgUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGb3JtU3Vi
bWlzc2lvbihtZXRob2QsIGFjdGlvbiwgdGFyZ2V0LCBjb250ZW50VHlwZSwgc3RhdGUsIGRhdGEs
IGJvdW5kYXJ5LCBsb2NrSGlzdG9yeSwgZXZlbnQpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaCBiL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDk1YmQzOTMxM2E0YTYwYTVmMGQxMjBhYjgzODA1N2U0NGIwNTBi
ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKQEAg
LTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgRm9ybVN1Ym1pc3Npb25faAorI2RlZmluZSBGb3JtU3VibWlz
c2lvbl9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBFdmVudDsKK2NsYXNzIEZvcm1EYXRhOworY2xhc3MgRm9ybVN0YXRlOworCitj
bGFzcyBGb3JtU3VibWlzc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEZvcm1TdWJtaXNzaW9uPiB7
CitwdWJsaWM6CisgICAgZW51bSBNZXRob2QgeworICAgICAgICBHZXRNZXRob2QsCisgICAgICAg
IFBvc3RNZXRob2QKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Np
b24+IGNyZWF0ZShNZXRob2QsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHRh
cmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwgYm9vbCBsb2NrSGlz
dG9yeSwgUGFzc1JlZlB0cjxFdmVudD4pOworCisgICAgTWV0aG9kIG1ldGhvZCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWV0aG9kOyB9CisgICAgU3RyaW5nIGFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
YWN0aW9uOyB9CisgICAgU3RyaW5nIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0OyB9
CisgICAgU3RyaW5nIGNvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50VHlwZTsg
fQorICAgIEZvcm1TdGF0ZSogc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1TdGF0ZS5nZXQo
KTsgfQorICAgIEZvcm1EYXRhKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9mb3JtRGF0YS5nZXQo
KTsgfQorICAgIFN0cmluZyBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0K
KyAgICBib29sIGxvY2tIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9sb2NrSGlzdG9yeTsgfQor
ICAgIEV2ZW50KiBldmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnQuZ2V0KCk7IH0KKworcHJp
dmF0ZToKKyAgICBGb3JtU3VibWlzc2lvbihNZXRob2QsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBj
b25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0
cjxGb3JtU3RhdGU+LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgU3RyaW5nJiBib3VuZGFy
eSwgYm9vbCBsb2NrSGlzdG9yeSwgUGFzc1JlZlB0cjxFdmVudD4pOworCisgICAgTWV0aG9kIG1f
bWV0aG9kOworICAgIFN0cmluZyBtX2FjdGlvbjsKKyAgICBTdHJpbmcgbV90YXJnZXQ7CisgICAg
U3RyaW5nIG1fY29udGVudFR5cGU7CisgICAgUmVmUHRyPEZvcm1TdGF0ZT4gbV9mb3JtU3RhdGU7
CisgICAgUmVmUHRyPEZvcm1EYXRhPiBtX2Zvcm1EYXRhOworICAgIFN0cmluZyBtX2JvdW5kYXJ5
OworICAgIGJvb2wgbV9sb2NrSGlzdG9yeTsKKyAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7Cit9
OworCit9CisKKyNlbmRpZiAvLyBGb3JtU3VibWlzc2lvbl9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggOTc0NThmYTBhOGU1YzQ0YzgzNGMyOTgxMDA5N2E2OTM5ODg0YWQxMC4uMTM1MzcwMDFh
ZjUyMDRiY2Q2NDI1NzI5OGJmZjAwNmMwN2M0OTI2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApA
QCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIKKyNpbmNsdWRlICJGb3JtU3VibWlzc2lv
bi5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC00NjEsMTAgKzQ2MiwxOSBAQCBGcmFt
ZSogRnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVy
RWxlbWVudCwgY29uc3QgS1VSTAogICAgIHJldHVybiBmcmFtZS5nZXQoKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlcjo6c3VibWl0Rm9ybShjb25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0IFN0cmluZyYg
dXJsLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwKLSAgICBjb25zdCBTdHJpbmcmIHRh
cmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwK
LSAgICBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgUGFzc1JlZlB0
cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSkKK3ZvaWQgRnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0oUGFz
c1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlzc2lvbikKIHsKKyAgICAvLyBGSVhNRTogUGx1
bWIgdGhpcyBmdXJ0aGVyIGluLgorICAgIGNvbnN0IGNoYXIqIGFjdGlvbiA9IHN1Ym1pc3Npb24t
Pm1ldGhvZCgpID09IEZvcm1TdWJtaXNzaW9uOjpQb3N0TWV0aG9kID8gIlBPU1QiIDogIkdFVCI7
CisgICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9IHN1Ym1pc3Npb24tPmRhdGEoKTsKKyAg
ICBSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUgPSBzdWJtaXNzaW9uLT5zdGF0ZSgpOworICAg
IFN0cmluZyB1cmwgPSBzdWJtaXNzaW9uLT5hY3Rpb24oKTsKKyAgICBTdHJpbmcgdGFyZ2V0ID0g
c3VibWlzc2lvbi0+dGFyZ2V0KCk7CisgICAgU3RyaW5nIGJvdW5kYXJ5ID0gc3VibWlzc2lvbi0+
Ym91bmRhcnkoKTsKKyAgICBTdHJpbmcgY29udGVudFR5cGUgPSBzdWJtaXNzaW9uLT5jb250ZW50
VHlwZSgpOworICAgIGJvb2wgbG9ja0hpc3RvcnkgPSBzdWJtaXNzaW9uLT5sb2NrSGlzdG9yeSgp
OworICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBzdWJtaXNzaW9uLT5ldmVudCgpOworCiAgICAg
QVNTRVJUKGFjdGlvbik7CiAgICAgQVNTRVJUKHN0cmNtcChhY3Rpb24sICJHRVQiKSA9PSAwIHx8
IHN0cmNtcChhY3Rpb24sICJQT1NUIikgPT0gMCk7CiAgICAgQVNTRVJUKGZvcm1EYXRhKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCmluZGV4IDE4ZTAwYjNhYTk0NjAyODdkMzBhNGIyNjQ4NDIwYTYxODFkM2Fh
YTYuLmQ1MGMxM2ZjZjRlZWQzNTdhYWQ2MjkwMDMyYmI4MGNmMTY2MWFhZDIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaApAQCAtNTcsNiArNTcsNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEV2
ZW50OwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBGb3JtU3RhdGU7CitjbGFzcyBGb3JtU3VibWlz
c2lvbjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQ7CiBjbGFzcyBIaXN0
b3J5SXRlbTsKQEAgLTIyNCw5ICsyMjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cmxTZWxlY3Rl
ZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIFBhc3NSZWZQdHI8RXZlbnQ+LCBi
b29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgdXNlckdlc3R1
cmUsIFJlZmVycmVyUG9saWN5KTsKICAgICBib29sIHJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25l
ckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5h
bWUsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QgPSB0
cnVlKTsKIAotICAgIHZvaWQgc3VibWl0Rm9ybShjb25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0IFN0
cmluZyYgdXJsLAotICAgICAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgU3RyaW5nJiB0
YXJnZXQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgYm91bmRhcnks
Ci0gICAgICAgIGJvb2wgbG9ja0hpc3RvcnksIFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4pOworICAgIHZvaWQgc3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNz
aW9uPik7CiAKICAgICB2b2lkIHN0b3AoKTsKICAgICB2b2lkIHN0b3BMb2FkaW5nKFVubG9hZEV2
ZW50UG9saWN5LCBEYXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5U3RvcCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58823</attachid>
            <date>2010-06-15 14:51:50 -0700</date>
            <delta_ts>2010-06-15 15:31:35 -0700</delta_ts>
            <desc>Actually working patch</desc>
            <filename>bug-40084-20100615145148.patch</filename>
            <type>text/plain</type>
            <size>24157</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA2MTVjMjg5OTcyMDJhYmJlNTcwOTJjMDc4MmY0NjNkNTY5NzQ4NWZkLi5lMDg5NDgwYTEwNWU0
ZDU2NThiMTIzOTkwNGE3MjBkYzU5MWQwNTdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yOTcsNiArMjk3LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAgXAogCWxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgXAogCWxvYWRlci9Gb3Jt
U3RhdGUuY3BwIFwKKwlsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIFwKIAlsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwIFwKIAlsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIFwKIAlsb2FkZXIvSW1h
Z2VEb2N1bWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBiNWM0MGFjNDg0ZmE1NjhmYjQ5NGZkOTczZWQ2MzNjNjQ4OTk0ZWQw
Li5lOTZjN2MzZjExNTA5NjNkNjVmYjlmZjYzZjljN2E5Y2Y3MDVkNDk3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBA
CisyMDEwLTA2LTE0ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IEZvcm1TdWJtaXNzaW9uLCB0aGUgc3RydWN0dXJlIHJlcHJlc2VudGluZyBhIGZvcm0gc3VibWlz
c2lvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQw
MDg0CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHksIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQgRm9ybVN1Ym1p
c3Npb24uaC9jcHAuCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLnBybzogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
RGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50OjpwcmVwYXJlRm9ybVN1Ym1pc3Npb24pOiBSZW5hbWVkIHBy
ZXBhcmVGb3JtRGF0YSB0byBwcmVwYXJlRm9ybVN1Ym1pc3Npb24sCisgICAgICAgICAgICBhZGRl
ZCBjb2RlIGZvciBwb3B1bGF0aW5nIGEgRm9ybVN1Ym1pc3Npb24gaW5zdGFuY2UsIG1vdmVkIHRo
ZSBsb29wIG9mIGFjY3VtdWxhdGluZyB0ZXh0IGlucHV0CisgICAgICAgICAgICB2YWx1ZXMgaW50
byB0aGlzIGZ1bmN0aW9ucyAoaXQgYmVsb25ncyBoZXJlIGxvZ2ljYWxseSkuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdCk6IE1vZGlmaWVkIHRvIHVzZSBwcmVwYXJl
Rm9ybVN1Ym1pc3Npb24uCisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uaDogQWRkZWQuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKTogTW9kaWZpZWQg
dG8gdXNlIEZvcm1TdWJtaXNzaW9uLiBTdG9wcGVkIHBsdW1iaW5nIGZ1cnRoZXIgdG8ga2VlcAor
ICAgICAgICAgICAgdGhlIHBhdGNoIHNpemUgZG93bi4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuaDogTW9kaWZpZWQgc3VibWl0Rm9ybSBzaWduYXR1cmUuCisKIDIwMTAtMDYtMTQgIER1
bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCA0NzhkM2JiZmE0NmJlMDc0NDA5NzQ1ZmJlOGZiMTY3NjI2
ODZkNWMyLi45OWFjZjEyNDFmYmZhZTkxMjU4YTJjM2Y2ZjU2OTYzYTc4YzQxZTBlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
QEAgLTEzODIsNiArMTM4Miw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9sb2Fk
ZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmggXAogCVdlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5jcHAg
XAogCVdlYkNvcmUvbG9hZGVyL0Zvcm1TdGF0ZS5oIFwKKwlXZWJDb3JlL2xvYWRlci9Gb3JtU3Vi
bWlzc2lvbi5jcHAgXAorCVdlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmggXAogCVdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aCBcCiAJV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGI5ZTNmNDY0
YjcyNDhjOTFjN2I1YWNlNzQ1YzI5ZjYwNWQxNTFhNTIuLjZjMTdiMzdkMTYxYmMwNWNiNmY2Mzc1
YmYzNDcyZTc5YjNiNDY5ZDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNzg3LDYgKzE3ODcsOCBAQAogICAgICAgICAgICAg
J2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL0Zvcm1T
dGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9Gb3JtU3RhdGUuaCcsCisgICAgICAgICAg
ICAnbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCcsCisgICAgICAgICAgICAnbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9GcmFtZUxvYWRlci5jcHAnLAogICAg
ICAgICAgICAgJ2xvYWRlci9GcmFtZUxvYWRlci5oJywKICAgICAgICAgICAgICdsb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwppbmRleCAwZTJlMzFiOGNjNmNkZmI2NDgzNjk0NTc1ZjdjZTE1MDU2
ZDZlZWQ4Li43OTEzYjFmNmE2MmQxM2ZmNjU4NzhlODQ4ZTMwMzQwMTQwNTA0NDBiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTcz
OSw2ICs3MzksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcCBcCiAgICAgbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBcCiAgICAgbG9hZGVy
L0Zvcm1TdGF0ZS5jcHAgXAorICAgIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgXAogICAgIGxv
YWRlci9GcmFtZUxvYWRlci5jcHAgXAogICAgIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAg
XAogICAgIGxvYWRlci9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOWNiYTIxMzA5NjZiZjg1MWQ4ZjZkMmU3MzNiMGM1MzZm
ODgxMDY5ZS4uYjRiZTkxMzU5ZDE0YmRhNWVlOTgzYzc1NzdiYTYxYmQ2MGQzMjEwZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yMTk1Myw2ICsyMTk1MywxNCBAQAog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2Fk
ZXJcRm9ybVN1Ym1pc3Npb24uY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXEZvcm1TdWJtaXNzaW9uLmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcRnJhbWVM
b2FkZXIuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTQ2NmM5ODdkYjFmNzkyNGNlMzU0ZjIzYTM4ZDQwZTA3
ZDUzNjQyZi4uOTcxN2VlNTcyZDg4NTIwMmFhOTBlZmUzNTc4YTFjZDBjYjlhOWM1NSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc3NSw2ICs3NzUsOCBA
QAogCQk0MTZFNzVDQjBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFNzVDOTBFREY5MEM3
MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCTQxNkU3NUNDMEVERjkwQzcw
MDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1Q0EwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENh
bGxGcmFtZS5jcHAgKi87IH07CiAJCTQxNkY0NUYwMEVEN0IzMTEwMDgyMTVCNiAvKiBTY3JpcHRT
dHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NkY0NUVGMEVEN0IzMTEwMDgyMTVCNiAvKiBTY3JpcHRTdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTg4NUI5MzExQjZGREE2MDAzMzgz
QkIgLyogRm9ybVN1Ym1pc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5o
ICovOyB9OworCQk0MTg4NUI5NDExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4ODVCOTIx
MUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmNwcCAqLzsgfTsKIAkJNDE4Rjg4MDQw
RkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8q
IEpTQWJzdHJhY3RXb3JrZXIuY3BwICovOyB9OwogCQk0MThGODgwNTBGRjk1N0FGMDA4MEYwNDUg
LyogSlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIu
aCAqLzsgfTsKIAkJNDFBM0Q1OEUxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRo
cmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCAqLzsg
fTsKQEAgLTYzMzksNiArNjM0MSw4IEBACiAJCTQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBT
Y3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUNBMEVERjkw
QzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE2RjQ1RUYwRUQ3QjMxMTAwODIxNUI2IC8qIFNjcmlwdFN0cmluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRTdHJpbmcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDE4ODVCOTExMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNz
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1TdWJtaXNzaW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODg1QjkyMTFCNkZEQTYwMDMzODNCQiAv
KiBGb3JtU3VibWlzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGb3JtU3VibWlzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOEY4
ODAyMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWJzdHJhY3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MThGODgwMzBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFj
dFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Fic3RyYWN0V29y
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTNENThDMTAxQzE1MkQwMDMx
NkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcDsgcGF0aCA9IHdvcmtlcnMv
RGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE1NzEzLDYgKzE1NzE3LDggQEAKIAkJCQlCMjU1OTkwRDBEMDBEOEI5MDBCQjgyNUMgLyogRW1w
dHlDbGllbnRzLmggKi8sCiAJCQkJNjU2RDM3MjMwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0
ZS5jcHAgKi8sCiAJCQkJNjU2RDM3MjIwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5oICov
LAorCQkJCTQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oICovLAor
CQkJCTQxODg1QjkyMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5jcHAgKi8sCiAJ
CQkJOTMyRTE2MDgwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCAqLywKIAkJCQk2
NTZEMzcyNDBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXIuaCAqLywKIAkJCQk2NTZEMzcy
NjBBREJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXJDbGllbnQuaCAqLywKQEAgLTE3OTA1LDYg
KzE3OTExLDcgQEAKIAkJCQlBODEzNkQzODA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY0RTBDRTkyMzRFMDA3RUYzQ0QgLyogRm9ybURh
dGFTdHJlYW1NYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NkQzNzNBMEFEQkE1REUwMEE0NTU0
RCAvKiBGb3JtU3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxODg1QjkzMTFCNkZEQTYwMDMz
ODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NkQwOUFD
NEQ2MzAwQTZBQUI0IC8qIEZvdW5kYXRpb25FeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1
QkYwMjJGMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2
RDM3M0MwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTIwMjQzLDYgKzIwMjUwLDcgQEAKIAkJCQlBODEzNkQzOTA5NzNBOEU3MDBENzQ0NjMgLyogRm9y
bURhdGFMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjRGMENFOTIzNEUwMDdFRjND
RCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTY1NkQzNzNCMEFE
QkE1REUwMEE0NTU0RCAvKiBGb3JtU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4ODVC
OTQxMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTY1QkYwMjJFMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5MzJFMTYwOTBBRjU3ODM0MDAyNUY0MDggLyogRnJhbWVMb2FkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNjVCRjAyNDUwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDE4Y2E5MTYwMzA0ZWIyMWJj
ZDI0ZTcwMGY1NTIyMzc4ZjZjNDFmY2IuLjY1NDhmMWNhNmQxZWFmOTQ5ZDM0MTAwMzY1MTIyODZm
NGYzNmE1NmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRl
ICJGb3JtU3RhdGUuaCIKKyNpbmNsdWRlICJGb3JtU3VibWlzc2lvbi5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudC5oIgpAQCAtMjIxLDcgKzIyMiw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RG
b3JtRGF0YVRvVVJMKEtVUkwmIHVybCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0CiAgICAg
dXJsLnNldFF1ZXJ5KHF1ZXJ5KTsKIH0KIAotUGFzc1JlZlB0cjxGb3JtRGF0YT4gSFRNTEZvcm1F
bGVtZW50OjpwcmVwYXJlRm9ybURhdGEoKQorUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gSFRN
TEZvcm1FbGVtZW50OjpwcmVwYXJlRm9ybVN1Ym1pc3Npb24oRXZlbnQqIGV2ZW50LCBib29sIGxv
Y2tIaXN0b3J5LCBGb3JtU3VibWlzc2lvblRyaWdnZXIgdHJpZ2dlcikKIHsKICAgICBpZiAobV9m
b3JtRGF0YUJ1aWxkZXIuaXNQb3N0TWV0aG9kKCkpIHsKICAgICAgICAgaWYgKG1fZm9ybURhdGFC
dWlsZGVyLmlzTXVsdGlQYXJ0Rm9ybSgpICYmIGlzTWFpbHRvRm9ybSgpKSB7CkBAIC0yMzMsMzAg
KzIzNCw0MyBAQCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBIVE1MRm9ybUVsZW1lbnQ6OnByZXBhcmVG
b3JtRGF0YSgpCiAgICAgICAgIG1fZm9ybURhdGFCdWlsZGVyLnNldElzTXVsdGlQYXJ0Rm9ybShm
YWxzZSk7CiAKICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IGRvbUZvcm1EYXRhID0gRE9NRm9ybURh
dGE6OmNyZWF0ZShkYXRhRW5jb2RpbmcoKS5lbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9uKCkpOwor
ICAgIFZlY3RvcjxwYWlyPFN0cmluZywgU3RyaW5nPiA+IGZvcm1WYWx1ZXM7CisKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbCA9IG1fYXNzb2NpYXRlZEVs
ZW1lbnRzW2ldOwogICAgICAgICBpZiAoIWNvbnRyb2wtPmRpc2FibGVkKCkpCiAgICAgICAgICAg
ICBjb250cm9sLT5hcHBlbmRGb3JtRGF0YSgqZG9tRm9ybURhdGEsIG1fZm9ybURhdGFCdWlsZGVy
LmlzTXVsdGlQYXJ0Rm9ybSgpKTsKKyAgICAgICAgaWYgKGNvbnRyb2wtPmhhc0xvY2FsTmFtZShp
bnB1dFRhZykpIHsKKyAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGNvbnRyb2wpOworICAgICAgICAgICAgaWYgKGlucHV0
LT5pc1RleHRGaWVsZCgpKSB7CisgICAgICAgICAgICAgICAgZm9ybVZhbHVlcy5hcHBlbmQocGFp
cjxTdHJpbmcsIFN0cmluZz4oaW5wdXQtPm5hbWUoKSwgaW5wdXQtPnZhbHVlKCkpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoaW5wdXQtPmlzU2VhcmNoRmllbGQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgaW5wdXQtPmFkZFNlYXJjaFJlc3VsdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAg
ICAgfQogCi0gICAgUmVmUHRyPEZvcm1EYXRhPiByZXN1bHQ7CisgICAgUmVmUHRyPEZvcm1EYXRh
PiBmb3JtRGF0YTsKKyAgICBTdHJpbmcgYm91bmRhcnk7CiAKLSAgICBpZiAobV9mb3JtRGF0YUJ1
aWxkZXIuaXNNdWx0aVBhcnRGb3JtKCkpCi0gICAgICAgIHJlc3VsdCA9IEZvcm1EYXRhOjpjcmVh
dGVNdWx0aVBhcnQoZG9tRm9ybURhdGEtPml0ZW1zKCksIGRvbUZvcm1EYXRhLT5lbmNvZGluZygp
LCBkb2N1bWVudCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgcmVzdWx0ID0gRm9ybURhdGE6OmNy
ZWF0ZShkb21Gb3JtRGF0YS0+aXRlbXMoKSwgZG9tRm9ybURhdGEtPmVuY29kaW5nKCkpOworICAg
IGlmIChtX2Zvcm1EYXRhQnVpbGRlci5pc011bHRpUGFydEZvcm0oKSkgeworICAgICAgICBmb3Jt
RGF0YSA9IEZvcm1EYXRhOjpjcmVhdGVNdWx0aVBhcnQoZG9tRm9ybURhdGEtPml0ZW1zKCksIGRv
bUZvcm1EYXRhLT5lbmNvZGluZygpLCBkb2N1bWVudCgpKTsKKyAgICAgICAgYm91bmRhcnkgPSBm
b3JtRGF0YS0+Ym91bmRhcnkoKS5kYXRhKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9ybURh
dGEgPSBGb3JtRGF0YTo6Y3JlYXRlKGRvbUZvcm1EYXRhLT5pdGVtcygpLCBkb21Gb3JtRGF0YS0+
ZW5jb2RpbmcoKSk7CiAgICAgICAgIGlmIChtX2Zvcm1EYXRhQnVpbGRlci5pc1Bvc3RNZXRob2Qo
KSAmJiBpc01haWx0b0Zvcm0oKSkgewogICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgZm9ybSBk
YXRhIGludG8gYSBzdHJpbmcgdGhhdCB3ZSBwdXQgaW50byB0aGUgVVJMLgogICAgICAgICAgICAg
S1VSTCB1cmwgPSBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChtX3VybCk7Ci0gICAgICAgICAgICBh
cHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTCh1cmwsICpyZXN1bHQsIG1fZm9ybURhdGFCdWls
ZGVyLmVuY29kaW5nVHlwZSgpKTsKKyAgICAgICAgICAgIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0
YVRvVVJMKHVybCwgKmZvcm1EYXRhLCBtX2Zvcm1EYXRhQnVpbGRlci5lbmNvZGluZ1R5cGUoKSk7
CiAgICAgICAgICAgICBtX3VybCA9IHVybC5zdHJpbmcoKTsKIAotICAgICAgICAgICAgcmVzdWx0
ID0gRm9ybURhdGE6OmNyZWF0ZSgpOworICAgICAgICAgICAgZm9ybURhdGEgPSBGb3JtRGF0YTo6
Y3JlYXRlKCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXN1bHQtPnNldElkZW50aWZpZXIo
Z2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CisgICAgZm9ybURhdGEtPnNldElkZW50aWZpZXIoZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZp
ZXIoKSk7CisgICAgRm9ybVN1Ym1pc3Npb246Ok1ldGhvZCBtZXRob2QgPSBtX2Zvcm1EYXRhQnVp
bGRlci5pc1Bvc3RNZXRob2QoKSA/IEZvcm1TdWJtaXNzaW9uOjpQb3N0TWV0aG9kIDogRm9ybVN1
Ym1pc3Npb246OkdldE1ldGhvZDsKKyAgICByZXR1cm4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZSht
ZXRob2QsIG1fdXJsLCBtX3RhcmdldCwgbV9mb3JtRGF0YUJ1aWxkZXIuZW5jb2RpbmdUeXBlKCks
IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGZvcm1WYWx1ZXMsIGRvY3VtZW50KCktPmZyYW1lKCks
IHRyaWdnZXIpLCBmb3JtRGF0YS5yZWxlYXNlKCksIGJvdW5kYXJ5LCBsb2NrSGlzdG9yeSwgZXZl
bnQpOwogfQogCiBib29sIEhUTUxGb3JtRWxlbWVudDo6aXNNYWlsdG9Gb3JtKCkgY29uc3QKQEAg
LTM3MywxOCArMzg3LDggQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdChFdmVudCogZXZl
bnQsIGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24sIGJvb2wgbG9ja0gKICAgICBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50KiBmaXJzdFN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24gPSAwOwogICAgIGJvb2wg
bmVlZEJ1dHRvbkFjdGl2YXRpb24gPSBhY3RpdmF0ZVN1Ym1pdEJ1dHRvbjsgLy8gZG8gd2UgbmVl
ZCB0byBhY3RpdmF0ZSBhIHN1Ym1pdCBidXR0b24/CiAgICAgCi0gICAgVmVjdG9yPHBhaXI8U3Ry
aW5nLCBTdHJpbmc+ID4gZm9ybVZhbHVlczsKLQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50KiBjb250cm9sID0gbV9hc3NvY2lhdGVkRWxlbWVudHNbaV07Ci0gICAgICAg
IGlmIChjb250cm9sLT5oYXNMb2NhbE5hbWUoaW5wdXRUYWcpKSB7Ci0gICAgICAgICAgICBIVE1M
SW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihjb250
cm9sKTsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+aXNUZXh0RmllbGQoKSkgewotICAgICAgICAg
ICAgICAgIGZvcm1WYWx1ZXMuYXBwZW5kKHBhaXI8U3RyaW5nLCBTdHJpbmc+KGlucHV0LT5uYW1l
KCksIGlucHV0LT52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGlucHV0LT5pc1NlYXJj
aEZpZWxkKCkpCi0gICAgICAgICAgICAgICAgICAgIGlucHV0LT5hZGRTZWFyY2hSZXN1bHQoKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgICAgICBpZiAobmVlZEJ1dHRvbkFjdGl2YXRp
b24pIHsKICAgICAgICAgICAgIGlmIChjb250cm9sLT5pc0FjdGl2YXRlZFN1Ym1pdCgpKQogICAg
ICAgICAgICAgICAgIG5lZWRCdXR0b25BY3RpdmF0aW9uID0gZmFsc2U7CkBAIC0zOTMsMTggKzM5
NywxMyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6c3VibWl0KEV2ZW50KiBldmVudCwgYm9vbCBh
Y3RpdmF0ZVN1Ym1pdEJ1dHRvbiwgYm9vbCBsb2NrSAogICAgICAgICB9CiAgICAgfQogCi0gICAg
UmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlID0gRm9ybVN0YXRlOjpjcmVhdGUodGhpcywgZm9y
bVZhbHVlcywgZnJhbWUsIGZvcm1TdWJtaXNzaW9uVHJpZ2dlcik7Ci0KICAgICBpZiAobmVlZEJ1
dHRvbkFjdGl2YXRpb24gJiYgZmlyc3RTdWNjZXNzZnVsU3VibWl0QnV0dG9uKQogICAgICAgICBm
aXJzdFN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24tPnNldEFjdGl2YXRlZFN1Ym1pdCh0cnVlKTsKICAg
ICAKICAgICBpZiAobV91cmwuaXNFbXB0eSgpKQogICAgICAgICBtX3VybCA9IGRvY3VtZW50KCkt
PnVybCgpLnN0cmluZygpOwogCi0gICAgUmVmUHRyPEZvcm1EYXRhPiBkYXRhID0gcHJlcGFyZUZv
cm1EYXRhKCk7Ci0gICAgU3RyaW5nIGJvdW5kYXJ5ID0gbV9mb3JtRGF0YUJ1aWxkZXIuaXNNdWx0
aVBhcnRGb3JtKCkgPyBkYXRhLT5ib3VuZGFyeSgpLmRhdGEoKSA6IFN0cmluZygpOwotICAgIGNv
bnN0IGNoYXIqIG1ldGhvZCA9IG1fZm9ybURhdGFCdWlsZGVyLmlzUG9zdE1ldGhvZCgpID8gIlBP
U1QiIDogIkdFVCI7Ci0gICAgZnJhbWUtPmxvYWRlcigpLT5zdWJtaXRGb3JtKG1ldGhvZCwgbV91
cmwsIGRhdGEucmVsZWFzZSgpLCBtX3RhcmdldCwgbV9mb3JtRGF0YUJ1aWxkZXIuZW5jb2RpbmdU
eXBlKCksIGJvdW5kYXJ5LCBsb2NrSGlzdG9yeSwgZXZlbnQsIGZvcm1TdGF0ZS5yZWxlYXNlKCkp
OworICAgIGZyYW1lLT5sb2FkZXIoKS0+c3VibWl0Rm9ybShwcmVwYXJlRm9ybVN1Ym1pc3Npb24o
ZXZlbnQsIGxvY2tIaXN0b3J5LCBmb3JtU3VibWlzc2lvblRyaWdnZXIpKTsKIAogICAgIGlmIChu
ZWVkQnV0dG9uQWN0aXZhdGlvbiAmJiBmaXJzdFN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24pCiAgICAg
ICAgIGZpcnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbi0+c2V0QWN0aXZhdGVkU3VibWl0KGZhbHNl
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBiL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuaAppbmRleCBhYWY3NzNiYmFhMTExODc5YmIwNmRkODAxZjgx
MTE5ZjAyYzY2MzhlLi43ZTNiZDMzYzlkZDFjODM3MTVjY2Y1ZDY1NzdjN2JiNWQ1Yzc0MTM4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGb3JtRGF0YTsKK2NsYXNzIEZvcm1TdWJtaXNzaW9u
OwogY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7
CiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwpAQCAtMTM3LDcgKzEzOCw3IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIGlzTWFpbHRvRm9ybSgpIGNvbnN0OwogICAgIFRleHRFbmNvZGluZyBkYXRhRW5j
b2RpbmcoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiBwcmVwYXJlRm9ybURhdGEo
KTsKKyAgICBQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBwcmVwYXJlRm9ybVN1Ym1pc3Npb24o
RXZlbnQqLCBib29sIGxvY2tIaXN0b3J5LCBGb3JtU3VibWlzc2lvblRyaWdnZXIpOwogICAgIHVu
c2lnbmVkIGZvcm1FbGVtZW50SW5kZXgoSFRNTEZvcm1Db250cm9sRWxlbWVudCopOwogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgc3VibWlzc2lvbiBzaG91bGQgYmUgcHJvY2VlZGVkLgogICAg
IGJvb2wgdmFsaWRhdGVJbnRlcmFjdGl2ZWx5KEV2ZW50Kik7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAgYi9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lv
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGVhN2QxNzdmYzc1MjA5MmY2MDJkNDVmZDMxODk2YmM1NDI4ZjEz
NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApA
QCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZvcm1TdWJtaXNz
aW9uLmgiCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkZvcm1EYXRhLmgiCisjaW5j
bHVkZSAiRm9ybVN0YXRlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MRm9y
bUVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0Zvcm1TdWJtaXNzaW9uOjpGb3JtU3VibWlzc2lvbihNZXRob2QgbWV0aG9kLCBj
b25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBzdGF0ZSwgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gZGF0YSwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwgYm9vbCBsb2NrSGlzdG9yeSwgUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQpCisgICAgOiBtX21ldGhvZChtZXRob2QpCisgICAgLCBtX2Fj
dGlvbihhY3Rpb24pCisgICAgLCBtX3RhcmdldCh0YXJnZXQpCisgICAgLCBtX2NvbnRlbnRUeXBl
KGNvbnRlbnRUeXBlKQorICAgICwgbV9mb3JtU3RhdGUoc3RhdGUpCisgICAgLCBtX2Zvcm1EYXRh
KGRhdGEpCisgICAgLCBtX2JvdW5kYXJ5KGJvdW5kYXJ5KQorICAgICwgbV9sb2NrSGlzdG9yeShs
b2NrSGlzdG9yeSkKKyAgICAsIG1fZXZlbnQoZXZlbnQpCit7Cit9CisKKworUGFzc1JlZlB0cjxG
b3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShNZXRob2QgbWV0aG9kLCBjb25z
dCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBzdGF0ZSwgUGFzc1JlZlB0cjxGb3JtRGF0
YT4gZGF0YSwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwgYm9vbCBsb2NrSGlzdG9yeSwgUGFzc1Jl
ZlB0cjxFdmVudD4gZXZlbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGb3JtU3VibWlz
c2lvbihtZXRob2QsIGFjdGlvbiwgdGFyZ2V0LCBjb250ZW50VHlwZSwgc3RhdGUsIGRhdGEsIGJv
dW5kYXJ5LCBsb2NrSGlzdG9yeSwgZXZlbnQpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaCBiL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDk1YmQzOTMxM2E0YTYwYTVmMGQxMjBhYjgzODA1N2U0NGIwNTBiZgot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKQEAgLTAs
MCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgRm9ybVN1Ym1pc3Npb25faAorI2RlZmluZSBGb3JtU3VibWlzc2lv
bl9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBFdmVudDsKK2NsYXNzIEZvcm1EYXRhOworY2xhc3MgRm9ybVN0YXRlOworCitjbGFz
cyBGb3JtU3VibWlzc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEZvcm1TdWJtaXNzaW9uPiB7Citw
dWJsaWM6CisgICAgZW51bSBNZXRob2QgeworICAgICAgICBHZXRNZXRob2QsCisgICAgICAgIFBv
c3RNZXRob2QKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+
IGNyZWF0ZShNZXRob2QsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHRhcmdl
dCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBQYXNz
UmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwgYm9vbCBsb2NrSGlzdG9y
eSwgUGFzc1JlZlB0cjxFdmVudD4pOworCisgICAgTWV0aG9kIG1ldGhvZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWV0aG9kOyB9CisgICAgU3RyaW5nIGFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0
aW9uOyB9CisgICAgU3RyaW5nIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0OyB9Cisg
ICAgU3RyaW5nIGNvbnRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50VHlwZTsgfQor
ICAgIEZvcm1TdGF0ZSogc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1TdGF0ZS5nZXQoKTsg
fQorICAgIEZvcm1EYXRhKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9mb3JtRGF0YS5nZXQoKTsg
fQorICAgIFN0cmluZyBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KKyAg
ICBib29sIGxvY2tIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9sb2NrSGlzdG9yeTsgfQorICAg
IEV2ZW50KiBldmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnQuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICBGb3JtU3VibWlzc2lvbihNZXRob2QsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25z
dCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwg
Ym9vbCBsb2NrSGlzdG9yeSwgUGFzc1JlZlB0cjxFdmVudD4pOworCisgICAgTWV0aG9kIG1fbWV0
aG9kOworICAgIFN0cmluZyBtX2FjdGlvbjsKKyAgICBTdHJpbmcgbV90YXJnZXQ7CisgICAgU3Ry
aW5nIG1fY29udGVudFR5cGU7CisgICAgUmVmUHRyPEZvcm1TdGF0ZT4gbV9mb3JtU3RhdGU7Cisg
ICAgUmVmUHRyPEZvcm1EYXRhPiBtX2Zvcm1EYXRhOworICAgIFN0cmluZyBtX2JvdW5kYXJ5Owor
ICAgIGJvb2wgbV9sb2NrSGlzdG9yeTsKKyAgICBSZWZQdHI8RXZlbnQ+IG1fZXZlbnQ7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBGb3JtU3VibWlzc2lvbl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5k
ZXggOTc0NThmYTBhOGU1YzQ0YzgzNGMyOTgxMDA5N2E2OTM5ODg0YWQxMC4uMTM1MzcwMDFhZjUy
MDRiY2Q2NDI1NzI5OGJmZjAwNmMwN2M0OTI2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
NTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIKKyNpbmNsdWRlICJGb3JtU3VibWlzc2lvbi5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC00NjEsMTAgKzQ2MiwxOSBAQCBGcmFtZSog
RnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCwgY29uc3QgS1VSTAogICAgIHJldHVybiBmcmFtZS5nZXQoKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlcjo6c3VibWl0Rm9ybShjb25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdXJs
LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwKLSAgICBjb25zdCBTdHJpbmcmIHRhcmdl
dCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwKLSAg
ICBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+IGZvcm1TdGF0ZSkKK3ZvaWQgRnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0oUGFzc1Jl
ZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlzc2lvbikKIHsKKyAgICAvLyBGSVhNRTogUGx1bWIg
dGhpcyBmdXJ0aGVyIGluLgorICAgIGNvbnN0IGNoYXIqIGFjdGlvbiA9IHN1Ym1pc3Npb24tPm1l
dGhvZCgpID09IEZvcm1TdWJtaXNzaW9uOjpQb3N0TWV0aG9kID8gIlBPU1QiIDogIkdFVCI7Cisg
ICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9IHN1Ym1pc3Npb24tPmRhdGEoKTsKKyAgICBS
ZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUgPSBzdWJtaXNzaW9uLT5zdGF0ZSgpOworICAgIFN0
cmluZyB1cmwgPSBzdWJtaXNzaW9uLT5hY3Rpb24oKTsKKyAgICBTdHJpbmcgdGFyZ2V0ID0gc3Vi
bWlzc2lvbi0+dGFyZ2V0KCk7CisgICAgU3RyaW5nIGJvdW5kYXJ5ID0gc3VibWlzc2lvbi0+Ym91
bmRhcnkoKTsKKyAgICBTdHJpbmcgY29udGVudFR5cGUgPSBzdWJtaXNzaW9uLT5jb250ZW50VHlw
ZSgpOworICAgIGJvb2wgbG9ja0hpc3RvcnkgPSBzdWJtaXNzaW9uLT5sb2NrSGlzdG9yeSgpOwor
ICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBzdWJtaXNzaW9uLT5ldmVudCgpOworCiAgICAgQVNT
RVJUKGFjdGlvbik7CiAgICAgQVNTRVJUKHN0cmNtcChhY3Rpb24sICJHRVQiKSA9PSAwIHx8IHN0
cmNtcChhY3Rpb24sICJQT1NUIikgPT0gMCk7CiAgICAgQVNTRVJUKGZvcm1EYXRhKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oCmluZGV4IDE4ZTAwYjNhYTk0NjAyODdkMzBhNGIyNjQ4NDIwYTYxODFkM2FhYTYu
LmQ1MGMxM2ZjZjRlZWQzNTdhYWQ2MjkwMDMyYmI4MGNmMTY2MWFhZDIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaApAQCAtNTcsNiArNTcsNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEV2ZW50
OwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBGb3JtU3RhdGU7CitjbGFzcyBGb3JtU3VibWlzc2lv
bjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQ7CiBjbGFzcyBIaXN0b3J5
SXRlbTsKQEAgLTIyNCw5ICsyMjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cmxTZWxlY3RlZChj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIFBhc3NSZWZQdHI8RXZlbnQ+LCBib29s
IGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgdXNlckdlc3R1cmUs
IFJlZmVycmVyUG9saWN5KTsKICAgICBib29sIHJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVs
ZW1lbnQqLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUs
IGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QgPSB0cnVl
KTsKIAotICAgIHZvaWQgc3VibWl0Rm9ybShjb25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0IFN0cmlu
ZyYgdXJsLAotICAgICAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgYm91bmRhcnksCi0g
ICAgICAgIGJvb2wgbG9ja0hpc3RvcnksIFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4pOworICAgIHZvaWQgc3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9u
Pik7CiAKICAgICB2b2lkIHN0b3AoKTsKICAgICB2b2lkIHN0b3BMb2FkaW5nKFVubG9hZEV2ZW50
UG9saWN5LCBEYXRhYmFzZVBvbGljeSA9IERhdGFiYXNlUG9saWN5U3RvcCk7Cg==
</data>
<flag name="review"
          id="45308"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>