<?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>79764</bug_id>
          
          <creation_ts>2012-02-28 01:07:27 -0800</creation_ts>
          <short_desc>[Forms] The option element should not be form associated element.</short_desc>
          <delta_ts>2012-03-22 01:04:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://jsfiddle.net/pcc7Z/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80089</dependson>
    
    <dependson>81746</dependson>
    
    <dependson>81774</dependson>
          <blocked>80088</blocked>
    
    <blocked>80381</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>yosin</reporter>
          <assigned_to>yosin</assigned_to>
          <cc>ap</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ossy</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>566487</commentid>
    <comment_count>0</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-02-28 01:07:27 -0800</bug_when>
    <thetext>Imported from http://crbug.com/90094</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566996</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-28 12:57:04 -0800</bug_when>
    <thetext>Duplicate of bug 77502? What does profiler say?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567347</commentid>
    <comment_count>2</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-02-28 20:49:09 -0800</bug_when>
    <thetext>Yes, root cause of this bug and bug 77502 is same.

I changed bug summary to clarify what I will do == make HTMLOptionElement not to inherit FormAssociateElement.

I&apos;ll do same thing other non-form associate elements, such as legend, optgroup, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567408</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-28 23:11:22 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; Imported from http://crbug.com/90094

This is unfriendly bug description.  You should have written what was the bug instead of the URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567412</commentid>
    <comment_count>4</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-02-28 23:15:45 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Duplicate of bug 77502? 
No, see comment #2

&gt;What does profiler say?

I measure running time of my desktop 
http://jsfiddle.net/pcc7Z/

Insert into div takes 319ms
Insert into form takes 2113ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581672</commentid>
    <comment_count>5</comment_count>
      <attachid>132553</attachid>
    <who name="">yosin</who>
    <bug_when>2012-03-19 00:29:43 -0700</bug_when>
    <thetext>Created attachment 132553
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581693</commentid>
    <comment_count>6</comment_count>
      <attachid>132553</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-19 01:32:14 -0700</bug_when>
    <thetext>Comment on attachment 132553
Patch 1

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

&gt; Source/WebCore/css/CSSStyleSelector.cpp:1349
&gt; +    if (element-&gt;hasTagName(optionTag))
&gt; +        return false;
&gt; +

This is wrong.  It means we don&apos;t share a style for &lt;option&gt; elements in any cases.
We should check:
 if both of m_element and element are optionTag,
    if enabled state is different, false
    if checked state is different, false
    otherwise, fall-through (means we can share the style)

&gt; LayoutTests/fast/forms/resources/select-live-pseudo-selectors.js:55
&gt; +    if (typeof(el) == &apos;string&apos;) {
&gt; +      el = document.getElementById(el);

inconsistent indentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581696</commentid>
    <comment_count>7</comment_count>
      <attachid>132558</attachid>
    <who name="">yosin</who>
    <bug_when>2012-03-19 01:47:31 -0700</bug_when>
    <thetext>Created attachment 132558
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581697</commentid>
    <comment_count>8</comment_count>
      <attachid>132558</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-19 02:01:46 -0700</bug_when>
    <thetext>Comment on attachment 132558
Patch 2

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

&gt; Source/WebCore/css/CSSStyleSelector.cpp:1355
&gt; +        if (thisOptionElement-&gt;disabled() != otherOptionElement-&gt;disabled())
&gt; +            return false;

nit: We should use isEnabledFormControl() for consistency with SelectorChecker.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583675</commentid>
    <comment_count>9</comment_count>
      <attachid>132942</attachid>
    <who name="">yosin</who>
    <bug_when>2012-03-20 18:17:42 -0700</bug_when>
    <thetext>Created attachment 132942
Patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583739</commentid>
    <comment_count>10</comment_count>
      <attachid>132942</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-20 20:27:01 -0700</bug_when>
    <thetext>Comment on attachment 132942
Patch 3

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583798</commentid>
    <comment_count>11</comment_count>
      <attachid>132942</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 21:46:16 -0700</bug_when>
    <thetext>Comment on attachment 132942
Patch 3

Clearing flags on attachment: 132942

Committed r111497: &lt;http://trac.webkit.org/changeset/111497&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583799</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 21:46:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584049</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-21 06:05:12 -0700</bug_when>
    <thetext>Reopen, because it broke 2 tests on all platform:
 - fast/css/text-transform-select.html
 - fast/forms/select/menulist-disabled-option.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584060</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-21 06:17:25 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Reopen, because it broke 2 tests on all platform:
&gt;  - fast/css/text-transform-select.html
&gt;  - fast/forms/select/menulist-disabled-option.html

See https://bugs.webkit.org/show_bug.cgi?id=81746 for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584897</commentid>
    <comment_count>15</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-03-21 19:29:04 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 132553 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132553&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSStyleSelector.cpp:1349
&gt; &gt; +    if (element-&gt;hasTagName(optionTag))
&gt; &gt; +        return false;
&gt; &gt; +
&gt; 
&gt; This is wrong.  It means we don&apos;t share a style for &lt;option&gt; elements in any cases.
&gt; We should check:
&gt;  if both of m_element and element are optionTag,
&gt;     if enabled state is different, false
&gt;     if checked state is different, false
&gt;     otherwise, fall-through (means we can share the style)
&gt; 

It seems this changes current behavior.
Current implementation doesn&apos;t share style for HTMLOptionElement, HTMLOptionElement isn&apos;t HTMLInputElement.

bool CSSStyleSelector::canShareStyleWithControl(StyledElement* element) const
{
    HTMLInputElement* thisInputElement = element-&gt;toInputElement();
    HTMLInputElement* otherInputElement = m_element-&gt;toInputElement();

    if (!thisInputElement || !otherInputElement)
        return false;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584907</commentid>
    <comment_count>16</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-21 19:55:03 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 132553 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132553&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/CSSStyleSelector.cpp:1349
&gt; &gt; &gt; +    if (element-&gt;hasTagName(optionTag))
&gt; &gt; &gt; +        return false;
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; This is wrong.  It means we don&apos;t share a style for &lt;option&gt; elements in any cases.
&gt; &gt; We should check:
&gt; &gt;  if both of m_element and element are optionTag,
&gt; &gt;     if enabled state is different, false
&gt; &gt;     if checked state is different, false
&gt; &gt;     otherwise, fall-through (means we can share the style)
&gt; &gt; 
&gt; 
&gt; It seems this changes current behavior.
&gt; Current implementation doesn&apos;t share style for HTMLOptionElement, HTMLOptionElement isn&apos;t HTMLInputElement.

ok, let&apos;s revert this part.
Did you reproduced the test failures with r111497, and confirmed they were fixed by reverting this part?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585007</commentid>
    <comment_count>17</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-03-21 23:47:19 -0700</bug_when>
    <thetext>&gt; &gt; &gt; &gt; Source/WebCore/css/CSSStyleSelector.cpp:1349
&gt; &gt; &gt; &gt; +    if (element-&gt;hasTagName(optionTag))
&gt; &gt; &gt; &gt; +        return false;
&gt; &gt; &gt; &gt; +
&gt; &gt; &gt; 
&gt; &gt; &gt; This is wrong.  It means we don&apos;t share a style for &lt;option&gt; elements in any cases.
&gt; &gt; &gt; We should check:
&gt; &gt; &gt;  if both of m_element and element are optionTag,
&gt; &gt; &gt;     if enabled state is different, false
&gt; &gt; &gt;     if checked state is different, false
&gt; &gt; &gt;     otherwise, fall-through (means we can share the style)
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; It seems this changes current behavior.
&gt; &gt; Current implementation doesn&apos;t share style for HTMLOptionElement, HTMLOptionElement isn&apos;t HTMLInputElement.
&gt; 
&gt; ok, let&apos;s revert this part.
&gt; Did you reproduced the test failures with r111497, and confirmed they were fixed by reverting this part?

Confirmed on Mac port. I&apos;m not sure why Chromium-Linux port passed test but not others. (&gt;&lt;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585009</commentid>
    <comment_count>18</comment_count>
      <attachid>133196</attachid>
    <who name="">yosin</who>
    <bug_when>2012-03-21 23:50:44 -0700</bug_when>
    <thetext>Created attachment 133196
Patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585047</commentid>
    <comment_count>19</comment_count>
      <attachid>133196</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 01:04:27 -0700</bug_when>
    <thetext>Comment on attachment 133196
Patch 4

Clearing flags on attachment: 133196

Committed r111659: &lt;http://trac.webkit.org/changeset/111659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585048</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 01:04:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132553</attachid>
            <date>2012-03-19 00:29:43 -0700</date>
            <delta_ts>2012-03-19 01:47:24 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>bug-79764-20120319162941.patch</filename>
            <type>text/plain</type>
            <size>19350</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhkZDhjOThhNDJkYjZi
Zjc5M2Q0OTgxNWIzMDMxYjE3OWY5Yjk4Mi4uOTU4YTJhZWNjN2E5NjA0NWZmMTg5NjI1NTQ5NThh
YmI3ZjJkNTgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAzLTE4ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBUaGUg
b3B0aW9uIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBmb3JtIGFzc29jaWF0ZWQgZWxlbWVudC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NzY0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBj
aGFuZ2VzIGJhc2UgY2xhc3Mgb2YgSFRNTE9wdGlvbkVMZW1lbnQgdG8gSFRNTEVsZW1lbnQKKyAg
ICAgICAgZnJvbSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGZvciBzYXZpbmcgbWVtb3J5IHNwYWNl
IGFuZCBpdGVyYXRpb24KKyAgICAgICAgdGltZSBvZiBleHRyYSAib3B0aW9uIiBlbGVtZW50cyBp
biBIVE1MRm9ybUVsZW1lbnQ6Om1fZm9ybUFzc29jaWF0ZWRFbGVtZW50cworICAgICAgICBhbmQg
bWF0Y2hpbmcgdGhlIEhUTUw1IHNwZWNpZmljYXRpb24gZm9yIGVhc2Ugb2YgbWFpbnRlbmFuY2Uu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIGJlaGF2aW9yIG9mIGhhbmRsaW5nIG9mIENT
UyBwc2V1ZG8gY2xhc3NlcyAiaW52YWxpZCIKKyAgICAgICAgYW5kICJ2YWxpZCIuIFRoZSAib3B0
aW9uIiBlbGVtZW50cyBubyBsb25nZXIgdXNlIHRoZXNlIENTUyBwc2V1ZG8gY2xhc3NlcworICAg
ICAgICBhcyBIVE1MNSBzcGVjaWZpY2F0aW9uLiBUaGlzIGJ1ZyB3YXMgZmlsZWQgaW4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDg4CisKKyAgICAgICAgQ2hhbmdl
cyBvZiBUZXh0SXRlcmF0b3IgaXMgbGVhZCBieSB1c2FnZSBvZiBpc0Zvcm1Db250cm9sRWxlbWVu
dC4gVGhpcworICAgICAgICBjaGFuZ2VzIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBtb3JlIG1lYW5p
bmdmdWwgcHJlZGljYXRlIGFzIHBhcnQgb2YKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwMzgxCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJ1dCB1cGRh
dGVkIHNlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbCB0ZXN0LgorCisgICAgICAgICog
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxl
Y3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KTogQWRkZWQgY2hlY2tpbmcgb2YgdGhlICJv
cHRpb24iIGVsZW1lbnQgYW5kIHJldHVybnMgZmFsc2UgYXMgSFRNTEZvcm1Db250cm9sRWxlbWVu
dC4KKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IFJlbW92ZWQgaXNGb3JtQ29udHJv
bEVsZW1lbnQgZm9yIFBzZXVkb0Rpc2FibGVkIGFuZCBQc2V1ZG9DaGVja2VkLgorICAgICAgICAq
IGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEtleWdl
bkVsZW1lbnQ6OkhUTUxLZXlnZW5FbGVtZW50KTogUmVtb3ZlZCBmb3JtIHBhcmFtZXRlciBvZiBj
YWxsIHNpdGUgb2YgSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZS4KKyAgICAgICAgKiBodG1sL0hU
TUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50
OjpIVE1MT3B0aW9uRWxlbWVudCk6IFJlbW92ZWQgZm9ybSBwYXJhbWV0ZXIgd2hpY2ggbm8gbG9u
Z2VyIG5lZWRlZC4gQ2hhbmdlZCBiYXNlIGNsYXNzIGluIGluaXRpYWxpemF0aW9uIGxpc3QuIEFk
ZGVkIG1fZGlzYWJsZWQgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0
aW9uRWxlbWVudDo6Y3JlYXRlKTogUmVtb3ZlZCBmb3JtIHBhcmFtZXRlciB3aGljaCBubyBsb25n
ZXIgbmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OmF0dGFjaCk6
IENoYW5nZWlkIGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dDo6ZGV0YWNoKTogQ2hhbmdlZCBiYXNlIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogQ2hhbmdlZCBiYXNlIGNsYXNzLiBBZGRlZCAi
ZGlzYWJsZWQiIGF0dHJpYnV0ZSBoYW5kbGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRp
b25FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOiBDaGFuZ2VkIGJhc2UgY2xhc3MuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSk6IENoYW5nZWQg
YmFzZSBjbGFzcy4KKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50Lmg6CisgICAgICAg
IChIVE1MT3B0aW9uRWxlbWVudCk6IEFkZGVkIG5ldyBtZW1iZXIgdmFyaWFibGUgbV9kaXNhYmxl
ZCB3aGljaCB3YXMgaW4gSFRNTEZvcm1Db250cm9sRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxPcHRpb25FbGVtZW50Ojpvd25FbGVtZW50RGlzYWJsZWQpOiBDaGFuZ2VkIGZvciB1c2lu
ZyBtX2Rpc2FibGVkLgorICAgICAgICAqIGh0bWwvSFRNTFRhZ05hbWVzLmluOiBSZW1vdmVkIGNv
bnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudCBmb3IgdGhlICJvcHRpb24iIGVsZW1lbnQsIHdoaWNo
IHdhcyB1c2VkIGZvciBwYXNzaW5nIGZvcm0gcGFyYW1ldGVyIHRvIGNyZWF0ZSBmdW5jdGlvbi4K
KwogMjAxMi0wMy0xOCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIERvbid0IG9jY2x1ZGUgb24gbWFpbi10aHJlYWQgYmVoaW5kIGxheWVy
cy9zdXJmYWNlcyB3aXRoIGltcGwtdGhyZWFkIGFuaW1hdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA1ZDJjOTkyYWM5Yzk2YTQ2MjI0MTAxMGYzN2ZlMmQ4
MWRmODY3YTA5Li4xYWFkMjgzMzUzODFkMWM0ODJjOTliNDAwNDA5NTJhZTE1NzIzYWUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0xMzQ0LDYgKzEzNDQsOSBA
QCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudChTdHlsZWRF
bGVtZW50KiBlbGVtZW50KSBjb25zdAogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGVsZW1lbnQt
Pmhhc1RhZ05hbWUob3B0aW9uVGFnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgYm9v
bCBpc0NvbnRyb2wgPSBlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpOwogCiAgICAgaWYg
KGlzQ29udHJvbCAhPSBtX2VsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDA4NjQ5MTU5M2RkM2MyYzgyNjFiODgz
ZGQxYzczZDMzZjcyMDkzMWMuLmJmM2ZmZDU2Yzk4MWVhMTM4MmY1NmNkN2M0ODBhMzhhNzYwZDgx
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0xMDUyLDcgKzEw
NTIsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxl
Y3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9EZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC0+
aXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9EaXNhYmxlZDoKLSAgICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzRm9ybUNv
bnRyb2xFbGVtZW50KCkpCisgICAgICAgICAgICBpZiAoZWxlbWVudCAmJiAoZWxlbWVudC0+aXNG
b3JtQ29udHJvbEVsZW1lbnQoKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykpKQog
ICAgICAgICAgICAgICAgIHJldHVybiAhZWxlbWVudC0+aXNFbmFibGVkRm9ybUNvbnRyb2woKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9SZWFk
T25seToKQEAgLTEwNzksNyArMTA3OSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAg
ICAgICAgICByZXR1cm4gKGVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpICYmICFlbGVtZW50LT5pc1Zh
bGlkRm9ybUNvbnRyb2xFbGVtZW50KCkpIHx8IGVsZW1lbnQtPmhhc1VuYWNjZXB0YWJsZVZhbHVl
KCk7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NoZWNrZWQ6CiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5pc0Zvcm1Db250
cm9sRWxlbWVudCgpKQorICAgICAgICAgICAgICAgIGlmICghZWxlbWVudCkKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgLy8gRXZlbiB0aG91Z2ggV2luSUUgYWxs
b3dzIGNoZWNrZWQgYW5kIGluZGV0ZXJtaW5hdGUgdG8gY28tZXhpc3QsIHRoZSBDU1Mgc2VsZWN0
b3Igc3BlYyBzYXlzIHRoYXQKICAgICAgICAgICAgICAgICAvLyB5b3UgY2FuJ3QgYmUgYm90aCBj
aGVja2VkIGFuZCBpbmRldGVybWluYXRlLiBXZSB3aWxsIGJlaGF2ZSBsaWtlIFdpbklFIGJlaGlu
ZCB0aGUgc2NlbmVzIGFuZCBqdXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxLZXlnZW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1l
bnQuY3BwCmluZGV4IDgwNTM0NDE5ZTczMWU1ZjkwYzFkOTQ1N2ZiMmQ0MjUzYzVhNDRhNjkuLjMw
OTRjOTM1MjNlNTYzZGQxN2I5MjE5NDQ1ZWM3MjllZGY4ZDY0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGlubGluZSBIVE1M
S2V5Z2VuRWxlbWVudDo6SFRNTEtleWdlbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lCiAgICAgUmVmUHRyPEhUTUxTZWxlY3RFbGVtZW50PiBzZWxlY3QgPSBLZXln
ZW5TZWxlY3RFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5cy5zaXplKCk7ICsraSkgewotICAg
ICAgICBSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IG9wdGlvbiA9IEhUTUxPcHRpb25FbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMtPmZvcm0oKSk7CisgICAgICAgIFJlZlB0cjxIVE1MT3B0
aW9uRWxlbWVudD4gb3B0aW9uID0gSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
CiAgICAgICAgIHNlbGVjdC0+YXBwZW5kQ2hpbGQob3B0aW9uLCBlYyk7CiAgICAgICAgIG9wdGlv
bi0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBrZXlzW2ldKSwgZWMpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggMTY5NmU5
YmVjNGZjNzJkYzA5OGYzYTNmMWJhMzgxMDhkNDBmOTRjZS4uYTliZTdjMDYxOTE3NmZiMzEzYTE4
MzQyY2QzZjIzMjc2MWI5YWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxl
bWVudC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIK
ICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlck1lbnVM
aXN0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50
LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAg
LTQ3LDIxICs0OCwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKLUhUTUxPcHRpb25FbGVtZW50OjpIVE1MT3B0aW9uRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVu
dCogZm9ybSkKLSAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQs
IGZvcm0pCitIVE1MT3B0aW9uRWxlbWVudDo6SFRNTE9wdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogSFRNTEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpCisgICAgLCBtX2Rpc2FibGVkKGZhbHNlKQogICAgICwgbV9pc1Nl
bGVjdGVkKGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKG9wdGlvblRhZykpOwogfQog
Ci1QYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQorUGFzc1JlZlB0cjxI
VE1MT3B0aW9uRWxlbWVudD4gSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9j
dW1lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudChvcHRp
b25UYWcsIGRvY3VtZW50LCBmb3JtKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT3B0
aW9uRWxlbWVudChvcHRpb25UYWcsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTE9w
dGlvbkVsZW1lbnQ+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCitQ
YXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxPcHRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBm
b3JtKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0
aW9uRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwKQEAgLTg5LDEzICs5MSwxMyBA
QCB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjphdHRhY2goKQogewogICAgIGlmIChwYXJlbnROb2Rl
KCktPnJlbmRlclN0eWxlKCkpCiAgICAgICAgIHNldFJlbmRlclN0eWxlKHN0eWxlRm9yUmVuZGVy
ZXIoKSk7Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXR0YWNoKCk7CisgICAgSFRNTEVs
ZW1lbnQ6OmF0dGFjaCgpOwogfQogCiB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjpkZXRhY2goKQog
ewogICAgIG1fc3R5bGUuY2xlYXIoKTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkZXRh
Y2goKTsKKyAgICBIVE1MRWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKIGJvb2wgSFRNTE9wdGlvbkVs
ZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdApAQCAtMTA5LDEyICsxMTEsNiBAQCBib29sIEhU
TUxPcHRpb25FbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN1cHBvcnRz
Rm9jdXMoKSAmJiByZW5kZXJTdHlsZSgpICYmIHJlbmRlclN0eWxlKCktPmRpc3BsYXkoKSAhPSBO
T05FOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEhUTUxPcHRpb25FbGVtZW50Ojpmb3JtQ29u
dHJvbFR5cGUoKSBjb25zdAotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCBvcHRpb24sICgib3B0aW9uIikpOwotICAgIHJldHVybiBvcHRpb247Ci19Ci0KIFN0
cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6dGV4dCgpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKQEAgLTE5MSw3ICsxODcsMTUgQEAgaW50IEhUTUxP
cHRpb25FbGVtZW50OjppbmRleCgpIGNvbnN0CiAKIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09
IHNlbGVjdGVkQXR0cikgeworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gZGlzYWJsZWRBdHRyKSB7
CisgICAgICAgIGJvb2wgb2xkRGlzYWJsZWQgPSBtX2Rpc2FibGVkOworICAgICAgICBtX2Rpc2Fi
bGVkID0gIWF0dHItPmlzTnVsbCgpOworICAgICAgICBpZiAob2xkRGlzYWJsZWQgIT0gbV9kaXNh
YmxlZCkgeworICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgICAgICAgICAg
aWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQor
ICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJl
cigpLCBFbmFibGVkU3RhdGUpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gc2VsZWN0ZWRBdHRyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgbWF0
Y2ggd2hhdCB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIHNheXMuCiAgICAgICAgIC8vIFRoZSBzcGVj
aWZpY2F0aW9uIGltcGxpZXMgdGhhdCByZW1vdmluZyB0aGUgc2VsZWN0ZWQgYXR0cmlidXRlIG9y
CiAgICAgICAgIC8vIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBhIHNlbGVjdGVkIGF0dHJpYnV0ZSB0
aGF0IGlzIGFscmVhZHkgcHJlc2VudApAQCAtMjAwLDcgKzIwNCw3IEBAIHZvaWQgSFRNTE9wdGlv
bkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgLy8gY2Fz
ZTsgd2UnZCBuZWVkIHRvIGRvIHRoZSBvdGhlciB3b3JrIGZyb20gdGhlIHNldFNlbGVjdGVkIGZ1
bmN0aW9uLgogICAgICAgICBtX2lzU2VsZWN0ZWQgPSAhYXR0ci0+aXNOdWxsKCk7CiAgICAgfSBl
bHNlCi0gICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIp
OworICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiB9CiAKIFN0cmlu
ZyBIVE1MT3B0aW9uRWxlbWVudDo6dmFsdWUoKSBjb25zdApAQCAtMjQ3LDcgKzI1MSw3IEBAIHZv
aWQgSFRNTE9wdGlvbkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNl
ciwgTm9kZSogYmVmb3JlQ2hhbmdlCiB7CiAgICAgaWYgKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxl
Y3QgPSBvd25lclNlbGVjdEVsZW1lbnQoKSkKICAgICAgICAgc2VsZWN0LT5vcHRpb25FbGVtZW50
Q2hpbGRyZW5DaGFuZ2VkKCk7Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRD
b3VudERlbHRhKTsKKyAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBh
cnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKIH0KIAog
SFRNTFNlbGVjdEVsZW1lbnQqIEhUTUxPcHRpb25FbGVtZW50Ojpvd25lclNlbGVjdEVsZW1lbnQo
KSBjb25zdApAQCAtMzE1LDcgKzMxOSw3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6Omluc2Vy
dGVkSW50b1RyZWUoYm9vbCBkZWVwKQogICAgICAgICBzZWxlY3QtPnNjcm9sbFRvU2VsZWN0aW9u
KCk7CiAgICAgfQogCi0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJl
ZShkZWVwKTsKKyAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShkZWVwKTsKIH0KIAog
U3RyaW5nIEhUTUxPcHRpb25FbGVtZW50Ojpjb2xsZWN0T3B0aW9uSW5uZXJUZXh0KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAppbmRleCAyZWVkYWRmMWYxNGM0
NWEyOTc3MzhhZTdkYjM0YmY5N2YyYzVmYmQ1Li43N2M0OWQ3ZGZkMTc2YjE1YmI4MWFiYTNkYWJl
OGE1OWU3NGQyZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCkBA
IC0yNSwxNiArMjUsMTYgQEAKICNpZm5kZWYgSFRNTE9wdGlvbkVsZW1lbnRfaAogI2RlZmluZSBI
VE1MT3B0aW9uRWxlbWVudF9oCiAKLSNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBIVE1MU2VsZWN0RWxlbWVudDsKIAotY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQgOiBwdWJsaWMg
SFRNTEZvcm1Db250cm9sRWxlbWVudCB7CitjbGFzcyBIVE1MT3B0aW9uRWxlbWVudCA6IHB1Ymxp
YyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE9wdGlv
bkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhUTUxPcHRpb25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0ZUZv
ckpTQ29uc3RydWN0b3IoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsCiAgICAgICAgYm9vbCBkZWZhdWx0U2VsZWN0ZWQsIGJvb2wgc2VsZWN0ZWQsIEV4
Y2VwdGlvbkNvZGUmKTsKIApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGxh
YmVsKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKIAotICAgIGJv
b2wgb3duRWxlbWVudERpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gSFRNTEZvcm1Db250cm9sRWxl
bWVudDo6ZGlzYWJsZWQoKTsgfQorICAgIGJvb2wgb3duRWxlbWVudERpc2FibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNhYmxlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGRpc2FibGVkKCkgY29u
c3Q7CiAKQEAgLTYzLDE3ICs2MywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZWxlY3RlZFN0
YXRlKGJvb2wpOwogCiBwcml2YXRlOgotICAgIEhUTUxPcHRpb25FbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCogPSAwKTsKKyAgICBIVE1MT3B0
aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzRW5hYmxl
ZEZvcm1Db250cm9sKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIWRpc2FibGVkKCk7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2go
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVuZGVyU3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4pOwogCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgp
IGNvbnN0OwotCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b1RyZWUoYm9vbCk7CkBAIC04
Nyw2ICs4Niw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgbV92YWx1ZTsKICAgICBTdHJpbmcg
bV9sYWJlbDsKKyAgICBib29sIG1fZGlzYWJsZWQ7CiAgICAgYm9vbCBtX2lzU2VsZWN0ZWQ7CiAg
ICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX3N0eWxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFn
TmFtZXMuaW4KaW5kZXggNzRlMjQwODYyMGVjYWY0YWRhNjVhNjZiNjUzNGRjZDI4Zjc1NzI2Ni4u
NDk5NzY1M2FhNjYxY2Q0ODhjZTA0YWY0MDYyOWViZWUxN2I1YzkwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFnTmFtZXMuaW4KQEAgLTkyLDcgKzkyLDcgQEAgbm9sYXllciBpbnRlcmZhY2VOYW1l
PUhUTUxFbGVtZW50CiBvYmplY3QgY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50LCBjb25zdHJ1
Y3Rvck5lZWRzQ3JlYXRlZEJ5UGFyc2VyCiBvbCBpbnRlcmZhY2VOYW1lPUhUTUxPTGlzdEVsZW1l
bnQKIG9wdGdyb3VwIGludGVyZmFjZU5hbWU9SFRNTE9wdEdyb3VwRWxlbWVudAotb3B0aW9uIGNv
bnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudAorb3B0aW9uCiBvdXRwdXQgY29uc3RydWN0b3JOZWVk
c0Zvcm1FbGVtZW50CiBzaGFkb3cgaW50ZXJmYWNlTmFtZT1IVE1MU2hhZG93RWxlbWVudCwgY29u
ZGl0aW9uYWw9U0hBRE9XX0RPTSwgcnVudGltZUNvbmRpdGlvbmFsPXNoYWRvd0RPTQogcCBpbnRl
cmZhY2VOYW1lPUhUTUxQYXJhZ3JhcGhFbGVtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTE3NGJiNjI5NTI2ODQwZGIx
Mjg3N2M0Njk3MjVmM2ZmMjdkNGFjMS4uYTVjYjM2ZjFhODE0M2Y4MjM2ODc4YTliNjBhNWEwMDky
MTM5ZWI3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTE4ICBZb3NoaWZ1bWkgSW5v
dWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBUaGUgb3B0aW9uIGVs
ZW1lbnQgc2hvdWxkIG5vdCBiZSBmb3JtIGFzc29jaWF0ZWQgZWxlbWVudC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NzY0CisKKyAgICAgICAgVGhp
cyBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBzZWxlY3QtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzLCBh
ZGRzCisgICAgICAgIGFzc2VydGlvbnMgdG8gaW1wcm92ZSBjb3ZlcmFnZSwgYW5kIHVwZGF0ZXMg
dGVzdCBleHBlY3RhdGlvbiBmb3IKKyAgICAgICAgYmVoYXZpb3IgY2hhbmdlcyAobWFrZXMgdGhl
ICJvcHRpb24iIGVsZW1lbnQgdXNlcyBDU1MgcHNldWRvIGNsYXNzCisgICAgICAgICI6dmFsaWQi
LikKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvZm9ybXMvcmVzb3VyY2VzL3NlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanM6CisgICAg
ICAgIChtb3VzZURvd25PblNlbGVjdCk6IENvcGllZCBmcm9tIGxpc3Rib3gtc2VsZWN0aW9uLmh0
bWwgZm9yIHJlcGxhY2luZyBicm9rZW4gc2ltdWxhdGVDbGljayB3aGljaCB1c2VkIHBvc2l0aW9u
IGFuZCBzaXplIG9mIHRoZSAib3B0aW9uIiBlbGVtZW50LCBidXQgdGhlc2UgdmFsdWVzIGFyZSB6
ZXJvLiBOb3RlOiBmaXZlIGZpbGVzIHVzZSBtb3VzZURvd25PblNlbGVjdC4gV2UnbGwgc2hhcmUg
dGhpcyBmdW5jdGlvbiBpbiBmdXR1cmUgdHJhY2tlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODE0OTYuCisgICAgICAgIChiYWNrZ3JvdW5kT2YpOiBBZGRlZCBT
dHJpbmcgcGFyYW1ldGVyIHN1cHBvcnQgZm9yIGVhc2Ugb2Ygd3JpdGluZyB0ZXN0IGNhc2UuCisg
ICAgICAgICogZmFzdC9mb3Jtcy9zZWxlY3QtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVk
LnR4dDogQWRkZWQgY2hlY2sgZm8gYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgInNlbGVjdGlvbiIg
ZWxlbWVudC4gQ2hhbmdlZCBleHBlY3RlZCBjb2xvciBvZiB0aGUgIm9wdGlvbiIgZWxlbWVudCBi
ZWNhdXNlIHRoZSAib3B0aW9uIiBlbGVtZW50IGRvZXNuJ3Qgc3VwcG9ydCBDU1MgcHNldWRvIGNs
YXNzICI6dmFsaWQiLiBUaGlzIGFsc28gY292ZXJzIGJ1ZyA4MDA4OC4KKwogMjAxMi0wMy0xOCAg
RGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludmFsaWRh
dGlvbiBpc3N1ZSB3aGVuIGNyZWF0aW5nIGJhY2tpbmcgbGF5ZXIgZm9yIGZpeGVkIHBvc2l0aW9u
ZWQgZWxlbWVudC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2Vz
L3NlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3Jlc291cmNlcy9zZWxlY3QtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzCmluZGV4IDYzODBiYzI5
ZGRkNjc1MjFkM2NhMWZhNDYxNzM5YTEwOTY0MWYwNmIuLjRiNjVkMWI0YzFhYWY2NjE1YzBhMGJj
MmRiZmY1ZTkwNjllY2I0ZjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVz
b3VyY2VzL3NlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9yZXNvdXJjZXMvc2VsZWN0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcwpAQCAt
NiwxNyArNiwxOCBAQCBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZvcm0pOwogdmFyIG5vbkZv
cm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQobm9uRm9ybSk7CiAKLWZ1bmN0aW9uIHNpbXVsYXRlQ2xpY2soZWxlbWVudCkgewotICAg
IHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICB2YXIgeCA9
IHJlY3QubGVmdCArIHJlY3Qud2lkdGggLyAyOwotICAgIHZhciB5ID0gcmVjdC50b3AgKyByZWN0
LmhlaWdodCAvIDI7Ci0KLSAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikgewotICAgICAgICBy
ZXR1cm47CitmdW5jdGlvbiBtb3VzZURvd25PblNlbGVjdChzZWxJZCwgaW5kZXgsIG1vZGlmaWVy
KSB7CisgICAgdmFyIHNsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsSWQpOworICAgIHZh
ciBpdGVtSGVpZ2h0ID0gTWF0aC5mbG9vcihzbC5vZmZzZXRIZWlnaHQgLyBzbC5zaXplKTsKKyAg
ICB2YXIgYm9yZGVyID0gMTsKKyAgICB2YXIgeSA9IGJvcmRlciArIGluZGV4ICogaXRlbUhlaWdo
dDsKKworICAgIHNsLmZvY3VzKCk7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzbC5vZmZzZXRMZWZ0ICsgYm9yZGVyLCBzbC5v
ZmZzZXRUb3AgKyB5IC0gd2luZG93LnBhZ2VZT2Zmc2V0KTsKKyAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKDAsIFttb2RpZmllcl0pOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKDAs
IFttb2RpZmllcl0pOwogICAgIH0KLSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsK
LSAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7
CiB9CiAKIGZ1bmN0aW9uIG1ha2VJbnZhbGlkKCkgewpAQCAtNTAsNiArNTEsOSBAQCBmdW5jdGlv
biByZW1vdmVPcHRpb24ob3B0aW9uLCBzZWxlY3QpIHsKIH0KIAogZnVuY3Rpb24gYmFja2dyb3Vu
ZE9mKGVsKSB7CisgICAgaWYgKHR5cGVvZihlbCkgPT0gJ3N0cmluZycpIHsKKyAgICAgIGVsID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwpOworICAgIH0KICAgICByZXR1cm4gZG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgn
YmFja2dyb3VuZC1jb2xvcicpOwogfQogCkBAIC01OCw2ICs2Miw3IEBAIHZhciBpbnZhbGlkQ29s
b3IgPSAncmdiKDI1NSwgMCwgMCknOwogdmFyIG5vcm1hbENvbG9yID0gJ3JnYigyNTUsIDI1NSwg
MjU1KSc7CiB2YXIgZGlzYWJsZWRDb2xvciA9ICdyZ2IoMCwgMCwgMCknOwogdmFyIHJlYWRPbmx5
Q29sb3IgPSAncmdiKDAsIDI1NSwgMCknCit2YXIgdHJhbnNwYXJlbnRDb2xvciA9ICdyZ2JhKDAs
IDAsIDAsIDApJzsKIHZhciB2YWxpZENvbG9yID0gJ3JnYigwLCAwLCAyNTUpJzsKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEwMiw3ICsxMDcsNyBAQCBzaG91bGRC
ZShlbEJhY2tncm91bmQsICdpbnZhbGlkQ29sb3InKTsKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIGRlYnVnKCdDaGFuZ2UgdGhlIHZhbHVlcyBvZiBzZWxlY3QgZWxlbWVu
dHMgd2l0aG91dCBleHBsaWNpdCBpbml0aWFsaXppbmcgdmFsdWVzIGJ5IGNsaWNraW5nOicpOwot
Zm9ybS5pbm5lckhUTUwgPSAnPHNlbGVjdCBpZD0ic2VsZWN0LW11bHRpcGxlIiBtdWx0aXBsZSBy
ZXF1aXJlZD4nICsKK2Zvcm0uaW5uZXJIVE1MID0gJzxzZWxlY3QgaWQ9InNlbGVjdC1tdWx0aXBs
ZSIgbXVsdGlwbGUgcmVxdWlyZWQgc2l6ZT0iNCI+JyArCiAnICA8b3B0aW9uIGlkPSJtdWx0aXBs
ZS1lbXB0eSI+ZW1wdHk8L29wdGlvbj4nICsKICcgIDxvcHRpb24gaWQ9Im11bHRpcGxlLWFub3Ro
ZXIiPmFub3RoZXI8L29wdGlvbj4nICsKICc8L3NlbGVjdD4nICsKQEAgLTExMCwxNCArMTE1LDEy
IEBAIGZvcm0uaW5uZXJIVE1MID0gJzxzZWxlY3QgaWQ9InNlbGVjdC1tdWx0aXBsZSIgbXVsdGlw
bGUgcmVxdWlyZWQ+JyArCiAnICA8b3B0aW9uIGlkPSJzaXplNC1lbXB0eSI+ZW1wdHk8L29wdGlv
bj4nICsKICcgIDxvcHRpb24gaWQ9InNpemU0LWFub3RoZXIiPmFub3RoZXI8L29wdGlvbj4nICsK
ICc8L3NlbGVjdD4nOwotdmFyIHNlbGVjdE11bHRpcGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIm11bHRpcGxlLWVtcHR5Iik7Ci1zZWxlY3RNdWx0aXBsZS5mb2N1cygpOwotc2ltdWxhdGVD
bGljayhzZWxlY3RNdWx0aXBsZSk7Ci12YXIgc2VsZWN0U2l6ZTQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic2l6ZTQtZW1wdHkiKTsKLXNlbGVjdFNpemU0LmZvY3VzKCk7Ci1zaW11bGF0ZUNs
aWNrKHNlbGVjdFNpemU0KTsKLXNob3VsZEJlKCdiYWNrZ3JvdW5kT2Yoc2VsZWN0TXVsdGlwbGUp
JywgJ3ZhbGlkQ29sb3InKTsKLXNob3VsZEJlKCdiYWNrZ3JvdW5kT2Yoc2VsZWN0U2l6ZTQpJywg
J3ZhbGlkQ29sb3InKTsKK21vdXNlRG93bk9uU2VsZWN0KCdzZWxlY3QtbXVsdGlwbGUnLCAwKTsK
K21vdXNlRG93bk9uU2VsZWN0KCdzZWxlY3Qtc2l6ZTQnLCAwKTsKK3Nob3VsZEJlKCdiYWNrZ3Jv
dW5kT2YoInNlbGVjdC1tdWx0aXBsZSIpJywgJ3ZhbGlkQ29sb3InKTsKK3Nob3VsZEJlKCdiYWNr
Z3JvdW5kT2YoIm11bHRpcGxlLWVtcHR5IiknLCAndHJhbnNwYXJlbnRDb2xvcicpOworc2hvdWxk
QmUoJ2JhY2tncm91bmRPZigic2VsZWN0LXNpemU0IiknLCAndmFsaWRDb2xvcicpOworc2hvdWxk
QmUoJ2JhY2tncm91bmRPZigic2l6ZTQtZW1wdHkiKScsICd0cmFuc3BhcmVudENvbG9yJyk7CiAK
IGRlYnVnKCdDaGFuZ2UgdGhlIHZhbHVlIHdpdGggYSBwbGFjZWhvbGRlciBsYWJlbCBvcHRpb246
Jyk7CiBlbCA9IG1ha2VJbnZhbGlkKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3NlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zZWxlY3QtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4dApp
bmRleCA4MTk3YWM0OThmM2QzNjNmYzU2Mzc3ZTYzMjQ5NTM4ZGEzOTNiMjk3Li5lMjI2NTM2N2Zh
OTM1ZjU0M2ViOWE3NTVlZjc1YmVjMGU5YjdmMTE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBl
Y3RlZC50eHQKQEAgLTE1LDggKzE1LDEwIEBAIEluc2lkZS9vdXRzaWRlIG9mIGEgZm9ybToKIFBB
U1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKIFBBU1MgYmFja2dyb3VuZE9mKGVs
KSBpcyBpbnZhbGlkQ29sb3IKIENoYW5nZSB0aGUgdmFsdWVzIG9mIHNlbGVjdCBlbGVtZW50cyB3
aXRob3V0IGV4cGxpY2l0IGluaXRpYWxpemluZyB2YWx1ZXMgYnkgY2xpY2tpbmc6Ci1QQVNTIGJh
Y2tncm91bmRPZihzZWxlY3RNdWx0aXBsZSkgaXMgdmFsaWRDb2xvcgotUEFTUyBiYWNrZ3JvdW5k
T2Yoc2VsZWN0U2l6ZTQpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCJzZWxlY3Qt
bXVsdGlwbGUiKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigibXVsdGlwbGUtZW1w
dHkiKSBpcyB0cmFuc3BhcmVudENvbG9yCitQQVNTIGJhY2tncm91bmRPZigic2VsZWN0LXNpemU0
IikgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoInNpemU0LWVtcHR5IikgaXMgdHJh
bnNwYXJlbnRDb2xvcgogQ2hhbmdlIHRoZSB2YWx1ZSB3aXRoIGEgcGxhY2Vob2xkZXIgbGFiZWwg
b3B0aW9uOgogUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIHZhbGlkQ29sb3IKIFBBU1MgYmFja2dy
b3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132558</attachid>
            <date>2012-03-19 01:47:31 -0700</date>
            <delta_ts>2012-03-20 18:17:37 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-79764-20120319174730.patch</filename>
            <type>text/plain</type>
            <size>20030</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhkZDhjOThhNDJkYjZi
Zjc5M2Q0OTgxNWIzMDMxYjE3OWY5Yjk4Mi4uOTU4YTJhZWNjN2E5NjA0NWZmMTg5NjI1NTQ5NThh
YmI3ZjJkNTgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAzLTE4ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBUaGUg
b3B0aW9uIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBmb3JtIGFzc29jaWF0ZWQgZWxlbWVudC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NzY0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBj
aGFuZ2VzIGJhc2UgY2xhc3Mgb2YgSFRNTE9wdGlvbkVMZW1lbnQgdG8gSFRNTEVsZW1lbnQKKyAg
ICAgICAgZnJvbSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGZvciBzYXZpbmcgbWVtb3J5IHNwYWNl
IGFuZCBpdGVyYXRpb24KKyAgICAgICAgdGltZSBvZiBleHRyYSAib3B0aW9uIiBlbGVtZW50cyBp
biBIVE1MRm9ybUVsZW1lbnQ6Om1fZm9ybUFzc29jaWF0ZWRFbGVtZW50cworICAgICAgICBhbmQg
bWF0Y2hpbmcgdGhlIEhUTUw1IHNwZWNpZmljYXRpb24gZm9yIGVhc2Ugb2YgbWFpbnRlbmFuY2Uu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIGJlaGF2aW9yIG9mIGhhbmRsaW5nIG9mIENT
UyBwc2V1ZG8gY2xhc3NlcyAiaW52YWxpZCIKKyAgICAgICAgYW5kICJ2YWxpZCIuIFRoZSAib3B0
aW9uIiBlbGVtZW50cyBubyBsb25nZXIgdXNlIHRoZXNlIENTUyBwc2V1ZG8gY2xhc3NlcworICAg
ICAgICBhcyBIVE1MNSBzcGVjaWZpY2F0aW9uLiBUaGlzIGJ1ZyB3YXMgZmlsZWQgaW4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDg4CisKKyAgICAgICAgQ2hhbmdl
cyBvZiBUZXh0SXRlcmF0b3IgaXMgbGVhZCBieSB1c2FnZSBvZiBpc0Zvcm1Db250cm9sRWxlbWVu
dC4gVGhpcworICAgICAgICBjaGFuZ2VzIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBtb3JlIG1lYW5p
bmdmdWwgcHJlZGljYXRlIGFzIHBhcnQgb2YKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwMzgxCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJ1dCB1cGRh
dGVkIHNlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbCB0ZXN0LgorCisgICAgICAgICog
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxl
Y3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KTogQWRkZWQgY2hlY2tpbmcgb2YgdGhlICJv
cHRpb24iIGVsZW1lbnQgYW5kIHJldHVybnMgZmFsc2UgYXMgSFRNTEZvcm1Db250cm9sRWxlbWVu
dC4KKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IFJlbW92ZWQgaXNGb3JtQ29udHJv
bEVsZW1lbnQgZm9yIFBzZXVkb0Rpc2FibGVkIGFuZCBQc2V1ZG9DaGVja2VkLgorICAgICAgICAq
IGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEtleWdl
bkVsZW1lbnQ6OkhUTUxLZXlnZW5FbGVtZW50KTogUmVtb3ZlZCBmb3JtIHBhcmFtZXRlciBvZiBj
YWxsIHNpdGUgb2YgSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZS4KKyAgICAgICAgKiBodG1sL0hU
TUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50
OjpIVE1MT3B0aW9uRWxlbWVudCk6IFJlbW92ZWQgZm9ybSBwYXJhbWV0ZXIgd2hpY2ggbm8gbG9u
Z2VyIG5lZWRlZC4gQ2hhbmdlZCBiYXNlIGNsYXNzIGluIGluaXRpYWxpemF0aW9uIGxpc3QuIEFk
ZGVkIG1fZGlzYWJsZWQgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0
aW9uRWxlbWVudDo6Y3JlYXRlKTogUmVtb3ZlZCBmb3JtIHBhcmFtZXRlciB3aGljaCBubyBsb25n
ZXIgbmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OmF0dGFjaCk6
IENoYW5nZWlkIGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dDo6ZGV0YWNoKTogQ2hhbmdlZCBiYXNlIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogQ2hhbmdlZCBiYXNlIGNsYXNzLiBBZGRlZCAi
ZGlzYWJsZWQiIGF0dHJpYnV0ZSBoYW5kbGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRp
b25FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOiBDaGFuZ2VkIGJhc2UgY2xhc3MuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSk6IENoYW5nZWQg
YmFzZSBjbGFzcy4KKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50Lmg6CisgICAgICAg
IChIVE1MT3B0aW9uRWxlbWVudCk6IEFkZGVkIG5ldyBtZW1iZXIgdmFyaWFibGUgbV9kaXNhYmxl
ZCB3aGljaCB3YXMgaW4gSFRNTEZvcm1Db250cm9sRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxPcHRpb25FbGVtZW50Ojpvd25FbGVtZW50RGlzYWJsZWQpOiBDaGFuZ2VkIGZvciB1c2lu
ZyBtX2Rpc2FibGVkLgorICAgICAgICAqIGh0bWwvSFRNTFRhZ05hbWVzLmluOiBSZW1vdmVkIGNv
bnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudCBmb3IgdGhlICJvcHRpb24iIGVsZW1lbnQsIHdoaWNo
IHdhcyB1c2VkIGZvciBwYXNzaW5nIGZvcm0gcGFyYW1ldGVyIHRvIGNyZWF0ZSBmdW5jdGlvbi4K
KwogMjAxMi0wMy0xOCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIERvbid0IG9jY2x1ZGUgb24gbWFpbi10aHJlYWQgYmVoaW5kIGxheWVy
cy9zdXJmYWNlcyB3aXRoIGltcGwtdGhyZWFkIGFuaW1hdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA1ZDJjOTkyYWM5Yzk2YTQ2MjI0MTAxMGYzN2ZlMmQ4
MWRmODY3YTA5Li5lOTI4YzA1OGJkM2QwYzkyNjkyNDczMTEyZTg3Y2ZmZDg1ZWMzMmFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC02NSw2ICs2NSw3IEBACiAj
aW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKQEAgLTEzNDQsNiArMTM0NSwx
OCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudChTdHls
ZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdAogICAgIH0KICNlbmRpZgogCisgICAgaWYgKGVsZW1l
bnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkgeworICAgICAgICBpZiAoIW1fZWxlbWVudC0+aGFz
VGFnTmFtZShvcHRpb25UYWcpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IEhUTUxPcHRpb25FbGVtZW50KiB0aGlzT3B0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxP
cHRpb25FbGVtZW50Kj4oZWxlbWVudCk7CisgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBvdGhl
ck9wdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVudCo+KG1fZWxlbWVu
dCk7CisgICAgICAgIGlmICh0aGlzT3B0aW9uRWxlbWVudC0+ZGlzYWJsZWQoKSAhPSBvdGhlck9w
dGlvbkVsZW1lbnQtPmRpc2FibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmICh0aGlzT3B0aW9uRWxlbWVudC0+c2VsZWN0ZWQoKSAhPSBvdGhlck9wdGlvbkVsZW1l
bnQtPnNlbGVjdGVkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAg
Ym9vbCBpc0NvbnRyb2wgPSBlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpOwogCiAgICAg
aWYgKGlzQ29udHJvbCAhPSBtX2VsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDA4NjQ5MTU5M2RkM2MyYzgyNjFi
ODgzZGQxYzczZDMzZjcyMDkzMWMuLmJmM2ZmZDU2Yzk4MWVhMTM4MmY1NmNkN2M0ODBhMzhhNzYw
ZDgxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0xMDUyLDcg
KzEwNTIsNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBT
ZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9EZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVu
dC0+aXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9EaXNhYmxlZDoKLSAgICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzRm9y
bUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAgICAgICBpZiAoZWxlbWVudCAmJiAoZWxlbWVudC0+
aXNGb3JtQ29udHJvbEVsZW1lbnQoKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykp
KQogICAgICAgICAgICAgICAgIHJldHVybiAhZWxlbWVudC0+aXNFbmFibGVkRm9ybUNvbnRyb2wo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9S
ZWFkT25seToKQEAgLTEwNzksNyArMTA3OSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVj
a09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAg
ICAgICAgICAgICByZXR1cm4gKGVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpICYmICFlbGVtZW50LT5p
c1ZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KCkpIHx8IGVsZW1lbnQtPmhhc1VuYWNjZXB0YWJsZVZh
bHVlKCk7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NoZWNrZWQ6CiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5pc0Zvcm1D
b250cm9sRWxlbWVudCgpKQorICAgICAgICAgICAgICAgIGlmICghZWxlbWVudCkKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgLy8gRXZlbiB0aG91Z2ggV2luSUUg
YWxsb3dzIGNoZWNrZWQgYW5kIGluZGV0ZXJtaW5hdGUgdG8gY28tZXhpc3QsIHRoZSBDU1Mgc2Vs
ZWN0b3Igc3BlYyBzYXlzIHRoYXQKICAgICAgICAgICAgICAgICAvLyB5b3UgY2FuJ3QgYmUgYm90
aCBjaGVja2VkIGFuZCBpbmRldGVybWluYXRlLiBXZSB3aWxsIGJlaGF2ZSBsaWtlIFdpbklFIGJl
aGluZCB0aGUgc2NlbmVzIGFuZCBqdXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxLZXlnZW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVs
ZW1lbnQuY3BwCmluZGV4IDgwNTM0NDE5ZTczMWU1ZjkwYzFkOTQ1N2ZiMmQ0MjUzYzVhNDRhNjku
LjMwOTRjOTM1MjNlNTYzZGQxN2I5MjE5NDQ1ZWM3MjllZGY4ZDY0MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGlubGluZSBI
VE1MS2V5Z2VuRWxlbWVudDo6SFRNTEtleWdlbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lCiAgICAgUmVmUHRyPEhUTUxTZWxlY3RFbGVtZW50PiBzZWxlY3QgPSBL
ZXlnZW5TZWxlY3RFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5cy5zaXplKCk7ICsraSkgewot
ICAgICAgICBSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IG9wdGlvbiA9IEhUTUxPcHRpb25FbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMtPmZvcm0oKSk7CisgICAgICAgIFJlZlB0cjxIVE1M
T3B0aW9uRWxlbWVudD4gb3B0aW9uID0gSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7CiAgICAgICAgIHNlbGVjdC0+YXBwZW5kQ2hpbGQob3B0aW9uLCBlYyk7CiAgICAgICAgIG9w
dGlvbi0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBrZXlzW2ldKSwgZWMpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggMTY5
NmU5YmVjNGZjNzJkYzA5OGYzYTNmMWJhMzgxMDhkNDBmOTRjZS4uYTliZTdjMDYxOTE3NmZiMzEz
YTE4MzQyY2QzZjIzMjc2MWI5YWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUu
aCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlck1l
bnVMaXN0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTY3JpcHRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
QEAgLTQ3LDIxICs0OCwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKLUhUTUxPcHRpb25FbGVtZW50OjpIVE1MT3B0aW9uRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxl
bWVudCogZm9ybSkKLSAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQsIGZvcm0pCitIVE1MT3B0aW9uRWxlbWVudDo6SFRNTE9wdGlvbkVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogSFRNTEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCisgICAgLCBtX2Rpc2FibGVkKGZhbHNlKQogICAgICwgbV9p
c1NlbGVjdGVkKGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKG9wdGlvblRhZykpOwog
fQogCi1QYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQorUGFzc1JlZlB0
cjxIVE1MT3B0aW9uRWxlbWVudD4gSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCog
ZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudChv
cHRpb25UYWcsIGRvY3VtZW50LCBmb3JtKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1M
T3B0aW9uRWxlbWVudChvcHRpb25UYWcsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRN
TE9wdGlvbkVsZW1lbnQ+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0p
CitQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxPcHRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
LCBmb3JtKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1M
T3B0aW9uRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCogZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwKQEAgLTg5LDEzICs5MSwx
MyBAQCB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjphdHRhY2goKQogewogICAgIGlmIChwYXJlbnRO
b2RlKCktPnJlbmRlclN0eWxlKCkpCiAgICAgICAgIHNldFJlbmRlclN0eWxlKHN0eWxlRm9yUmVu
ZGVyZXIoKSk7Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXR0YWNoKCk7CisgICAgSFRN
TEVsZW1lbnQ6OmF0dGFjaCgpOwogfQogCiB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjpkZXRhY2go
KQogewogICAgIG1fc3R5bGUuY2xlYXIoKTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpk
ZXRhY2goKTsKKyAgICBIVE1MRWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKIGJvb2wgSFRNTE9wdGlv
bkVsZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdApAQCAtMTA5LDEyICsxMTEsNiBAQCBib29s
IEhUTUxPcHRpb25FbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN1cHBv
cnRzRm9jdXMoKSAmJiByZW5kZXJTdHlsZSgpICYmIHJlbmRlclN0eWxlKCktPmRpc3BsYXkoKSAh
PSBOT05FOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIEhUTUxPcHRpb25FbGVtZW50Ojpmb3Jt
Q29udHJvbFR5cGUoKSBjb25zdAotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCBvcHRpb24sICgib3B0aW9uIikpOwotICAgIHJldHVybiBvcHRpb247Ci19Ci0K
IFN0cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6dGV4dCgpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKQEAgLTE5MSw3ICsxODcsMTUgQEAgaW50IEhU
TUxPcHRpb25FbGVtZW50OjppbmRleCgpIGNvbnN0CiAKIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKLSAgICBpZiAoYXR0ci0+bmFtZSgp
ID09IHNlbGVjdGVkQXR0cikgeworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gZGlzYWJsZWRBdHRy
KSB7CisgICAgICAgIGJvb2wgb2xkRGlzYWJsZWQgPSBtX2Rpc2FibGVkOworICAgICAgICBtX2Rp
c2FibGVkID0gIWF0dHItPmlzTnVsbCgpOworICAgICAgICBpZiAob2xkRGlzYWJsZWQgIT0gbV9k
aXNhYmxlZCkgeworICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgp
KQorICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5k
ZXJlcigpLCBFbmFibGVkU3RhdGUpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gc2VsZWN0ZWRBdHRyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qg
bWF0Y2ggd2hhdCB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIHNheXMuCiAgICAgICAgIC8vIFRoZSBz
cGVjaWZpY2F0aW9uIGltcGxpZXMgdGhhdCByZW1vdmluZyB0aGUgc2VsZWN0ZWQgYXR0cmlidXRl
IG9yCiAgICAgICAgIC8vIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBhIHNlbGVjdGVkIGF0dHJpYnV0
ZSB0aGF0IGlzIGFscmVhZHkgcHJlc2VudApAQCAtMjAwLDcgKzIwNCw3IEBAIHZvaWQgSFRNTE9w
dGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgLy8g
Y2FzZTsgd2UnZCBuZWVkIHRvIGRvIHRoZSBvdGhlciB3b3JrIGZyb20gdGhlIHNldFNlbGVjdGVk
IGZ1bmN0aW9uLgogICAgICAgICBtX2lzU2VsZWN0ZWQgPSAhYXR0ci0+aXNOdWxsKCk7CiAgICAg
fSBlbHNlCi0gICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0
dHIpOworICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiB9CiAKIFN0
cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6dmFsdWUoKSBjb25zdApAQCAtMjQ3LDcgKzI1MSw3IEBA
IHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBh
cnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlCiB7CiAgICAgaWYgKEhUTUxTZWxlY3RFbGVtZW50KiBz
ZWxlY3QgPSBvd25lclNlbGVjdEVsZW1lbnQoKSkKICAgICAgICAgc2VsZWN0LT5vcHRpb25FbGVt
ZW50Q2hpbGRyZW5DaGFuZ2VkKCk7Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hp
bGRDb3VudERlbHRhKTsKKyAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRC
eVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKIH0K
IAogSFRNTFNlbGVjdEVsZW1lbnQqIEhUTUxPcHRpb25FbGVtZW50Ojpvd25lclNlbGVjdEVsZW1l
bnQoKSBjb25zdApAQCAtMzE1LDcgKzMxOSw3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6Omlu
c2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKQogICAgICAgICBzZWxlY3QtPnNjcm9sbFRvU2VsZWN0
aW9uKCk7CiAgICAgfQogCi0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
VHJlZShkZWVwKTsKKyAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShkZWVwKTsKIH0K
IAogU3RyaW5nIEhUTUxPcHRpb25FbGVtZW50Ojpjb2xsZWN0T3B0aW9uSW5uZXJUZXh0KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAppbmRleCAyZWVkYWRmMWYx
NGM0NWEyOTc3MzhhZTdkYjM0YmY5N2YyYzVmYmQ1Li43N2M0OWQ3ZGZkMTc2YjE1YmI4MWFiYTNk
YWJlOGE1OWU3NGQyZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5o
CkBAIC0yNSwxNiArMjUsMTYgQEAKICNpZm5kZWYgSFRNTE9wdGlvbkVsZW1lbnRfaAogI2RlZmlu
ZSBIVE1MT3B0aW9uRWxlbWVudF9oCiAKLSNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKIAotY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQgOiBwdWJs
aWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCB7CitjbGFzcyBIVE1MT3B0aW9uRWxlbWVudCA6IHB1
YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE9w
dGlvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0
ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0
cmluZyYgdmFsdWUsCiAgICAgICAgYm9vbCBkZWZhdWx0U2VsZWN0ZWQsIGJvb2wgc2VsZWN0ZWQs
IEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IGxhYmVsKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKIAotICAg
IGJvb2wgb3duRWxlbWVudERpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6ZGlzYWJsZWQoKTsgfQorICAgIGJvb2wgb3duRWxlbWVudERpc2FibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9kaXNhYmxlZDsgfQogCiAgICAgdmlydHVhbCBib29sIGRpc2FibGVkKCkg
Y29uc3Q7CiAKQEAgLTYzLDE3ICs2MywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZWxlY3Rl
ZFN0YXRlKGJvb2wpOwogCiBwcml2YXRlOgotICAgIEhUTUxPcHRpb25FbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCogPSAwKTsKKyAgICBIVE1M
T3B0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzRW5h
YmxlZEZvcm1Db250cm9sKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIWRpc2FibGVkKCk7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2goKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVuZGVyU3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4pOwogCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlw
ZSgpIGNvbnN0OwotCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSop
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b1RyZWUoYm9vbCk7CkBA
IC04Nyw2ICs4Niw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgbV92YWx1ZTsKICAgICBTdHJp
bmcgbV9sYWJlbDsKKyAgICBib29sIG1fZGlzYWJsZWQ7CiAgICAgYm9vbCBtX2lzU2VsZWN0ZWQ7
CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX3N0eWxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFnTmFtZXMuaW4KaW5kZXggNzRlMjQwODYyMGVjYWY0YWRhNjVhNjZiNjUzNGRjZDI4Zjc1NzI2
Ni4uNDk5NzY1M2FhNjYxY2Q0ODhjZTA0YWY0MDYyOWViZWUxN2I1YzkwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFnTmFtZXMuaW4KQEAgLTkyLDcgKzkyLDcgQEAgbm9sYXllciBpbnRlcmZhY2VO
YW1lPUhUTUxFbGVtZW50CiBvYmplY3QgY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50LCBjb25z
dHJ1Y3Rvck5lZWRzQ3JlYXRlZEJ5UGFyc2VyCiBvbCBpbnRlcmZhY2VOYW1lPUhUTUxPTGlzdEVs
ZW1lbnQKIG9wdGdyb3VwIGludGVyZmFjZU5hbWU9SFRNTE9wdEdyb3VwRWxlbWVudAotb3B0aW9u
IGNvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudAorb3B0aW9uCiBvdXRwdXQgY29uc3RydWN0b3JO
ZWVkc0Zvcm1FbGVtZW50CiBzaGFkb3cgaW50ZXJmYWNlTmFtZT1IVE1MU2hhZG93RWxlbWVudCwg
Y29uZGl0aW9uYWw9U0hBRE9XX0RPTSwgcnVudGltZUNvbmRpdGlvbmFsPXNoYWRvd0RPTQogcCBp
bnRlcmZhY2VOYW1lPUhUTUxQYXJhZ3JhcGhFbGVtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTE3NGJiNjI5NTI2ODQw
ZGIxMjg3N2M0Njk3MjVmM2ZmMjdkNGFjMS4uYTVjYjM2ZjFhODE0M2Y4MjM2ODc4YTliNjBhNWEw
MDkyMTM5ZWI3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTE4ICBZb3NoaWZ1bWkg
SW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBUaGUgb3B0aW9u
IGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBmb3JtIGFzc29jaWF0ZWQgZWxlbWVudC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NzY0CisKKyAgICAgICAg
VGhpcyBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBzZWxlY3QtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpz
LCBhZGRzCisgICAgICAgIGFzc2VydGlvbnMgdG8gaW1wcm92ZSBjb3ZlcmFnZSwgYW5kIHVwZGF0
ZXMgdGVzdCBleHBlY3RhdGlvbiBmb3IKKyAgICAgICAgYmVoYXZpb3IgY2hhbmdlcyAobWFrZXMg
dGhlICJvcHRpb24iIGVsZW1lbnQgdXNlcyBDU1MgcHNldWRvIGNsYXNzCisgICAgICAgICI6dmFs
aWQiLikKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvZm9ybXMvcmVzb3VyY2VzL3NlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanM6Cisg
ICAgICAgIChtb3VzZURvd25PblNlbGVjdCk6IENvcGllZCBmcm9tIGxpc3Rib3gtc2VsZWN0aW9u
Lmh0bWwgZm9yIHJlcGxhY2luZyBicm9rZW4gc2ltdWxhdGVDbGljayB3aGljaCB1c2VkIHBvc2l0
aW9uIGFuZCBzaXplIG9mIHRoZSAib3B0aW9uIiBlbGVtZW50LCBidXQgdGhlc2UgdmFsdWVzIGFy
ZSB6ZXJvLiBOb3RlOiBmaXZlIGZpbGVzIHVzZSBtb3VzZURvd25PblNlbGVjdC4gV2UnbGwgc2hh
cmUgdGhpcyBmdW5jdGlvbiBpbiBmdXR1cmUgdHJhY2tlZCBieSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0OTYuCisgICAgICAgIChiYWNrZ3JvdW5kT2YpOiBBZGRl
ZCBTdHJpbmcgcGFyYW1ldGVyIHN1cHBvcnQgZm9yIGVhc2Ugb2Ygd3JpdGluZyB0ZXN0IGNhc2Uu
CisgICAgICAgICogZmFzdC9mb3Jtcy9zZWxlY3QtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVj
dGVkLnR4dDogQWRkZWQgY2hlY2sgZm8gYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgInNlbGVjdGlv
biIgZWxlbWVudC4gQ2hhbmdlZCBleHBlY3RlZCBjb2xvciBvZiB0aGUgIm9wdGlvbiIgZWxlbWVu
dCBiZWNhdXNlIHRoZSAib3B0aW9uIiBlbGVtZW50IGRvZXNuJ3Qgc3VwcG9ydCBDU1MgcHNldWRv
IGNsYXNzICI6dmFsaWQiLiBUaGlzIGFsc28gY292ZXJzIGJ1ZyA4MDA4OC4KKwogMjAxMi0wMy0x
OCAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludmFs
aWRhdGlvbiBpc3N1ZSB3aGVuIGNyZWF0aW5nIGJhY2tpbmcgbGF5ZXIgZm9yIGZpeGVkIHBvc2l0
aW9uZWQgZWxlbWVudC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3Vy
Y2VzL3NlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3Jlc291cmNlcy9zZWxlY3QtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzCmluZGV4IDYzODBi
YzI5ZGRkNjc1MjFkM2NhMWZhNDYxNzM5YTEwOTY0MWYwNmIuLjM1YzNhNWI0NTgxODQ2MzQ2MDA2
YzIxOGY1OWVhMjc0OTExNWE1ZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
cmVzb3VyY2VzL3NlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvc2VsZWN0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcwpA
QCAtNiwxNyArNiwxOCBAQCBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZvcm0pOwogdmFyIG5v
bkZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQobm9uRm9ybSk7CiAKLWZ1bmN0aW9uIHNpbXVsYXRlQ2xpY2soZWxlbWVudCkgewot
ICAgIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICB2YXIg
eCA9IHJlY3QubGVmdCArIHJlY3Qud2lkdGggLyAyOwotICAgIHZhciB5ID0gcmVjdC50b3AgKyBy
ZWN0LmhlaWdodCAvIDI7Ci0KLSAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikgewotICAgICAg
ICByZXR1cm47CitmdW5jdGlvbiBtb3VzZURvd25PblNlbGVjdChzZWxJZCwgaW5kZXgsIG1vZGlm
aWVyKSB7CisgICAgdmFyIHNsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsSWQpOworICAg
IHZhciBpdGVtSGVpZ2h0ID0gTWF0aC5mbG9vcihzbC5vZmZzZXRIZWlnaHQgLyBzbC5zaXplKTsK
KyAgICB2YXIgYm9yZGVyID0gMTsKKyAgICB2YXIgeSA9IGJvcmRlciArIGluZGV4ICogaXRlbUhl
aWdodDsKKworICAgIHNsLmZvY3VzKCk7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzbC5vZmZzZXRMZWZ0ICsgYm9yZGVyLCBz
bC5vZmZzZXRUb3AgKyB5IC0gd2luZG93LnBhZ2VZT2Zmc2V0KTsKKyAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKDAsIFttb2RpZmllcl0pOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVw
KDAsIFttb2RpZmllcl0pOwogICAgIH0KLSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5
KTsKLSAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7CiB9CiAKIGZ1bmN0aW9uIG1ha2VJbnZhbGlkKCkgewpAQCAtNTAsNiArNTEsOCBAQCBmdW5j
dGlvbiByZW1vdmVPcHRpb24ob3B0aW9uLCBzZWxlY3QpIHsKIH0KIAogZnVuY3Rpb24gYmFja2dy
b3VuZE9mKGVsKSB7CisgICAgaWYgKHR5cGVvZihlbCkgPT0gJ3N0cmluZycpCisgICAgICAgIGVs
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwpOwogICAgIHJldHVybiBkb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNr
Z3JvdW5kLWNvbG9yJyk7CiB9CiAKQEAgLTU4LDYgKzYxLDcgQEAgdmFyIGludmFsaWRDb2xvciA9
ICdyZ2IoMjU1LCAwLCAwKSc7CiB2YXIgbm9ybWFsQ29sb3IgPSAncmdiKDI1NSwgMjU1LCAyNTUp
JzsKIHZhciBkaXNhYmxlZENvbG9yID0gJ3JnYigwLCAwLCAwKSc7CiB2YXIgcmVhZE9ubHlDb2xv
ciA9ICdyZ2IoMCwgMjU1LCAwKScKK3ZhciB0cmFuc3BhcmVudENvbG9yID0gJ3JnYmEoMCwgMCwg
MCwgMCknOwogdmFyIHZhbGlkQ29sb3IgPSAncmdiKDAsIDAsIDI1NSknOwogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTAyLDcgKzEwNiw3IEBAIHNob3VsZEJlKGVs
QmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogZGVidWcoJ0NoYW5nZSB0aGUgdmFsdWVzIG9mIHNlbGVjdCBlbGVtZW50cyB3
aXRob3V0IGV4cGxpY2l0IGluaXRpYWxpemluZyB2YWx1ZXMgYnkgY2xpY2tpbmc6Jyk7Ci1mb3Jt
LmlubmVySFRNTCA9ICc8c2VsZWN0IGlkPSJzZWxlY3QtbXVsdGlwbGUiIG11bHRpcGxlIHJlcXVp
cmVkPicgKworZm9ybS5pbm5lckhUTUwgPSAnPHNlbGVjdCBpZD0ic2VsZWN0LW11bHRpcGxlIiBt
dWx0aXBsZSByZXF1aXJlZCBzaXplPSI0Ij4nICsKICcgIDxvcHRpb24gaWQ9Im11bHRpcGxlLWVt
cHR5Ij5lbXB0eTwvb3B0aW9uPicgKwogJyAgPG9wdGlvbiBpZD0ibXVsdGlwbGUtYW5vdGhlciI+
YW5vdGhlcjwvb3B0aW9uPicgKwogJzwvc2VsZWN0PicgKwpAQCAtMTEwLDE0ICsxMTQsMTIgQEAg
Zm9ybS5pbm5lckhUTUwgPSAnPHNlbGVjdCBpZD0ic2VsZWN0LW11bHRpcGxlIiBtdWx0aXBsZSBy
ZXF1aXJlZD4nICsKICcgIDxvcHRpb24gaWQ9InNpemU0LWVtcHR5Ij5lbXB0eTwvb3B0aW9uPicg
KwogJyAgPG9wdGlvbiBpZD0ic2l6ZTQtYW5vdGhlciI+YW5vdGhlcjwvb3B0aW9uPicgKwogJzwv
c2VsZWN0Pic7Ci12YXIgc2VsZWN0TXVsdGlwbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bXVsdGlwbGUtZW1wdHkiKTsKLXNlbGVjdE11bHRpcGxlLmZvY3VzKCk7Ci1zaW11bGF0ZUNsaWNr
KHNlbGVjdE11bHRpcGxlKTsKLXZhciBzZWxlY3RTaXplNCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzaXplNC1lbXB0eSIpOwotc2VsZWN0U2l6ZTQuZm9jdXMoKTsKLXNpbXVsYXRlQ2xpY2so
c2VsZWN0U2l6ZTQpOwotc2hvdWxkQmUoJ2JhY2tncm91bmRPZihzZWxlY3RNdWx0aXBsZSknLCAn
dmFsaWRDb2xvcicpOwotc2hvdWxkQmUoJ2JhY2tncm91bmRPZihzZWxlY3RTaXplNCknLCAndmFs
aWRDb2xvcicpOworbW91c2VEb3duT25TZWxlY3QoJ3NlbGVjdC1tdWx0aXBsZScsIDApOworbW91
c2VEb3duT25TZWxlY3QoJ3NlbGVjdC1zaXplNCcsIDApOworc2hvdWxkQmUoJ2JhY2tncm91bmRP
Zigic2VsZWN0LW11bHRpcGxlIiknLCAndmFsaWRDb2xvcicpOworc2hvdWxkQmUoJ2JhY2tncm91
bmRPZigibXVsdGlwbGUtZW1wdHkiKScsICd0cmFuc3BhcmVudENvbG9yJyk7CitzaG91bGRCZSgn
YmFja2dyb3VuZE9mKCJzZWxlY3Qtc2l6ZTQiKScsICd2YWxpZENvbG9yJyk7CitzaG91bGRCZSgn
YmFja2dyb3VuZE9mKCJzaXplNC1lbXB0eSIpJywgJ3RyYW5zcGFyZW50Q29sb3InKTsKIAogZGVi
dWcoJ0NoYW5nZSB0aGUgdmFsdWUgd2l0aCBhIHBsYWNlaG9sZGVyIGxhYmVsIG9wdGlvbjonKTsK
IGVsID0gbWFrZUludmFsaWQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
c2VsZWN0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0CmluZGV4
IDgxOTdhYzQ5OGYzZDM2M2ZjNTYzNzdlNjMyNDk1MzhkYTM5M2IyOTcuLmUyMjY1MzY3ZmE5MzVm
NTQzZWI5YTc1NWVmNzViZWMwZTliN2YxMTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc2VsZWN0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVk
LnR4dApAQCAtMTUsOCArMTUsMTAgQEAgSW5zaWRlL291dHNpZGUgb2YgYSBmb3JtOgogUEFTUyBi
YWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgogUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlz
IGludmFsaWRDb2xvcgogQ2hhbmdlIHRoZSB2YWx1ZXMgb2Ygc2VsZWN0IGVsZW1lbnRzIHdpdGhv
dXQgZXhwbGljaXQgaW5pdGlhbGl6aW5nIHZhbHVlcyBieSBjbGlja2luZzoKLVBBU1MgYmFja2dy
b3VuZE9mKHNlbGVjdE11bHRpcGxlKSBpcyB2YWxpZENvbG9yCi1QQVNTIGJhY2tncm91bmRPZihz
ZWxlY3RTaXplNCkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoInNlbGVjdC1tdWx0
aXBsZSIpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCJtdWx0aXBsZS1lbXB0eSIp
IGlzIHRyYW5zcGFyZW50Q29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCJzZWxlY3Qtc2l6ZTQiKSBp
cyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigic2l6ZTQtZW1wdHkiKSBpcyB0cmFuc3Bh
cmVudENvbG9yCiBDaGFuZ2UgdGhlIHZhbHVlIHdpdGggYSBwbGFjZWhvbGRlciBsYWJlbCBvcHRp
b246CiBQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgdmFsaWRDb2xvcgogUEFTUyBiYWNrZ3JvdW5k
T2YoZWwpIGlzIGludmFsaWRDb2xvcgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132942</attachid>
            <date>2012-03-20 18:17:42 -0700</date>
            <delta_ts>2012-03-21 23:50:37 -0700</delta_ts>
            <desc>Patch 3</desc>
            <filename>bug-79764-20120321101741.patch</filename>
            <type>text/plain</type>
            <size>19942</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRmNjViNWIxYWYyMWM5
YTJiN2E4OGVjNDI4NDUyZmU4ZmY0ZjEyYi4uMmQ4OTRkMmJhYjY3NjZlYzAwNDJiMDExMGZlZjk1
M2M5ZjhkZjk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAzLTE4ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBUaGUg
b3B0aW9uIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBmb3JtIGFzc29jaWF0ZWQgZWxlbWVudC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NzY0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBj
aGFuZ2VzIGJhc2UgY2xhc3Mgb2YgSFRNTE9wdGlvbkVMZW1lbnQgdG8gSFRNTEVsZW1lbnQKKyAg
ICAgICAgZnJvbSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGZvciBzYXZpbmcgbWVtb3J5IHNwYWNl
IGFuZCBpdGVyYXRpb24KKyAgICAgICAgdGltZSBvZiBleHRyYSAib3B0aW9uIiBlbGVtZW50cyBp
biBIVE1MRm9ybUVsZW1lbnQ6Om1fZm9ybUFzc29jaWF0ZWRFbGVtZW50cworICAgICAgICBhbmQg
bWF0Y2hpbmcgdGhlIEhUTUw1IHNwZWNpZmljYXRpb24gZm9yIGVhc2Ugb2YgbWFpbnRlbmFuY2Uu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIGJlaGF2aW9yIG9mIGhhbmRsaW5nIG9mIENT
UyBwc2V1ZG8gY2xhc3NlcyAiaW52YWxpZCIKKyAgICAgICAgYW5kICJ2YWxpZCIuIFRoZSAib3B0
aW9uIiBlbGVtZW50cyBubyBsb25nZXIgdXNlIHRoZXNlIENTUyBwc2V1ZG8gY2xhc3NlcworICAg
ICAgICBhcyBIVE1MNSBzcGVjaWZpY2F0aW9uLiBUaGlzIGJ1ZyB3YXMgZmlsZWQgaW4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDg4CisKKyAgICAgICAgQ2hhbmdl
cyBvZiBUZXh0SXRlcmF0b3IgaXMgbGVhZCBieSB1c2FnZSBvZiBpc0Zvcm1Db250cm9sRWxlbWVu
dC4gVGhpcworICAgICAgICBjaGFuZ2VzIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBtb3JlIG1lYW5p
bmdmdWwgcHJlZGljYXRlIGFzIHBhcnQgb2YKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwMzgxCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJ1dCB1cGRh
dGVkIHNlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbCB0ZXN0LgorCisgICAgICAgICog
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxl
Y3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KTogQWRkZWQgY2hlY2tpbmcgb2YgdGhlICJv
cHRpb24iIGVsZW1lbnQgYW5kIHJldHVybnMgZmFsc2UgYXMgSFRNTEZvcm1Db250cm9sRWxlbWVu
dC4KKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IFJlbW92ZWQgaXNGb3JtQ29udHJv
bEVsZW1lbnQgZm9yIFBzZXVkb0Rpc2FibGVkIGFuZCBQc2V1ZG9DaGVja2VkLgorICAgICAgICAq
IGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEtleWdl
bkVsZW1lbnQ6OkhUTUxLZXlnZW5FbGVtZW50KTogUmVtb3ZlZCBmb3JtIHBhcmFtZXRlciBvZiBj
YWxsIHNpdGUgb2YgSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZS4KKyAgICAgICAgKiBodG1sL0hU
TUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50
OjpIVE1MT3B0aW9uRWxlbWVudCk6IFJlbW92ZWQgZm9ybSBwYXJhbWV0ZXIgd2hpY2ggbm8gbG9u
Z2VyIG5lZWRlZC4gQ2hhbmdlZCBiYXNlIGNsYXNzIGluIGluaXRpYWxpemF0aW9uIGxpc3QuIEFk
ZGVkIG1fZGlzYWJsZWQgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0
aW9uRWxlbWVudDo6Y3JlYXRlKTogUmVtb3ZlZCBmb3JtIHBhcmFtZXRlciB3aGljaCBubyBsb25n
ZXIgbmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OmF0dGFjaCk6
IENoYW5nZWlkIGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dDo6ZGV0YWNoKTogQ2hhbmdlZCBiYXNlIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogQ2hhbmdlZCBiYXNlIGNsYXNzLiBBZGRlZCAi
ZGlzYWJsZWQiIGF0dHJpYnV0ZSBoYW5kbGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRp
b25FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOiBDaGFuZ2VkIGJhc2UgY2xhc3MuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSk6IENoYW5nZWQg
YmFzZSBjbGFzcy4KKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50Lmg6CisgICAgICAg
IChIVE1MT3B0aW9uRWxlbWVudCk6IEFkZGVkIG5ldyBtZW1iZXIgdmFyaWFibGUgbV9kaXNhYmxl
ZCB3aGljaCB3YXMgaW4gSFRNTEZvcm1Db250cm9sRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxPcHRpb25FbGVtZW50Ojpvd25FbGVtZW50RGlzYWJsZWQpOiBDaGFuZ2VkIGZvciB1c2lu
ZyBtX2Rpc2FibGVkLgorICAgICAgICAqIGh0bWwvSFRNTFRhZ05hbWVzLmluOiBSZW1vdmVkIGNv
bnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudCBmb3IgdGhlICJvcHRpb24iIGVsZW1lbnQsIHdoaWNo
IHdhcyB1c2VkIGZvciBwYXNzaW5nIGZvcm0gcGFyYW1ldGVyIHRvIGNyZWF0ZSBmdW5jdGlvbi4K
KwogMjAxMi0wMy0yMCAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBJbmNsdWRlIGZpeCBmb3IgZG9tL3hodG1sIHRlc3QgcHJvbWlzZWQgaW4gcjExMTQ0OS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA5NzE3OGVhMDI4YWZmYWY2
MTlhODI3M2IwNWI0OTMyN2FiZjU4ZjBmLi43YTJhNTRmODY3ZmM5MmVkNDliZTRjYTZjM2U3ZDEx
YmJkMDhjMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC02
NSw2ICs2NSw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5w
dXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE9wdGlv
bkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKQEAg
LTEzNDQsNiArMTM0NSwxOCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVX
aXRoRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdAogICAgIH0KICNlbmRpZgog
CisgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkgeworICAgICAgICBpZiAo
IW1fZWxlbWVudC0+aGFzVGFnTmFtZShvcHRpb25UYWcpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiB0aGlzT3B0aW9uRWxlbWVudCA9IHN0
YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50Kj4oZWxlbWVudCk7CisgICAgICAgIEhUTUxPcHRp
b25FbGVtZW50KiBvdGhlck9wdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxl
bWVudCo+KG1fZWxlbWVudCk7CisgICAgICAgIGlmICh0aGlzT3B0aW9uRWxlbWVudC0+aXNFbmFi
bGVkRm9ybUNvbnRyb2woKSAhPSBvdGhlck9wdGlvbkVsZW1lbnQtPmlzRW5hYmxlZEZvcm1Db250
cm9sKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICh0aGlzT3B0aW9u
RWxlbWVudC0+c2VsZWN0ZWQoKSAhPSBvdGhlck9wdGlvbkVsZW1lbnQtPnNlbGVjdGVkKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgYm9vbCBpc0NvbnRyb2wgPSBl
bGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpOwogCiAgICAgaWYgKGlzQ29udHJvbCAhPSBt
X2VsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3Rv
ckNoZWNrZXIuY3BwCmluZGV4IDA4NjQ5MTU5M2RkM2MyYzgyNjFiODgzZGQxYzczZDMzZjcyMDkz
MWMuLmJmM2ZmZDU2Yzk4MWVhMTM4MmY1NmNkN2M0ODBhMzhhNzYwZDgxM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBib29sIFNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29u
dGV4dCYgY29udGV4dCwgUAogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9EZWZhdWx0
OgogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC0+aXNEZWZhdWx0QnV0dG9u
Rm9yRm9ybSgpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9EaXNhYmxlZDoKLSAg
ICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkp
CisgICAgICAgICAgICBpZiAoZWxlbWVudCAmJiAoZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1l
bnQoKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykpKQogICAgICAgICAgICAgICAg
IHJldHVybiAhZWxlbWVudC0+aXNFbmFibGVkRm9ybUNvbnRyb2woKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9SZWFkT25seToKQEAgLTEwNzks
NyArMTA3OSw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0
IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICByZXR1cm4g
KGVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpICYmICFlbGVtZW50LT5pc1ZhbGlkRm9ybUNvbnRyb2xF
bGVtZW50KCkpIHx8IGVsZW1lbnQtPmhhc1VuYWNjZXB0YWJsZVZhbHVlKCk7CiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NoZWNrZWQ6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQor
ICAgICAgICAgICAgICAgIGlmICghZWxlbWVudCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgLy8gRXZlbiB0aG91Z2ggV2luSUUgYWxsb3dzIGNoZWNrZWQgYW5k
IGluZGV0ZXJtaW5hdGUgdG8gY28tZXhpc3QsIHRoZSBDU1Mgc2VsZWN0b3Igc3BlYyBzYXlzIHRo
YXQKICAgICAgICAgICAgICAgICAvLyB5b3UgY2FuJ3QgYmUgYm90aCBjaGVja2VkIGFuZCBpbmRl
dGVybWluYXRlLiBXZSB3aWxsIGJlaGF2ZSBsaWtlIFdpbklFIGJlaGluZCB0aGUgc2NlbmVzIGFu
ZCBqdXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCmluZGV4IDgw
NTM0NDE5ZTczMWU1ZjkwYzFkOTQ1N2ZiMmQ0MjUzYzVhNDRhNjkuLjMwOTRjOTM1MjNlNTYzZGQx
N2I5MjE5NDQ1ZWM3MjllZGY4ZDY0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEtleWdlbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdl
bkVsZW1lbnQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGlubGluZSBIVE1MS2V5Z2VuRWxlbWVudDo6
SFRNTEtleWdlbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lCiAg
ICAgUmVmUHRyPEhUTUxTZWxlY3RFbGVtZW50PiBzZWxlY3QgPSBLZXlnZW5TZWxlY3RFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwga2V5cy5zaXplKCk7ICsraSkgewotICAgICAgICBSZWZQdHI8SFRN
TE9wdGlvbkVsZW1lbnQ+IG9wdGlvbiA9IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQsIHRoaXMtPmZvcm0oKSk7CisgICAgICAgIFJlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gb3B0
aW9uID0gSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgICAgIHNlbGVj
dC0+YXBwZW5kQ2hpbGQob3B0aW9uLCBlYyk7CiAgICAgICAgIG9wdGlvbi0+YXBwZW5kQ2hpbGQo
VGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBrZXlzW2ldKSwgZWMpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggMTY5NmU5YmVjNGZjNzJkYzA5OGYz
YTNmMWJhMzgxMDhkNDBmOTRjZS4uYTliZTdjMDYxOTE3NmZiMzEzYTE4MzQyY2QzZjIzMjc2MWI5
YWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJOb2Rl
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlck1lbnVMaXN0LmgiCisjaW5jbHVk
ZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
VGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTQ3LDIxICs0OCwyMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhU
TUxPcHRpb25FbGVtZW50OjpIVE1MT3B0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKLSAgICA6
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pCitIVE1MT3B0
aW9uRWxlbWVudDo6SFRNTE9wdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCisgICAgLCBtX2Rpc2FibGVkKGZhbHNlKQogICAgICwgbV9pc1NlbGVjdGVkKGZhbHNlKQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKG9wdGlvblRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhU
TUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQorUGFzc1JlZlB0cjxIVE1MT3B0aW9uRWxlbWVu
dD4gSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudChvcHRpb25UYWcsIGRvY3VtZW50
LCBmb3JtKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudChvcHRp
b25UYWcsIGRvY3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IEhU
TUxPcHRpb25FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCitQYXNzUmVmUHRyPEhUTUxP
cHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUTUxPcHRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3Jl
YXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0
YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwKQEAgLTg5LDEzICs5MSwxMyBAQCB2b2lkIEhUTUxPcHRp
b25FbGVtZW50OjphdHRhY2goKQogewogICAgIGlmIChwYXJlbnROb2RlKCktPnJlbmRlclN0eWxl
KCkpCiAgICAgICAgIHNldFJlbmRlclN0eWxlKHN0eWxlRm9yUmVuZGVyZXIoKSk7Ci0gICAgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6YXR0YWNoKCk7CisgICAgSFRNTEVsZW1lbnQ6OmF0dGFjaCgp
OwogfQogCiB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjpkZXRhY2goKQogewogICAgIG1fc3R5bGUu
Y2xlYXIoKTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkZXRhY2goKTsKKyAgICBIVE1M
RWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKIGJvb2wgSFRNTE9wdGlvbkVsZW1lbnQ6OnN1cHBvcnRz
Rm9jdXMoKSBjb25zdApAQCAtMTA5LDEyICsxMTEsNiBAQCBib29sIEhUTUxPcHRpb25FbGVtZW50
Ojppc0ZvY3VzYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN1cHBvcnRzRm9jdXMoKSAmJiByZW5k
ZXJTdHlsZSgpICYmIHJlbmRlclN0eWxlKCktPmRpc3BsYXkoKSAhPSBOT05FOwogfQogCi1jb25z
dCBBdG9taWNTdHJpbmcmIEhUTUxPcHRpb25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25z
dAotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcHRpb24s
ICgib3B0aW9uIikpOwotICAgIHJldHVybiBvcHRpb247Ci19Ci0KIFN0cmluZyBIVE1MT3B0aW9u
RWxlbWVudDo6dGV4dCgpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+
ZG9jdW1lbnQoKTsKQEAgLTE5MSw3ICsxODcsMTUgQEAgaW50IEhUTUxPcHRpb25FbGVtZW50Ojpp
bmRleCgpIGNvbnN0CiAKIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKIHsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IHNlbGVjdGVkQXR0cikg
eworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gZGlzYWJsZWRBdHRyKSB7CisgICAgICAgIGJvb2wg
b2xkRGlzYWJsZWQgPSBtX2Rpc2FibGVkOworICAgICAgICBtX2Rpc2FibGVkID0gIWF0dHItPmlz
TnVsbCgpOworICAgICAgICBpZiAob2xkRGlzYWJsZWQgIT0gbV9kaXNhYmxlZCkgeworICAgICAg
ICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkg
JiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQorICAgICAgICAgICAgICAg
IHJlbmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3Rh
dGUpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2VsZWN0ZWRB
dHRyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgbWF0Y2ggd2hhdCB0aGUgSFRN
TCBzcGVjaWZpY2F0aW9uIHNheXMuCiAgICAgICAgIC8vIFRoZSBzcGVjaWZpY2F0aW9uIGltcGxp
ZXMgdGhhdCByZW1vdmluZyB0aGUgc2VsZWN0ZWQgYXR0cmlidXRlIG9yCiAgICAgICAgIC8vIGNo
YW5naW5nIHRoZSB2YWx1ZSBvZiBhIHNlbGVjdGVkIGF0dHJpYnV0ZSB0aGF0IGlzIGFscmVhZHkg
cHJlc2VudApAQCAtMjAwLDcgKzIwNCw3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgLy8gY2FzZTsgd2UnZCBuZWVkIHRv
IGRvIHRoZSBvdGhlciB3b3JrIGZyb20gdGhlIHNldFNlbGVjdGVkIGZ1bmN0aW9uLgogICAgICAg
ICBtX2lzU2VsZWN0ZWQgPSAhYXR0ci0+aXNOdWxsKCk7CiAgICAgfSBlbHNlCi0gICAgICAgIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOworICAgICAgICBIVE1M
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiB9CiAKIFN0cmluZyBIVE1MT3B0aW9uRWxl
bWVudDo6dmFsdWUoKSBjb25zdApAQCAtMjQ3LDcgKzI1MSw3IEBAIHZvaWQgSFRNTE9wdGlvbkVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3Jl
Q2hhbmdlCiB7CiAgICAgaWYgKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSBvd25lclNlbGVj
dEVsZW1lbnQoKSkKICAgICAgICAgc2VsZWN0LT5vcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2Vk
KCk7Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRC
eVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKKyAg
ICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hh
bmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKIH0KIAogSFRNTFNlbGVjdEVsZW1l
bnQqIEhUTUxPcHRpb25FbGVtZW50Ojpvd25lclNlbGVjdEVsZW1lbnQoKSBjb25zdApAQCAtMzE1
LDcgKzMxOSw3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoYm9v
bCBkZWVwKQogICAgICAgICBzZWxlY3QtPnNjcm9sbFRvU2VsZWN0aW9uKCk7CiAgICAgfQogCi0g
ICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShkZWVwKTsKKyAgICBI
VE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShkZWVwKTsKIH0KIAogU3RyaW5nIEhUTUxPcHRp
b25FbGVtZW50Ojpjb2xsZWN0T3B0aW9uSW5uZXJUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAppbmRleCAyZWVkYWRmMWYxNGM0NWEyOTc3MzhhZTdkYjM0
YmY5N2YyYzVmYmQ1Li4xNDMzYTgyYzgxOGM0MDk3MjNjYjgxZDg2ZGVkOTE0NjY3NGNkZjRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCkBAIC0yNSwxNiArMjUsMTYg
QEAKICNpZm5kZWYgSFRNTE9wdGlvbkVsZW1lbnRfaAogI2RlZmluZSBIVE1MT3B0aW9uRWxlbWVu
dF9oCiAKLSNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MU2VsZWN0RWxl
bWVudDsKIAotY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9s
RWxlbWVudCB7CitjbGFzcyBIVE1MT3B0aW9uRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0
ZShEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhU
TUxPcHRpb25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kiwg
SFRNTEZvcm1FbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1l
bnQ+IGNyZWF0ZShEb2N1bWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxPcHRpb25F
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0ZUZvckpTQ29uc3RydWN0b3Io
RG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUsCiAgICAg
ICAgYm9vbCBkZWZhdWx0U2VsZWN0ZWQsIGJvb2wgc2VsZWN0ZWQsIEV4Y2VwdGlvbkNvZGUmKTsK
IApAQCAtNTQsNyArNTQsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKIAotICAgIGJvb2wgb3duRWxlbWVudERp
c2FibGVkKCkgY29uc3QgeyByZXR1cm4gSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzYWJsZWQo
KTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuICFkaXNhYmxlZCgpOyB9CisgICAgYm9vbCBvd25FbGVtZW50RGlzYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZGlzYWJs
ZWQoKSBjb25zdDsKIApAQCAtNjMsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZWxl
Y3RlZFN0YXRlKGJvb2wpOwogCiBwcml2YXRlOgotICAgIEhUTUxPcHRpb25FbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCogPSAwKTsKKyAgICBI
VE1MT3B0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlz
Rm9jdXNhYmxlKCkgY29uc3Q7CkBAIC03Miw4ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSZW5kZXJTdHlsZShQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPik7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9y
bUNvbnRyb2xUeXBlKCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
QXR0cmlidXRlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJl
ZShib29sKTsKQEAgLTg3LDYgKzg2LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX3ZhbHVl
OwogICAgIFN0cmluZyBtX2xhYmVsOworICAgIGJvb2wgbV9kaXNhYmxlZDsKICAgICBib29sIG1f
aXNTZWxlY3RlZDsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1fc3R5bGU7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWdOYW1lcy5pbgppbmRleCA3NGUyNDA4NjIwZWNhZjRhZGE2NWE2NmI2NTM0
ZGNkMjhmNzU3MjY2Li40OTk3NjUzYWE2NjFjZDQ4OGNlMDRhZjQwNjI5ZWJlZTE3YjVjOTBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgpAQCAtOTIsNyArOTIsNyBAQCBub2xheWVy
IGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIG9iamVjdCBjb25zdHJ1Y3Rvck5lZWRzRm9ybUVs
ZW1lbnQsIGNvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXIKIG9sIGludGVyZmFjZU5hbWU9
SFRNTE9MaXN0RWxlbWVudAogb3B0Z3JvdXAgaW50ZXJmYWNlTmFtZT1IVE1MT3B0R3JvdXBFbGVt
ZW50Ci1vcHRpb24gY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50CitvcHRpb24KIG91dHB1dCBj
b25zdHJ1Y3Rvck5lZWRzRm9ybUVsZW1lbnQKIHNoYWRvdyBpbnRlcmZhY2VOYW1lPUhUTUxTaGFk
b3dFbGVtZW50LCBjb25kaXRpb25hbD1TSEFET1dfRE9NLCBydW50aW1lQ29uZGl0aW9uYWw9c2hh
ZG93RE9NCiBwIGludGVyZmFjZU5hbWU9SFRNTFBhcmFncmFwaEVsZW1lbnQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMzY5
NzM5ZmY5Y2UwYWNkZDAyZDEyNDNjZWQ5NTAzMzFkZDhkZWNiLi4wOTFmZWQxMTdiNThhYzIzYzNj
OTljMDExNzQ2NTU3MTBiYTYzODZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDMtMTgg
IFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KKworICAgICAgICBbRm9ybXNd
IFRoZSBvcHRpb24gZWxlbWVudCBzaG91bGQgbm90IGJlIGZvcm0gYXNzb2NpYXRlZCBlbGVtZW50
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3NjQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGZpeGVzIGEgYnVnIGluIHNlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMsIGFkZHMK
KyAgICAgICAgYXNzZXJ0aW9ucyB0byBpbXByb3ZlIGNvdmVyYWdlLCBhbmQgdXBkYXRlcyB0ZXN0
IGV4cGVjdGF0aW9uIGZvcgorICAgICAgICBiZWhhdmlvciBjaGFuZ2VzIChtYWtlcyB0aGUgIm9w
dGlvbiIgZWxlbWVudCB1c2VzIENTUyBwc2V1ZG8gY2xhc3MKKyAgICAgICAgIjp2YWxpZCIuKQor
CisgICAgICAgICogZmFzdC9mb3Jtcy9yZXNvdXJjZXMvc2VsZWN0LWxpdmUtcHNldWRvLXNlbGVj
dG9ycy5qczoKKyAgICAgICAgKG1vdXNlRG93bk9uU2VsZWN0KTogQ29waWVkIGZyb20gbGlzdGJv
eC1zZWxlY3Rpb24uaHRtbCBmb3IgcmVwbGFjaW5nIGJyb2tlbiBzaW11bGF0ZUNsaWNrIHdoaWNo
IHVzZWQgcG9zaXRpb24gYW5kIHNpemUgb2YgdGhlICJvcHRpb24iIGVsZW1lbnQsIGJ1dCB0aGVz
ZSB2YWx1ZXMgYXJlIHplcm8uIE5vdGU6IGZpdmUgZmlsZXMgdXNlIG1vdXNlRG93bk9uU2VsZWN0
LiBXZSdsbCBzaGFyZSB0aGlzIGZ1bmN0aW9uIGluIGZ1dHVyZSB0cmFja2VkIGJ5IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ5Ni4KKyAgICAgICAgKGJhY2tncm91
bmRPZik6IEFkZGVkIFN0cmluZyBwYXJhbWV0ZXIgc3VwcG9ydCBmb3IgZWFzZSBvZiB3cml0aW5n
IHRlc3QgY2FzZS4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NlbGVjdC1saXZlLXBzZXVkby1zZWxl
Y3RvcnMtZXhwZWN0ZWQudHh0OiBBZGRlZCBjaGVjayBmbyBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRo
ZSAic2VsZWN0aW9uIiBlbGVtZW50LiBDaGFuZ2VkIGV4cGVjdGVkIGNvbG9yIG9mIHRoZSAib3B0
aW9uIiBlbGVtZW50IGJlY2F1c2UgdGhlICJvcHRpb24iIGVsZW1lbnQgZG9lc24ndCBzdXBwb3J0
IENTUyBwc2V1ZG8gY2xhc3MgIjp2YWxpZCIuIFRoaXMgYWxzbyBjb3ZlcnMgYnVnIDgwMDg4Lgor
CiAyMDEyLTAzLTIwICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLiBCZWNhdXNlIHdlIG1pZ2h0IHNob3J0LWNpcmN1aXQgcGVybWlzc2lvbiBjYWxscywg
c29tZSBvZiB0aGVzZSB0ZXN0cyBuZWVkIHRvIGJlIHJld3JpdHRlbgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvc2VsZWN0LWxpdmUtcHNldWRvLXNlbGVjdG9y
cy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3NlbGVjdC1saXZlLXBzZXVk
by1zZWxlY3RvcnMuanMKaW5kZXggNjM4MGJjMjlkZGQ2NzUyMWQzY2ExZmE0NjE3MzlhMTA5NjQx
ZjA2Yi4uMzVjM2E1YjQ1ODE4NDYzNDYwMDZjMjE4ZjU5ZWEyNzQ5MTE1YTVkNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvc2VsZWN0LWxpdmUtcHNldWRvLXNl
bGVjdG9ycy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9zZWxlY3Qt
bGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzCkBAIC02LDE3ICs2LDE4IEBAIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZm9ybSk7CiB2YXIgbm9uRm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOwogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChub25Gb3JtKTsKIAotZnVuY3Rpb24g
c2ltdWxhdGVDbGljayhlbGVtZW50KSB7Ci0gICAgdmFyIHJlY3QgPSBlbGVtZW50LmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpOwotICAgIHZhciB4ID0gcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDI7
Ci0gICAgdmFyIHkgPSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMjsKLQotICAgIGlmICghd2lu
ZG93LmV2ZW50U2VuZGVyKSB7Ci0gICAgICAgIHJldHVybjsKK2Z1bmN0aW9uIG1vdXNlRG93bk9u
U2VsZWN0KHNlbElkLCBpbmRleCwgbW9kaWZpZXIpIHsKKyAgICB2YXIgc2wgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChzZWxJZCk7CisgICAgdmFyIGl0ZW1IZWlnaHQgPSBNYXRoLmZsb29yKHNs
Lm9mZnNldEhlaWdodCAvIHNsLnNpemUpOworICAgIHZhciBib3JkZXIgPSAxOworICAgIHZhciB5
ID0gYm9yZGVyICsgaW5kZXggKiBpdGVtSGVpZ2h0OworCisgICAgc2wuZm9jdXMoKTsKKyAgICBp
ZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHNsLm9mZnNldExlZnQgKyBib3JkZXIsIHNsLm9mZnNldFRvcCArIHkgLSB3aW5kb3cucGFnZVlP
ZmZzZXQpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oMCwgW21vZGlmaWVyXSk7Cisg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoMCwgW21vZGlmaWVyXSk7CiAgICAgfQotICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigp
OwotICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKIH0KIAogZnVuY3Rpb24gbWFrZUludmFsaWQo
KSB7CkBAIC01MCw2ICs1MSw4IEBAIGZ1bmN0aW9uIHJlbW92ZU9wdGlvbihvcHRpb24sIHNlbGVj
dCkgewogfQogCiBmdW5jdGlvbiBiYWNrZ3JvdW5kT2YoZWwpIHsKKyAgICBpZiAodHlwZW9mKGVs
KSA9PSAnc3RyaW5nJykKKyAgICAgICAgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbCk7
CiAgICAgcmV0dXJuIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKTsKIH0KIApAQCAtNTgsNiAr
NjEsNyBAQCB2YXIgaW52YWxpZENvbG9yID0gJ3JnYigyNTUsIDAsIDApJzsKIHZhciBub3JtYWxD
b2xvciA9ICdyZ2IoMjU1LCAyNTUsIDI1NSknOwogdmFyIGRpc2FibGVkQ29sb3IgPSAncmdiKDAs
IDAsIDApJzsKIHZhciByZWFkT25seUNvbG9yID0gJ3JnYigwLCAyNTUsIDApJwordmFyIHRyYW5z
cGFyZW50Q29sb3IgPSAncmdiYSgwLCAwLCAwLCAwKSc7CiB2YXIgdmFsaWRDb2xvciA9ICdyZ2Io
MCwgMCwgMjU1KSc7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0x
MDIsNyArMTA2LDcgQEAgc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBkZWJ1ZygnQ2hhbmdlIHRoZSB2
YWx1ZXMgb2Ygc2VsZWN0IGVsZW1lbnRzIHdpdGhvdXQgZXhwbGljaXQgaW5pdGlhbGl6aW5nIHZh
bHVlcyBieSBjbGlja2luZzonKTsKLWZvcm0uaW5uZXJIVE1MID0gJzxzZWxlY3QgaWQ9InNlbGVj
dC1tdWx0aXBsZSIgbXVsdGlwbGUgcmVxdWlyZWQ+JyArCitmb3JtLmlubmVySFRNTCA9ICc8c2Vs
ZWN0IGlkPSJzZWxlY3QtbXVsdGlwbGUiIG11bHRpcGxlIHJlcXVpcmVkIHNpemU9IjQiPicgKwog
JyAgPG9wdGlvbiBpZD0ibXVsdGlwbGUtZW1wdHkiPmVtcHR5PC9vcHRpb24+JyArCiAnICA8b3B0
aW9uIGlkPSJtdWx0aXBsZS1hbm90aGVyIj5hbm90aGVyPC9vcHRpb24+JyArCiAnPC9zZWxlY3Q+
JyArCkBAIC0xMTAsMTQgKzExNCwxMiBAQCBmb3JtLmlubmVySFRNTCA9ICc8c2VsZWN0IGlkPSJz
ZWxlY3QtbXVsdGlwbGUiIG11bHRpcGxlIHJlcXVpcmVkPicgKwogJyAgPG9wdGlvbiBpZD0ic2l6
ZTQtZW1wdHkiPmVtcHR5PC9vcHRpb24+JyArCiAnICA8b3B0aW9uIGlkPSJzaXplNC1hbm90aGVy
Ij5hbm90aGVyPC9vcHRpb24+JyArCiAnPC9zZWxlY3Q+JzsKLXZhciBzZWxlY3RNdWx0aXBsZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtdWx0aXBsZS1lbXB0eSIpOwotc2VsZWN0TXVsdGlw
bGUuZm9jdXMoKTsKLXNpbXVsYXRlQ2xpY2soc2VsZWN0TXVsdGlwbGUpOwotdmFyIHNlbGVjdFNp
emU0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpemU0LWVtcHR5Iik7Ci1zZWxlY3RTaXpl
NC5mb2N1cygpOwotc2ltdWxhdGVDbGljayhzZWxlY3RTaXplNCk7Ci1zaG91bGRCZSgnYmFja2dy
b3VuZE9mKHNlbGVjdE11bHRpcGxlKScsICd2YWxpZENvbG9yJyk7Ci1zaG91bGRCZSgnYmFja2dy
b3VuZE9mKHNlbGVjdFNpemU0KScsICd2YWxpZENvbG9yJyk7Cittb3VzZURvd25PblNlbGVjdCgn
c2VsZWN0LW11bHRpcGxlJywgMCk7Cittb3VzZURvd25PblNlbGVjdCgnc2VsZWN0LXNpemU0Jywg
MCk7CitzaG91bGRCZSgnYmFja2dyb3VuZE9mKCJzZWxlY3QtbXVsdGlwbGUiKScsICd2YWxpZENv
bG9yJyk7CitzaG91bGRCZSgnYmFja2dyb3VuZE9mKCJtdWx0aXBsZS1lbXB0eSIpJywgJ3RyYW5z
cGFyZW50Q29sb3InKTsKK3Nob3VsZEJlKCdiYWNrZ3JvdW5kT2YoInNlbGVjdC1zaXplNCIpJywg
J3ZhbGlkQ29sb3InKTsKK3Nob3VsZEJlKCdiYWNrZ3JvdW5kT2YoInNpemU0LWVtcHR5IiknLCAn
dHJhbnNwYXJlbnRDb2xvcicpOwogCiBkZWJ1ZygnQ2hhbmdlIHRoZSB2YWx1ZSB3aXRoIGEgcGxh
Y2Vob2xkZXIgbGFiZWwgb3B0aW9uOicpOwogZWwgPSBtYWtlSW52YWxpZCgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWxpdmUtcHNldWRvLXNl
bGVjdG9ycy1leHBlY3RlZC50eHQKaW5kZXggODE5N2FjNDk4ZjNkMzYzZmM1NjM3N2U2MzI0OTUz
OGRhMzkzYjI5Ny4uZTIyNjUzNjdmYTkzNWY1NDNlYjlhNzU1ZWY3NWJlYzBlOWI3ZjExOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtbGl2ZS1wc2V1ZG8tc2VsZWN0
b3JzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1saXZl
LXBzZXVkby1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0CkBAIC0xNSw4ICsxNSwxMCBAQCBJbnNpZGUv
b3V0c2lkZSBvZiBhIGZvcm06CiBQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9y
CiBQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9yCiBDaGFuZ2UgdGhlIHZhbHVl
cyBvZiBzZWxlY3QgZWxlbWVudHMgd2l0aG91dCBleHBsaWNpdCBpbml0aWFsaXppbmcgdmFsdWVz
IGJ5IGNsaWNraW5nOgotUEFTUyBiYWNrZ3JvdW5kT2Yoc2VsZWN0TXVsdGlwbGUpIGlzIHZhbGlk
Q29sb3IKLVBBU1MgYmFja2dyb3VuZE9mKHNlbGVjdFNpemU0KSBpcyB2YWxpZENvbG9yCitQQVNT
IGJhY2tncm91bmRPZigic2VsZWN0LW11bHRpcGxlIikgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNr
Z3JvdW5kT2YoIm11bHRpcGxlLWVtcHR5IikgaXMgdHJhbnNwYXJlbnRDb2xvcgorUEFTUyBiYWNr
Z3JvdW5kT2YoInNlbGVjdC1zaXplNCIpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9m
KCJzaXplNC1lbXB0eSIpIGlzIHRyYW5zcGFyZW50Q29sb3IKIENoYW5nZSB0aGUgdmFsdWUgd2l0
aCBhIHBsYWNlaG9sZGVyIGxhYmVsIG9wdGlvbjoKIFBBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyB2
YWxpZENvbG9yCiBQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9yCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133196</attachid>
            <date>2012-03-21 23:50:44 -0700</date>
            <delta_ts>2012-03-22 01:04:27 -0700</delta_ts>
            <desc>Patch 4</desc>
            <filename>bug-79764-20120322155042.patch</filename>
            <type>text/plain</type>
            <size>19449</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAzMmM2ZGU1NjMxODlk
MzJhNWI4OTg1YWUxZTc0Mzk0NTg5MzMzMS4uYzFkZWUxOTcyMzVhNjBiYTc0MmYyNzk5ZDk2YjBj
YzM5MTg5ZDE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTAzLTE4ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBUaGUg
b3B0aW9uIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBmb3JtIGFzc29jaWF0ZWQgZWxlbWVudC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NzY0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBj
aGFuZ2VzIGJhc2UgY2xhc3Mgb2YgSFRNTE9wdGlvbkVMZW1lbnQgdG8gSFRNTEVsZW1lbnQKKyAg
ICAgICAgZnJvbSBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGZvciBzYXZpbmcgbWVtb3J5IHNwYWNl
IGFuZCBpdGVyYXRpb24KKyAgICAgICAgdGltZSBvZiBleHRyYSAib3B0aW9uIiBlbGVtZW50cyBp
biBIVE1MRm9ybUVsZW1lbnQ6Om1fZm9ybUFzc29jaWF0ZWRFbGVtZW50cworICAgICAgICBhbmQg
bWF0Y2hpbmcgdGhlIEhUTUw1IHNwZWNpZmljYXRpb24gZm9yIGVhc2Ugb2YgbWFpbnRlbmFuY2Uu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIGJlaGF2aW9yIG9mIGhhbmRsaW5nIG9mIENT
UyBwc2V1ZG8gY2xhc3NlcyAiaW52YWxpZCIKKyAgICAgICAgYW5kICJ2YWxpZCIuIFRoZSAib3B0
aW9uIiBlbGVtZW50cyBubyBsb25nZXIgdXNlIHRoZXNlIENTUyBwc2V1ZG8gY2xhc3NlcworICAg
ICAgICBhcyBIVE1MNSBzcGVjaWZpY2F0aW9uLiBUaGlzIGJ1ZyB3YXMgZmlsZWQgaW4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDg4CisKKyAgICAgICAgQ2hhbmdl
cyBvZiBUZXh0SXRlcmF0b3IgaXMgbGVhZCBieSB1c2FnZSBvZiBpc0Zvcm1Db250cm9sRWxlbWVu
dC4gVGhpcworICAgICAgICBjaGFuZ2VzIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBtb3JlIG1lYW5p
bmdmdWwgcHJlZGljYXRlIGFzIHBhcnQgb2YKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgwMzgxCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJ1dCB1cGRh
dGVkIHNlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbCB0ZXN0LgorCisgICAgICAgICog
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxl
Y3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KTogQWRkZWQgY2hlY2tpbmcgb2YgdGhlICJv
cHRpb24iIGVsZW1lbnQgYW5kIHJldHVybnMgZmFsc2UgYXMgSFRNTEZvcm1Db250cm9sRWxlbWVu
dC4KKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IFJlbW92ZWQgaXNGb3JtQ29udHJv
bEVsZW1lbnQgZm9yIFBzZXVkb0Rpc2FibGVkIGFuZCBQc2V1ZG9DaGVja2VkLgorICAgICAgICAq
IGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEtleWdl
bkVsZW1lbnQ6OkhUTUxLZXlnZW5FbGVtZW50KTogUmVtb3ZlZCBmb3JtIHBhcmFtZXRlciBvZiBj
YWxsIHNpdGUgb2YgSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZS4KKyAgICAgICAgKiBodG1sL0hU
TUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50
OjpIVE1MT3B0aW9uRWxlbWVudCk6IFJlbW92ZWQgZm9ybSBwYXJhbWV0ZXIgd2hpY2ggbm8gbG9u
Z2VyIG5lZWRlZC4gQ2hhbmdlZCBiYXNlIGNsYXNzIGluIGluaXRpYWxpemF0aW9uIGxpc3QuIEFk
ZGVkIG1fZGlzYWJsZWQgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0
aW9uRWxlbWVudDo6Y3JlYXRlKTogUmVtb3ZlZCBmb3JtIHBhcmFtZXRlciB3aGljaCBubyBsb25n
ZXIgbmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OmF0dGFjaCk6
IENoYW5nZWlkIGJhc2UgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVu
dDo6ZGV0YWNoKTogQ2hhbmdlZCBiYXNlIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogQ2hhbmdlZCBiYXNlIGNsYXNzLiBBZGRlZCAi
ZGlzYWJsZWQiIGF0dHJpYnV0ZSBoYW5kbGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRp
b25FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOiBDaGFuZ2VkIGJhc2UgY2xhc3MuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSk6IENoYW5nZWQg
YmFzZSBjbGFzcy4KKyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50Lmg6CisgICAgICAg
IChIVE1MT3B0aW9uRWxlbWVudCk6IEFkZGVkIG5ldyBtZW1iZXIgdmFyaWFibGUgbV9kaXNhYmxl
ZCB3aGljaCB3YXMgaW4gSFRNTEZvcm1Db250cm9sRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxPcHRpb25FbGVtZW50Ojpvd25FbGVtZW50RGlzYWJsZWQpOiBDaGFuZ2VkIGZvciB1c2lu
ZyBtX2Rpc2FibGVkLgorICAgICAgICAqIGh0bWwvSFRNTFRhZ05hbWVzLmluOiBSZW1vdmVkIGNv
bnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudCBmb3IgdGhlICJvcHRpb24iIGVsZW1lbnQsIHdoaWNo
IHdhcyB1c2VkIGZvciBwYXNzaW5nIGZvcm0gcGFyYW1ldGVyIHRvIGNyZWF0ZSBmdW5jdGlvbi4K
KwogMjAxMi0wMy0yMSAgTHVrZSBNYWNwaGVyc29uICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb252ZXJ0VG9MZW5ndGgoKSBpbiBh
IGZldyBwbGFjZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXgg
YTBkZGNkNGZiNDIyNmJiZWYwNWUwMzQyYzIxYjM3OWIxYjI0YTYzMy4uZmFmOWU5YWFkNzZlODE2
MTI4ZjI0OWUxOWViZTIxOTMyZTc3OGI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFByb2dyZXNzRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEFy
ZWFFbGVtZW50LmgiCkBAIC0xMzQ0LDYgKzEzNDUsOSBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6
OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdAog
ICAgIH0KICNlbmRpZgogCisgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUob3B0aW9uVGFnKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgYm9vbCBpc0NvbnRyb2wgPSBlbGVtZW50LT5p
c0Zvcm1Db250cm9sRWxlbWVudCgpOwogCiAgICAgaWYgKGlzQ29udHJvbCAhPSBtX2VsZW1lbnQt
PmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCmluZGV4IDA4NjQ5MTU5M2RkM2MyYzgyNjFiODgzZGQxYzczZDMzZjcyMDkzMWMuLmJmM2Zm
ZDU2Yzk4MWVhMTM4MmY1NmNkN2M0ODBhMzhhNzYwZDgxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29u
dGV4dCwgUAogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9EZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC0+aXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgp
OwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9EaXNhYmxlZDoKLSAgICAgICAgICAg
IGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAgICAg
ICAgICBpZiAoZWxlbWVudCAmJiAoZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSB8fCBl
bGVtZW50LT5oYXNUYWdOYW1lKG9wdGlvblRhZykpKQogICAgICAgICAgICAgICAgIHJldHVybiAh
ZWxlbWVudC0+aXNFbmFibGVkRm9ybUNvbnRyb2woKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9SZWFkT25seToKQEAgLTEwNzksNyArMTA3OSw3
IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICByZXR1cm4gKGVsZW1lbnQt
PndpbGxWYWxpZGF0ZSgpICYmICFlbGVtZW50LT5pc1ZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KCkp
IHx8IGVsZW1lbnQtPmhhc1VuYWNjZXB0YWJsZVZhbHVlKCk7CiAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NoZWNrZWQ6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYg
KCFlbGVtZW50IHx8ICFlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQorICAgICAgICAg
ICAgICAgIGlmICghZWxlbWVudCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgLy8gRXZlbiB0aG91Z2ggV2luSUUgYWxsb3dzIGNoZWNrZWQgYW5kIGluZGV0ZXJt
aW5hdGUgdG8gY28tZXhpc3QsIHRoZSBDU1Mgc2VsZWN0b3Igc3BlYyBzYXlzIHRoYXQKICAgICAg
ICAgICAgICAgICAvLyB5b3UgY2FuJ3QgYmUgYm90aCBjaGVja2VkIGFuZCBpbmRldGVybWluYXRl
LiBXZSB3aWxsIGJlaGF2ZSBsaWtlIFdpbklFIGJlaGluZCB0aGUgc2NlbmVzIGFuZCBqdXN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCmluZGV4IDgwNTM0NDE5ZTcz
MWU1ZjkwYzFkOTQ1N2ZiMmQ0MjUzYzVhNDRhNjkuLjMwOTRjOTM1MjNlNTYzZGQxN2I5MjE5NDQ1
ZWM3MjllZGY4ZDY0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdl
bkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIGlubGluZSBIVE1MS2V5Z2VuRWxlbWVudDo6SFRNTEtleWdl
bkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lCiAgICAgUmVmUHRy
PEhUTUxTZWxlY3RFbGVtZW50PiBzZWxlY3QgPSBLZXlnZW5TZWxlY3RFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwga2V5cy5zaXplKCk7ICsraSkgewotICAgICAgICBSZWZQdHI8SFRNTE9wdGlvbkVs
ZW1lbnQ+IG9wdGlvbiA9IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMt
PmZvcm0oKSk7CisgICAgICAgIFJlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gb3B0aW9uID0gSFRN
TE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgICAgIHNlbGVjdC0+YXBwZW5k
Q2hpbGQob3B0aW9uLCBlYyk7CiAgICAgICAgIG9wdGlvbi0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3Jl
YXRlKGRvY3VtZW50LCBrZXlzW2ldKSwgZWMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggMTY5NmU5YmVjNGZjNzJkYzA5OGYzYTNmMWJhMzgx
MDhkNDBmOTRjZS4uYTliZTdjMDYxOTE3NmZiMzEzYTE4MzQyY2QzZjIzMjc2MWI5YWYyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlck1lbnVMaXN0LmgiCisjaW5jbHVkZSAiUmVuZGVy
VGhlbWUuaCIKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTQ3LDIxICs0OCwyMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxPcHRpb25F
bGVtZW50OjpIVE1MT3B0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKLSAgICA6IEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pCitIVE1MT3B0aW9uRWxlbWVu
dDo6SFRNTE9wdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQorICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCisgICAg
LCBtX2Rpc2FibGVkKGZhbHNlKQogICAgICwgbV9pc1NlbGVjdGVkKGZhbHNlKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKG9wdGlvblRhZykpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxPcHRpb25F
bGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgSFRN
TEZvcm1FbGVtZW50KiBmb3JtKQorUGFzc1JlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gSFRNTE9w
dGlvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudChvcHRpb25UYWcsIGRvY3VtZW50LCBmb3JtKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudChvcHRpb25UYWcsIGRv
Y3VtZW50KSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IEhUTUxPcHRpb25F
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCitQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVt
ZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxP
cHRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MT3B0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCiBQYXNz
UmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlRm9ySlND
b25zdHJ1Y3RvcihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwKQEAgLTg5LDEzICs5MSwxMyBAQCB2b2lkIEhUTUxPcHRpb25FbGVtZW50
OjphdHRhY2goKQogewogICAgIGlmIChwYXJlbnROb2RlKCktPnJlbmRlclN0eWxlKCkpCiAgICAg
ICAgIHNldFJlbmRlclN0eWxlKHN0eWxlRm9yUmVuZGVyZXIoKSk7Ci0gICAgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6YXR0YWNoKCk7CisgICAgSFRNTEVsZW1lbnQ6OmF0dGFjaCgpOwogfQogCiB2
b2lkIEhUTUxPcHRpb25FbGVtZW50OjpkZXRhY2goKQogewogICAgIG1fc3R5bGUuY2xlYXIoKTsK
LSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkZXRhY2goKTsKKyAgICBIVE1MRWxlbWVudDo6
ZGV0YWNoKCk7CiB9CiAKIGJvb2wgSFRNTE9wdGlvbkVsZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBj
b25zdApAQCAtMTA5LDEyICsxMTEsNiBAQCBib29sIEhUTUxPcHRpb25FbGVtZW50Ojppc0ZvY3Vz
YWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN1cHBvcnRzRm9jdXMoKSAmJiByZW5kZXJTdHlsZSgp
ICYmIHJlbmRlclN0eWxlKCktPmRpc3BsYXkoKSAhPSBOT05FOwogfQogCi1jb25zdCBBdG9taWNT
dHJpbmcmIEhUTUxPcHRpb25FbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAotewotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBvcHRpb24sICgib3B0aW9u
IikpOwotICAgIHJldHVybiBvcHRpb247Ci19Ci0KIFN0cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6
dGV4dCgpIGNvbnN0CiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQo
KTsKQEAgLTE5MSw3ICsxODcsMTUgQEAgaW50IEhUTUxPcHRpb25FbGVtZW50OjppbmRleCgpIGNv
bnN0CiAKIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSog
YXR0cikKIHsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IHNlbGVjdGVkQXR0cikgeworICAgIGlm
IChhdHRyLT5uYW1lKCkgPT0gZGlzYWJsZWRBdHRyKSB7CisgICAgICAgIGJvb2wgb2xkRGlzYWJs
ZWQgPSBtX2Rpc2FibGVkOworICAgICAgICBtX2Rpc2FibGVkID0gIWF0dHItPmlzTnVsbCgpOwor
ICAgICAgICBpZiAob2xkRGlzYWJsZWQgIT0gbV9kaXNhYmxlZCkgeworICAgICAgICAgICAgc2V0
TmVlZHNTdHlsZVJlY2FsYygpOworICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVy
ZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQorICAgICAgICAgICAgICAgIHJlbmRlcmVy
KCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOworICAg
ICAgICB9CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2VsZWN0ZWRBdHRyKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgbWF0Y2ggd2hhdCB0aGUgSFRNTCBzcGVjaWZp
Y2F0aW9uIHNheXMuCiAgICAgICAgIC8vIFRoZSBzcGVjaWZpY2F0aW9uIGltcGxpZXMgdGhhdCBy
ZW1vdmluZyB0aGUgc2VsZWN0ZWQgYXR0cmlidXRlIG9yCiAgICAgICAgIC8vIGNoYW5naW5nIHRo
ZSB2YWx1ZSBvZiBhIHNlbGVjdGVkIGF0dHJpYnV0ZSB0aGF0IGlzIGFscmVhZHkgcHJlc2VudApA
QCAtMjAwLDcgKzIwNCw3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgLy8gY2FzZTsgd2UnZCBuZWVkIHRvIGRvIHRoZSBv
dGhlciB3b3JrIGZyb20gdGhlIHNldFNlbGVjdGVkIGZ1bmN0aW9uLgogICAgICAgICBtX2lzU2Vs
ZWN0ZWQgPSAhYXR0ci0+aXNOdWxsKCk7CiAgICAgfSBlbHNlCi0gICAgICAgIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOworICAgICAgICBIVE1MRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiB9CiAKIFN0cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6dmFs
dWUoKSBjb25zdApAQCAtMjQ3LDcgKzI1MSw3IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlCiB7
CiAgICAgaWYgKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSBvd25lclNlbGVjdEVsZW1lbnQo
KSkKICAgICAgICAgc2VsZWN0LT5vcHRpb25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCk7Ci0gICAg
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwg
YmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKKyAgICBIVE1MRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRl
ckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKIH0KIAogSFRNTFNlbGVjdEVsZW1lbnQqIEhUTUxP
cHRpb25FbGVtZW50Ojpvd25lclNlbGVjdEVsZW1lbnQoKSBjb25zdApAQCAtMzE1LDcgKzMxOSw3
IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKQog
ICAgICAgICBzZWxlY3QtPnNjcm9sbFRvU2VsZWN0aW9uKCk7CiAgICAgfQogCi0gICAgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShkZWVwKTsKKyAgICBIVE1MRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvVHJlZShkZWVwKTsKIH0KIAogU3RyaW5nIEhUTUxPcHRpb25FbGVtZW50
Ojpjb2xsZWN0T3B0aW9uSW5uZXJUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuaAppbmRleCAyZWVkYWRmMWYxNGM0NWEyOTc3MzhhZTdkYjM0YmY5N2YyYzVm
YmQ1Li4xNDMzYTgyYzgxOGM0MDk3MjNjYjgxZDg2ZGVkOTE0NjY3NGNkZjRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCkBAIC0yNSwxNiArMjUsMTYgQEAKICNpZm5k
ZWYgSFRNTE9wdGlvbkVsZW1lbnRfaAogI2RlZmluZSBIVE1MT3B0aW9uRWxlbWVudF9oCiAKLSNp
bmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKIAot
Y2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCB7
CitjbGFzcyBIVE1MT3B0aW9uRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVu
dCosIEhUTUxGb3JtRWxlbWVudCopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxPcHRpb25F
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1F
bGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0
ZShEb2N1bWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxPcHRpb25FbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SFRNTE9wdGlvbkVsZW1lbnQ+IGNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1lbnQq
LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUsCiAgICAgICAgYm9vbCBk
ZWZhdWx0U2VsZWN0ZWQsIGJvb2wgc2VsZWN0ZWQsIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAtNTQs
NyArNTQsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRMYWJlbChjb25zdCBTdHJpbmcmKTsKIAotICAgIGJvb2wgb3duRWxlbWVudERpc2FibGVkKCkg
Y29uc3QgeyByZXR1cm4gSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzYWJsZWQoKTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc0VuYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuICFkaXNhYmxlZCgpOyB9CisgICAgYm9vbCBvd25FbGVtZW50RGlzYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2Rpc2FibGVkOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWQoKSBjb25z
dDsKIApAQCAtNjMsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZWxlY3RlZFN0YXRl
KGJvb2wpOwogCiBwcml2YXRlOgotICAgIEhUTUxPcHRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCogPSAwKTsKKyAgICBIVE1MT3B0aW9u
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNhYmxl
KCkgY29uc3Q7CkBAIC03Miw4ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRl
dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSZW5kZXJTdHlsZShQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPik7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xU
eXBlKCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRl
KikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZShib29sKTsK
QEAgLTg3LDYgKzg2LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX3ZhbHVlOwogICAgIFN0
cmluZyBtX2xhYmVsOworICAgIGJvb2wgbV9kaXNhYmxlZDsKICAgICBib29sIG1faXNTZWxlY3Rl
ZDsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1fc3R5bGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWdOYW1lcy5pbgppbmRleCA3NGUyNDA4NjIwZWNhZjRhZGE2NWE2NmI2NTM0ZGNkMjhmNzU3
MjY2Li40OTk3NjUzYWE2NjFjZDQ4OGNlMDRhZjQwNjI5ZWJlZTE3YjVjOTBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWdOYW1lcy5pbgpAQCAtOTIsNyArOTIsNyBAQCBub2xheWVyIGludGVyZmFj
ZU5hbWU9SFRNTEVsZW1lbnQKIG9iamVjdCBjb25zdHJ1Y3Rvck5lZWRzRm9ybUVsZW1lbnQsIGNv
bnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXIKIG9sIGludGVyZmFjZU5hbWU9SFRNTE9MaXN0
RWxlbWVudAogb3B0Z3JvdXAgaW50ZXJmYWNlTmFtZT1IVE1MT3B0R3JvdXBFbGVtZW50Ci1vcHRp
b24gY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50CitvcHRpb24KIG91dHB1dCBjb25zdHJ1Y3Rv
ck5lZWRzRm9ybUVsZW1lbnQKIHNoYWRvdyBpbnRlcmZhY2VOYW1lPUhUTUxTaGFkb3dFbGVtZW50
LCBjb25kaXRpb25hbD1TSEFET1dfRE9NLCBydW50aW1lQ29uZGl0aW9uYWw9c2hhZG93RE9NCiBw
IGludGVyZmFjZU5hbWU9SFRNTFBhcmFncmFwaEVsZW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1NzM1ODQxMTJjZDc3
MGY2ZmExZWExYjU1YTBjYzZlMzI3YThiODhlLi5jNGQxNDI1NmU5YTlmZmIyZWViOTY5MzZkOTE3
YWM1NTVjYzYwZjI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDMtMTggIFlvc2hpZnVt
aSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KKworICAgICAgICBbRm9ybXNdIFRoZSBvcHRp
b24gZWxlbWVudCBzaG91bGQgbm90IGJlIGZvcm0gYXNzb2NpYXRlZCBlbGVtZW50LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGZpeGVz
IGEgYnVnIGluIHNlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMsIGFkZHMKKyAgICAgICAg
YXNzZXJ0aW9ucyB0byBpbXByb3ZlIGNvdmVyYWdlLCBhbmQgdXBkYXRlcyB0ZXN0IGV4cGVjdGF0
aW9uIGZvcgorICAgICAgICBiZWhhdmlvciBjaGFuZ2VzIChtYWtlcyB0aGUgIm9wdGlvbiIgZWxl
bWVudCB1c2VzIENTUyBwc2V1ZG8gY2xhc3MKKyAgICAgICAgIjp2YWxpZCIuKQorCisgICAgICAg
ICogZmFzdC9mb3Jtcy9yZXNvdXJjZXMvc2VsZWN0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qczoK
KyAgICAgICAgKG1vdXNlRG93bk9uU2VsZWN0KTogQ29waWVkIGZyb20gbGlzdGJveC1zZWxlY3Rp
b24uaHRtbCBmb3IgcmVwbGFjaW5nIGJyb2tlbiBzaW11bGF0ZUNsaWNrIHdoaWNoIHVzZWQgcG9z
aXRpb24gYW5kIHNpemUgb2YgdGhlICJvcHRpb24iIGVsZW1lbnQsIGJ1dCB0aGVzZSB2YWx1ZXMg
YXJlIHplcm8uIE5vdGU6IGZpdmUgZmlsZXMgdXNlIG1vdXNlRG93bk9uU2VsZWN0LiBXZSdsbCBz
aGFyZSB0aGlzIGZ1bmN0aW9uIGluIGZ1dHVyZSB0cmFja2VkIGJ5IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ5Ni4KKyAgICAgICAgKGJhY2tncm91bmRPZik6IEFk
ZGVkIFN0cmluZyBwYXJhbWV0ZXIgc3VwcG9ydCBmb3IgZWFzZSBvZiB3cml0aW5nIHRlc3QgY2Fz
ZS4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMtZXhw
ZWN0ZWQudHh0OiBBZGRlZCBjaGVjayBmbyBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSAic2VsZWN0
aW9uIiBlbGVtZW50LiBDaGFuZ2VkIGV4cGVjdGVkIGNvbG9yIG9mIHRoZSAib3B0aW9uIiBlbGVt
ZW50IGJlY2F1c2UgdGhlICJvcHRpb24iIGVsZW1lbnQgZG9lc24ndCBzdXBwb3J0IENTUyBwc2V1
ZG8gY2xhc3MgIjp2YWxpZCIuIFRoaXMgYWxzbyBjb3ZlcnMgYnVnIDgwMDg4LgorCiAyMDEyLTAz
LTIxICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIGh0
dHAvdGVzdHMvbWVkaWEvdmlkZW8tdXNlcmFnZW50Lmh0bWwgc2hvdWxkIGJlIHNraXBwZWQgb24g
TWFjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9zZWxlY3Qt
bGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJj
ZXMvc2VsZWN0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcwppbmRleCA2MzgwYmMyOWRkZDY3NTIx
ZDNjYTFmYTQ2MTczOWExMDk2NDFmMDZiLi4zNWMzYTViNDU4MTg0NjM0NjAwNmMyMThmNTllYTI3
NDkxMTVhNWQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9z
ZWxlY3QtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvcmVzb3VyY2VzL3NlbGVjdC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMKQEAgLTYsMTcgKzYs
MTggQEAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmb3JtKTsKIHZhciBub25Gb3JtID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5v
bkZvcm0pOwogCi1mdW5jdGlvbiBzaW11bGF0ZUNsaWNrKGVsZW1lbnQpIHsKLSAgICB2YXIgcmVj
dCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAgdmFyIHggPSByZWN0Lmxl
ZnQgKyByZWN0LndpZHRoIC8gMjsKLSAgICB2YXIgeSA9IHJlY3QudG9wICsgcmVjdC5oZWlnaHQg
LyAyOwotCi0gICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICAgICAgcmV0dXJuOwor
ZnVuY3Rpb24gbW91c2VEb3duT25TZWxlY3Qoc2VsSWQsIGluZGV4LCBtb2RpZmllcikgeworICAg
IHZhciBzbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbElkKTsKKyAgICB2YXIgaXRlbUhl
aWdodCA9IE1hdGguZmxvb3Ioc2wub2Zmc2V0SGVpZ2h0IC8gc2wuc2l6ZSk7CisgICAgdmFyIGJv
cmRlciA9IDE7CisgICAgdmFyIHkgPSBib3JkZXIgKyBpbmRleCAqIGl0ZW1IZWlnaHQ7CisKKyAg
ICBzbC5mb2N1cygpOworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc2wub2Zmc2V0TGVmdCArIGJvcmRlciwgc2wub2Zmc2V0VG9w
ICsgeSAtIHdpbmRvdy5wYWdlWU9mZnNldCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigwLCBbbW9kaWZpZXJdKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgwLCBbbW9kaWZp
ZXJdKTsKICAgICB9Ci0gICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7Ci0gICAgZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7Ci0gICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwogfQogCiBm
dW5jdGlvbiBtYWtlSW52YWxpZCgpIHsKQEAgLTUwLDYgKzUxLDggQEAgZnVuY3Rpb24gcmVtb3Zl
T3B0aW9uKG9wdGlvbiwgc2VsZWN0KSB7CiB9CiAKIGZ1bmN0aW9uIGJhY2tncm91bmRPZihlbCkg
eworICAgIGlmICh0eXBlb2YoZWwpID09ICdzdHJpbmcnKQorICAgICAgICBlbCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGVsKTsKICAgICByZXR1cm4gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xv
cicpOwogfQogCkBAIC01OCw2ICs2MSw3IEBAIHZhciBpbnZhbGlkQ29sb3IgPSAncmdiKDI1NSwg
MCwgMCknOwogdmFyIG5vcm1hbENvbG9yID0gJ3JnYigyNTUsIDI1NSwgMjU1KSc7CiB2YXIgZGlz
YWJsZWRDb2xvciA9ICdyZ2IoMCwgMCwgMCknOwogdmFyIHJlYWRPbmx5Q29sb3IgPSAncmdiKDAs
IDI1NSwgMCknCit2YXIgdHJhbnNwYXJlbnRDb2xvciA9ICdyZ2JhKDAsIDAsIDAsIDApJzsKIHZh
ciB2YWxpZENvbG9yID0gJ3JnYigwLCAwLCAyNTUpJzsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KQEAgLTEwMiw3ICsxMDYsNyBAQCBzaG91bGRCZShlbEJhY2tncm91bmQs
ICdpbnZhbGlkQ29sb3InKTsKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
IGRlYnVnKCdDaGFuZ2UgdGhlIHZhbHVlcyBvZiBzZWxlY3QgZWxlbWVudHMgd2l0aG91dCBleHBs
aWNpdCBpbml0aWFsaXppbmcgdmFsdWVzIGJ5IGNsaWNraW5nOicpOwotZm9ybS5pbm5lckhUTUwg
PSAnPHNlbGVjdCBpZD0ic2VsZWN0LW11bHRpcGxlIiBtdWx0aXBsZSByZXF1aXJlZD4nICsKK2Zv
cm0uaW5uZXJIVE1MID0gJzxzZWxlY3QgaWQ9InNlbGVjdC1tdWx0aXBsZSIgbXVsdGlwbGUgcmVx
dWlyZWQgc2l6ZT0iNCI+JyArCiAnICA8b3B0aW9uIGlkPSJtdWx0aXBsZS1lbXB0eSI+ZW1wdHk8
L29wdGlvbj4nICsKICcgIDxvcHRpb24gaWQ9Im11bHRpcGxlLWFub3RoZXIiPmFub3RoZXI8L29w
dGlvbj4nICsKICc8L3NlbGVjdD4nICsKQEAgLTExMCwxNCArMTE0LDEyIEBAIGZvcm0uaW5uZXJI
VE1MID0gJzxzZWxlY3QgaWQ9InNlbGVjdC1tdWx0aXBsZSIgbXVsdGlwbGUgcmVxdWlyZWQ+JyAr
CiAnICA8b3B0aW9uIGlkPSJzaXplNC1lbXB0eSI+ZW1wdHk8L29wdGlvbj4nICsKICcgIDxvcHRp
b24gaWQ9InNpemU0LWFub3RoZXIiPmFub3RoZXI8L29wdGlvbj4nICsKICc8L3NlbGVjdD4nOwot
dmFyIHNlbGVjdE11bHRpcGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm11bHRpcGxlLWVt
cHR5Iik7Ci1zZWxlY3RNdWx0aXBsZS5mb2N1cygpOwotc2ltdWxhdGVDbGljayhzZWxlY3RNdWx0
aXBsZSk7Ci12YXIgc2VsZWN0U2l6ZTQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2l6ZTQt
ZW1wdHkiKTsKLXNlbGVjdFNpemU0LmZvY3VzKCk7Ci1zaW11bGF0ZUNsaWNrKHNlbGVjdFNpemU0
KTsKLXNob3VsZEJlKCdiYWNrZ3JvdW5kT2Yoc2VsZWN0TXVsdGlwbGUpJywgJ3ZhbGlkQ29sb3In
KTsKLXNob3VsZEJlKCdiYWNrZ3JvdW5kT2Yoc2VsZWN0U2l6ZTQpJywgJ3ZhbGlkQ29sb3InKTsK
K21vdXNlRG93bk9uU2VsZWN0KCdzZWxlY3QtbXVsdGlwbGUnLCAwKTsKK21vdXNlRG93bk9uU2Vs
ZWN0KCdzZWxlY3Qtc2l6ZTQnLCAwKTsKK3Nob3VsZEJlKCdiYWNrZ3JvdW5kT2YoInNlbGVjdC1t
dWx0aXBsZSIpJywgJ3ZhbGlkQ29sb3InKTsKK3Nob3VsZEJlKCdiYWNrZ3JvdW5kT2YoIm11bHRp
cGxlLWVtcHR5IiknLCAndHJhbnNwYXJlbnRDb2xvcicpOworc2hvdWxkQmUoJ2JhY2tncm91bmRP
Zigic2VsZWN0LXNpemU0IiknLCAndmFsaWRDb2xvcicpOworc2hvdWxkQmUoJ2JhY2tncm91bmRP
Zigic2l6ZTQtZW1wdHkiKScsICd0cmFuc3BhcmVudENvbG9yJyk7CiAKIGRlYnVnKCdDaGFuZ2Ug
dGhlIHZhbHVlIHdpdGggYSBwbGFjZWhvbGRlciBsYWJlbCBvcHRpb246Jyk7CiBlbCA9IG1ha2VJ
bnZhbGlkKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1saXZl
LXBzZXVkby1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9z
ZWxlY3QtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4dAppbmRleCA4MTk3YWM0OThm
M2QzNjNmYzU2Mzc3ZTYzMjQ5NTM4ZGEzOTNiMjk3Li5lMjI2NTM2N2ZhOTM1ZjU0M2ViOWE3NTVl
Zjc1YmVjMGU5YjdmMTE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVj
dC1saXZlLXBzZXVkby1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc2VsZWN0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQKQEAgLTE1
LDggKzE1LDEwIEBAIEluc2lkZS9vdXRzaWRlIG9mIGEgZm9ybToKIFBBU1MgYmFja2dyb3VuZE9m
KGVsKSBpcyBpbnZhbGlkQ29sb3IKIFBBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29s
b3IKIENoYW5nZSB0aGUgdmFsdWVzIG9mIHNlbGVjdCBlbGVtZW50cyB3aXRob3V0IGV4cGxpY2l0
IGluaXRpYWxpemluZyB2YWx1ZXMgYnkgY2xpY2tpbmc6Ci1QQVNTIGJhY2tncm91bmRPZihzZWxl
Y3RNdWx0aXBsZSkgaXMgdmFsaWRDb2xvcgotUEFTUyBiYWNrZ3JvdW5kT2Yoc2VsZWN0U2l6ZTQp
IGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKCJzZWxlY3QtbXVsdGlwbGUiKSBpcyB2
YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZigibXVsdGlwbGUtZW1wdHkiKSBpcyB0cmFuc3Bh
cmVudENvbG9yCitQQVNTIGJhY2tncm91bmRPZigic2VsZWN0LXNpemU0IikgaXMgdmFsaWRDb2xv
cgorUEFTUyBiYWNrZ3JvdW5kT2YoInNpemU0LWVtcHR5IikgaXMgdHJhbnNwYXJlbnRDb2xvcgog
Q2hhbmdlIHRoZSB2YWx1ZSB3aXRoIGEgcGxhY2Vob2xkZXIgbGFiZWwgb3B0aW9uOgogUEFTUyBi
YWNrZ3JvdW5kT2YoZWwpIGlzIHZhbGlkQ29sb3IKIFBBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBp
bnZhbGlkQ29sb3IK
</data>

          </attachment>
      

    </bug>

</bugzilla>