<?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>85863</bug_id>
          
          <creation_ts>2012-05-07 23:20:37 -0700</creation_ts>
          <short_desc>[Shadow] Style elements in Shadow DOM should not be exposed by document.styleSheets attribute</short_desc>
          <delta_ts>2024-03-15 04:30:04 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</resolution>
          
          
          <bug_file_loc>http://w3c-test.org/webapps/ShadowDOM/tests/submissions/Google/tests.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>85862</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Cooney">dominicc</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annevk</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>morrita</cc>
    
    <cc>shinyak</cc>
    
    <cc>tasak</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>618343</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2012-05-07 23:20:37 -0700</bug_when>
    <thetext>This manifests as a test failure at &lt;http://w3c-test.org/webapps/ShadowDOM/tests/submissions/Google/tests.html&gt;

&quot;Upper-boundary encapsulation: nodes in a shadow DOM subtree are not accessible using the shadow host document&apos;s CSSOM extensions&quot; … &quot;assert_equals: style elements in shadow DOM must not be exposed via the document.styleSheets attribute expected 0 but got 1&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631120</commentid>
    <comment_count>1</comment_count>
      <attachid>143440</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-05-22 20:25:32 -0700</bug_when>
    <thetext>Created attachment 143440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631196</commentid>
    <comment_count>2</comment_count>
      <attachid>143440</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-05-22 21:56:00 -0700</bug_when>
    <thetext>Comment on attachment 143440
Patch

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

Basically looks OK for me with a few nit comments.

&gt; LayoutTests/fast/dom/shadow/document-stylesheets-in-shadow.html:5
&gt; +&lt;script&gt;

Why not use LayoutTests/fast/js/resources/js-test-pre.js?

&gt; LayoutTests/fast/dom/shadow/document-stylesheets-in-shadow.html:11
&gt; +  if (actual == expected)

why 2spaces indent here? log has 4 spaces indent though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631582</commentid>
    <comment_count>3</comment_count>
      <attachid>143440</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-05-23 06:11:05 -0700</bug_when>
    <thetext>Comment on attachment 143440
Patch

While I&apos;m no shadow DOM expert, I feel that this patch needs more explanation of what&apos;s going on.

Why are we skipping over StyleElement::insertedIntoDocument/removedFromDocument? That will not only prevent document.styleSheets from exposing the sheet, but also prevent StyleElement from parsing the sheet, and StyleResolver from applying any of its style (since it gets its sheet data from there.)

Maybe &lt;style&gt; elements are supposed to just hang dead inside a shadow subtree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632204</commentid>
    <comment_count>4</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-23 17:01:58 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 143440 [details])
&gt; While I&apos;m no shadow DOM expert, I feel that this patch needs more explanation of what&apos;s going on.
&gt; 
&gt; Why are we skipping over StyleElement::insertedIntoDocument/removedFromDocument? That will not only prevent document.styleSheets from exposing the sheet, but also prevent StyleElement from parsing the sheet, and StyleResolver from applying any of its style (since it gets its sheet data from there.)
&gt; 

&gt; Maybe &lt;style&gt; elements are supposed to just hang dead inside a shadow subtree?
It&apos;s going to be scoped by Shadow DOM, that is, the style is applied 
only for shadow subtrees.
dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#styles

I agree Kling&apos;s point though.
This change could be done as a part of style scoping,
instead of just doing a band-aid fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635148</commentid>
    <comment_count>5</comment_count>
      <attachid>144338</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-05-28 05:30:23 -0700</bug_when>
    <thetext>Created attachment 144338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635153</commentid>
    <comment_count>6</comment_count>
      <attachid>144340</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-05-28 05:51:16 -0700</bug_when>
    <thetext>Created attachment 144340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635155</commentid>
    <comment_count>7</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-05-28 05:59:00 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 143440 [details] [details])
&gt; &gt; While I&apos;m no shadow DOM expert, I feel that this patch needs more explanation of what&apos;s going on.
&gt; &gt; 
&gt; &gt; Why are we skipping over StyleElement::insertedIntoDocument/removedFromDocument? That will not only prevent document.styleSheets from exposing the sheet, but also prevent StyleElement from parsing the sheet, and StyleResolver from applying any of its style (since it gets its sheet data from there.)
&gt; &gt; 
&gt; 
&gt; &gt; Maybe &lt;style&gt; elements are supposed to just hang dead inside a shadow subtree?
&gt; It&apos;s going to be scoped by Shadow DOM, that is, the style is applied 
&gt; only for shadow subtrees.
&gt; dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#styles
&gt; 
&gt; I agree Kling&apos;s point though.
&gt; This change could be done as a part of style scoping,
&gt; instead of just doing a band-aid fix.

I agree. My old patch made any styles in shadow tree be disabled. For example,

  &lt;div id=&apos;mydiv&apos;&gt;&lt;/div&gt;
...
&lt;script&gt;
  var div = document.getElementById(&apos;mydiv&apos;);
  var sr = new WebKitShadowRoot(div);
  sr.innerHTML = &apos;&lt;style&gt;div { background-color: red; }&lt;/style&gt;&lt;div&gt;RED&lt;/div&gt;&apos;;
  ...
&lt;/script&gt;

The &quot;RED&quot;&apos;s background color is not red.... So I think, I have to modify styleSheets method defined in class Document.
I created a new method allStyleSheets which does the same things the old styleSheets does, and modified styleSheets to return just style sheets that are not in shadow trees.

Best regards,
Takashi Sakamoto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635484</commentid>
    <comment_count>8</comment_count>
      <attachid>144340</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-28 18:10:46 -0700</bug_when>
    <thetext>Comment on attachment 144340
Patch

As I mentioned, I think this should be attacked as
a part of style handling of shadow dom,instead of fixing this locally.
http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#styles

Maybe starting point is pulling m_stylesheets from Document up to TreeScope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637061</commentid>
    <comment_count>9</comment_count>
      <attachid>144766</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-05-30 02:28:48 -0700</bug_when>
    <thetext>Created attachment 144766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637071</commentid>
    <comment_count>10</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-05-30 02:37:09 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 144340 [details])
&gt; As I mentioned, I think this should be attacked as
&gt; a part of style handling of shadow dom,instead of fixing this locally.
&gt; http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#styles
&gt; 
&gt; Maybe starting point is pulling m_stylesheets from Document up to TreeScope.

I looked at Document and I felt that it was very difficult to pull m_stylesheets because Document also has m_styleResolver and the style resolver seems to tightly fit Document&apos;s stylesheets...

So I modified StyleResolver to enforce lower-boundary encapsulation for CSS rules.
I also fixed applyAuthorStyles bug, i.e. if applyAuthorStyles is true, all CSS rules declared in ancestors of the shadow DOM subtree will be applied... not only enclosed shadow DOM subtree.

I&apos;m not sure whether I&apos;m taking a correct way to fix these bugs. I would like to ask your advice.

Best regards,
Takashi Sakamoto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2021287</commentid>
    <comment_count>11</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2024-03-15 04:30:04 -0700</bug_when>
    <thetext>This bug has outlived its usefulness.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143440</attachid>
            <date>2012-05-22 20:25:32 -0700</date>
            <delta_ts>2012-05-28 05:30:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85863-20120523122531.patch</filename>
            <type>text/plain</type>
            <size>5150</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE5ODQxNjQyNDEwMzJl
YzQ1ZDYwMTc1NDRhMDZjYzQ0Yjk4ZGY1NS4uYWIzNzg0YWEyZGIyZDc5ZjJiM2ZjNWY1ZGNhYTMz
NGVmMTU3MzMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA1LTIyICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBTdHlsZSBlbGVtZW50
cyBpbiBTaGFkb3cgRE9NIHNob3VsZCBub3QgYmUgZXhwb3NlZCBieSBkb2N1bWVudC5zdHlsZVNo
ZWV0cyBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg1ODYzCisKKyAgICAgICAgTW9kaWZpZWQgSFRNTFN0eWxlRWxlbWVudCB0byBjaGVj
ayB3aGV0aGVyIGFuIGluc2VydGlvbiBwb2ludCBpcyBpbiBhIHNoYWRvdyB0cmVlIG9yCisgICAg
ICAgIG5vdCB3aGVuIGluc2VydGVkSW50byBhbmQgcmVtb3ZlZEZyb20uCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vc2hhZG93
L2RvY3VtZW50LXN0eWxlc2hlZXRzLWluLXNoYWRvdy5odG1sCisKKyAgICAgICAgKiBodG1sL0hU
TUxTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnJlbW92
ZWRGcm9tKToKKyAgICAgICAgQWRkZWQgYSBjb2RlIGZvciBjaGVja2luZyB3aGV0aGVyIGFuIGlu
c2VydGlvbiBwb2ludCBpcyBpbiBhIHNoYWRvdyB0cmVlIG9yIG5vdC4KKwogMjAxMi0wNS0yMiAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBhIFNl
dHRpbmcgdG8gbWFrZSBwb3NpdGlvbjpmaXhlZCBmb3JtIGEgbmV3IHN0YWNraW5nIGNvbnRleHQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCmluZGV4IDE5NWZkNTBjNDY5
OTQyMjM2NzY1NDhjYzdjZmU5YmI4ZTc0MzI5NmQuLmM0ZDBlZjk4YjA3MGY0MDg2NTFhNGIyMzZj
MDE3YzRiZmMxNjRlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNw
cApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6dW5yZWdpc3Rlcldp
dGhTY29waW5nTm9kZSgpCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxT
dHlsZUVsZW1lbnQ6Omluc2VydGVkSW50byhOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBI
VE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKLSAgICBpZiAoaW5zZXJ0
aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1l
bnQoKSAmJiAhaW5zZXJ0aW9uUG9pbnQtPmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIFN0eWxl
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoZG9jdW1lbnQoKSwgdGhpcyk7CiAjaWYgRU5B
QkxFKFNUWUxFX1NDT1BFRCkKICAgICBpZiAoc2NvcGVkKCkgJiYgIW1faXNSZWdpc3RlcmVkV2l0
aFNjb3BpbmdOb2RlKQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6
cmVtb3ZlZEZyb20oTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiAgICAgICAgIHVucmVnaXN0ZXJXaXRo
U2NvcGluZ05vZGUoKTsKICNlbmRpZgogCi0gICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3Vt
ZW50KCkpCisgICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkgJiYgIWluc2VydGlv
blBvaW50LT5pc0luU2hhZG93VHJlZSgpKQogICAgICAgICBTdHlsZUVsZW1lbnQ6OnJlbW92ZWRG
cm9tRG9jdW1lbnQoZG9jdW1lbnQoKSwgdGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZGRiMjAwMWZhMTE3
NTM3MTVhYzgzYTc4ZmRkOGZmZDczOWVmMjg2Li41ZjY4OGIyMzg0NTEyNzQxYmNiYmY3NTY0YTAz
NmRiNzA1MzZjM2ZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDUtMjIgIFRha2FzaGkg
U2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgorCisgICAgICAgIFN0eWxlIGVsZW1lbnRzIGlu
IFNoYWRvdyBET00gc2hvdWxkIG5vdCBiZSBleHBvc2VkIGJ5IGRvY3VtZW50LnN0eWxlU2hlZXRz
IGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODU4NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGZhc3QvZG9tL3NoYWRvdy9kb2N1bWVudC1zdHlsZXNoZWV0cy1pbi1zaGFkb3ctZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZG9jdW1lbnQtc3R5bGVz
aGVldHMtaW4tc2hhZG93Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA1LTIyICBKYW1lcyBSb2JpbnNv
biAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGEgU2V0dGluZyB0byBtYWtl
IHBvc2l0aW9uOmZpeGVkIGZvcm0gYSBuZXcgc3RhY2tpbmcgY29udGV4dApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2RvY3VtZW50LXN0eWxlc2hlZXRzLWluLXNoYWRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZG9jdW1lbnQtc3R5
bGVzaGVldHMtaW4tc2hhZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2YwZmE1YzhhNTdi
MDU1MzZlNGVlYzllYTY1MDU4MTcxNDVlYmQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2RvY3VtZW50LXN0eWxlc2hlZXRzLWluLXNoYWRvdy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzIEBACitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kb2N1bWVudC1zdHlsZXNoZWV0cy1pbi1zaGFkb3cuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kb2N1bWVudC1zdHlsZXNoZWV0cy1pbi1zaGFk
b3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZWNjNzEzNjRlZmFkMWYzMjZiODU1YTA5MmZiODZlMzQ2YjYx
YzM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2RvY3Vt
ZW50LXN0eWxlc2hlZXRzLWluLXNoYWRvdy5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgKz0gKG1lc3NhZ2UgKyAi
XG4iKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICBpZiAo
YWN0dWFsID09IGV4cGVjdGVkKQorICAgIHRocm93ICJmYWlsdXJlIjsKK30KKworZnVuY3Rpb24g
dGVzdEVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKSB7CisgIGlmIChhY3R1YWwgPT0gZXhwZWN0ZWQp
CisgICAgbG9nKCJQQVNTIik7CisgIGVsc2UKKyAgICBsb2coIkZBSUwiKTsKK30KKworZnVuY3Rp
b24gZG9UZXN0KCkgeworICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZy
YW1lJyk7CisgIGlmcmFtZS5zcmMgPSAnLi4vV2luZG93L3Jlc291cmNlcy9ibGFuay5odG1sJzsK
KworICBpZnJhbWUub25sb2FkID0gZnVuY3Rpb24gKCkgeworICAgIHRyeSB7CisgICAgICB2YXIg
aWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudERvY3VtZW50OworICAgICAgdmFyIHNoYWRv
d1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChpZnJhbWVEb2N1bWVudC5oZWFkKTsKKyAgICAg
IHNob3VsZEJlKGlmcmFtZURvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aCwgMSk7CisgICAgICB2
YXIgc3R5bGUgPSBpZnJhbWVEb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworICAgICAg
c2hhZG93Um9vdC5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAgICB0ZXN0RXF1YWxzKGlmcmFtZURv
Y3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aCwgMCk7CisKKyAgICAgIHZhciBsaW5rID0gaWZyYW1l
RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpOworICAgICAgbGluay5zZXRBdHRyaWJ1dGUo
J3JlbCcsICdzdHlsZXNoZWV0Jyk7CisgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsICdy
ZXNvdXJjZXMvbGluay1pbi1zaGFkb3ctc3R5bGUuY3NzJyk7CisgICAgICBzaGFkb3dSb290LmFw
cGVuZENoaWxkKGxpbmspOworICAgICAgdGVzdEVxdWFscyhpZnJhbWVEb2N1bWVudC5zdHlsZVNo
ZWV0cy5sZW5ndGgsIDApOworICAgIH0gZmluYWxseSB7CisgICAgICBpZnJhbWUucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZChpZnJhbWUpOworICAgIH0KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgIH07CisKKyAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImRvVGVzdCgpIj4KKzxwcmUg
aWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2xheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK2xheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144338</attachid>
            <date>2012-05-28 05:30:23 -0700</date>
            <delta_ts>2012-05-28 05:51:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85863-20120528213022.patch</filename>
            <type>text/plain</type>
            <size>13014</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzMzMGQ1NDRiNTRiYmJk
NzdjNDY5NGNhMTJmZmMwNTUwMWUyZGFkNS4uMzBiOWY3ZmIwYTM5NzI4ZjEzYmM0NDQ2YTdmOTRk
NTFlMTkyZTBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTA1LTIyICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBTdHlsZSBlbGVtZW50
cyBpbiBTaGFkb3cgRE9NIHNob3VsZCBub3QgYmUgZXhwb3NlZCBieSBkb2N1bWVudC5zdHlsZVNo
ZWV0cyBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg1ODYzCisKKyAgICAgICAgTW9kaWZpZWQgc3R5bGVTaGVldHMgbWV0aG9kIGluIERv
Y3VtZW50IHRvIHJldHVybiBvbmx5IHN0eWxlc2hlZXRzIHRoYXQgYXJlIG5vdCBpbiBzaGFkb3cg
dHJlZXMuCisgICAgICAgIEFsc28gYWRkZWQgYSBuZXcgbWV0aG9kIGFsbFN0eWxlU2hlZXRzIHRv
IHJldHVybiBhbGwgc3R5bGVzaGVldHMuIEFsbCBjb2RlcyB3aGljaCB1c2VzIERvY3VtZW50J3MK
KyAgICAgICAgc3R5bGVTaGVldHMgd2VyZSBtb2RpZmllZCB0byB1c2UgYWxsU3R5bGVTaGVldHMu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9kb20vc2hhZG93L2RvY3VtZW50LXN0eWxlc2hlZXRzLWluLXNoYWRvdy5odG1sCisKKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmFkZFN0eWxlc2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICBDaGFu
Z2VkIGFsbCAic3R5bGVTaGVldHMiIHRvICJhbGxTdHlsZVNoZWV0cyIuCisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6Cisg
ICAgICAgIEluaXRpYWxpemVkIG1fc3R5bGVTaGVldHNOb3RJblNoYWRvdyBpbiB0aGUgc2FtZSB3
YXkgYXMgbV9zdHlsZVNoZWV0cy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1l
bnQpOgorICAgICAgICBJbnZva2VkIG1fc3R5bGVTaGVldHNOb3RJblNoYWRvdy0+ZG9jdW1lbnRE
ZXN0cm95ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIG1fc3R5bGVTaGVldHMuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c3R5bGVTaGVldHMpOgorICAgICAgICBNb2RpZmllZCBzdHlsZVNoZWV0
cyB0byByZXR1cm4gb25seSBzdHlsZXNoZWV0cyB0aGF0IGFyZSBub3QgaW4gc2hhZG93IHRyZWVz
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFsbFN0eWxlU2hlZXRzKToKKyAgICAgICAg
U2luY2Ugc3R5bGVTaGVldHMgaXMgbW9kaWZpZWQsIGNyZWF0ZWQgYSBuZXcgbWV0aG9kIHdoaWNo
IHdvcmtzIGluIHRoZSBzYW1lIG1hbm5lciBhcworICAgICAgICB0aGUgcHJldmlvdXMgc3R5bGVT
aGVldHMuIEFsbCBjb2RlcyB3aGljaCB1c2VzIHRoZSBwcmV2aW91cyBzdHlsZVNoZWV0cyBzaG91
bGQgYmUgbW9kaWZpZWQKKyAgICAgICAgdG8gdXNlIHRoaWUgImFsbFN0eWxlU2hlZXRzIi4KKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb2xsZWN0QWN0aXZlU3R5bGVzaGVldHMpOgorICAg
ICAgICBBZGRlZCBvbmUgbW9yZSBhcmd1bWVudCB0byBvYnRhaW4gc3R5bGVTaGVldHMgdGhhdCBh
cmUgbm90IGluIHNoYWRvdyB0cmVlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRh
dGVBY3RpdmVTdHlsZXNoZWV0cyk6CisgICAgICAgIE1vZGlmaWVkIHRvIHVwZGF0ZSBhIHZlY3Rv
ciB3aGljaCBjb250YWlucyBzdHlsZVNoZWV0cyB0aGF0IGFyZSBub3QgaW4gc2hhZG93IHRyZWVz
LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAg
ICBBZGRlZCBhIG5ldyBtZXRob2QgYWxsU3R5bGVTaGVldHMuCisgICAgICAgIEFkZGVkIGEgbmV3
IG1lbWJlciB2YXJpYWJsZSwgbV9zdHlsZVNoZWV0c05vdEluU2hhZG93LCBpLmUuIGEgdmVjdG9y
IHdoaWNoIGNvbnRhaW5zIHN0eWxlc2hlZXRzCisgICAgICAgIHRoYXQgYXJlIG5vdCBpbiBzaGFk
b3cgdHJlZXMuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6dmlhSW5zcGVjdG9yU3R5bGVTaGVl
dCk6CisgICAgICAgIENoYW5nZWQgYWxsICJzdHlsZVNoZWV0cyIgdG8gImFsbFN0eWxlU2hlZXRz
Ii4KKwogMjAxMi0wNS0yOCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiBUZXN0IGZpeCBhZnRlciByMTE4NjcwOiBzYXZlZCB0aW1l
bGluZSBkYXRhIG1heQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDA2YjQx
YThhY2UxMzkxZGFmZTcxNjNmNjk2MTc4ZmZiYWM4ZGVhMmQuLmE1OGNiYzE4ZGY4MzcwMzgyMTcy
NGY4NTk0YTMxODczMWQ2N2Y3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
QEAgLTQyMSw3ICs0MjEsNyBAQCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCiAjZW5kaWYKIAogICAg
IGFkZFN0eWxlc2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cygpOwotICAgIGFwcGVuZEF1dGhvclN0
eWxlc2hlZXRzKDAsIGRvY3VtZW50LT5zdHlsZVNoZWV0cygpLT52ZWN0b3IoKSk7CisgICAgYXBw
ZW5kQXV0aG9yU3R5bGVzaGVldHMoMCwgZG9jdW1lbnQtPmFsbFN0eWxlU2hlZXRzKCktPnZlY3Rv
cigpKTsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjphZGRTdHlsZXNoZWV0c0Zyb21TZWFtbGVz
c1BhcmVudHMoKQpAQCAtNDMyLDcgKzQzMiw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkU3R5
bGVzaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKCkKICAgICBWZWN0b3I8U3R5bGVTaGVldExpc3Qq
PiBhbmNlc3RvclNoZWV0czsKICAgICB3aGlsZSAoSFRNTElGcmFtZUVsZW1lbnQqIHBhcmVudElG
cmFtZSA9IGNoaWxkRG9jdW1lbnQtPnNlYW1sZXNzUGFyZW50SUZyYW1lKCkpIHsKICAgICAgICAg
RG9jdW1lbnQqIHBhcmVudERvY3VtZW50ID0gcGFyZW50SUZyYW1lLT5kb2N1bWVudCgpOwotICAg
ICAgICBhbmNlc3RvclNoZWV0cy5hcHBlbmQocGFyZW50RG9jdW1lbnQtPnN0eWxlU2hlZXRzKCkp
OworICAgICAgICBhbmNlc3RvclNoZWV0cy5hcHBlbmQocGFyZW50RG9jdW1lbnQtPmFsbFN0eWxl
U2hlZXRzKCkpOwogICAgICAgICBjaGlsZERvY3VtZW50ID0gcGFyZW50RG9jdW1lbnQ7CiAgICAg
fQogICAgIGZvciAoaW50IGkgPSBhbmNlc3RvclNoZWV0cy5zaXplKCkgLSAxOyBpID49IDA7IGkt
LSkKQEAgLTI5NzUsNyArMjk3NSw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJz
KEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYgd3JhCiAKIHN0YXRp
YyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENT
U1N0eWxlUnVsZT4gPiYgd3JhcHBlck1hcCwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgc3R5bGVTaGVldHMgPSBkb2N1bWVudC0+
c3R5bGVTaGVldHMoKS0+dmVjdG9yKCk7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNo
ZWV0PiA+JiBzdHlsZVNoZWV0cyA9IGRvY3VtZW50LT5hbGxTdHlsZVNoZWV0cygpLT52ZWN0b3Io
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5bGVTaGVldHMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHN0eWxlU2hlZXRzW2ldLmdldCgp
OwogICAgICAgICBpZiAoIXN0eWxlU2hlZXQtPmlzQ1NTU3R5bGVTaGVldCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggOTQ0NzhhODczZmI1YTk5YjI0ZDQ3NjgxMzU5ZjA0NDRlMGIzMWUw
MC4uMzVmYzE3YzQ1ZmViMWU5NzFiZGJkMTI3NWNmZDNlMDM5NzgwM2ZiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC00MzMsNiArNDMzLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAg
ICwgbV9tdXRhdGlvbk9ic2VydmVyVHlwZXMoMCkKICNlbmRpZgogICAgICwgbV9zdHlsZVNoZWV0
cyhTdHlsZVNoZWV0TGlzdDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9zdHlsZVNoZWV0c05vdElu
U2hhZG93KFN0eWxlU2hlZXRMaXN0OjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2hhZEFjdGl2ZUxv
YWRpbmdTdHlsZXNoZWV0KGZhbHNlKQogICAgICwgbV9yZWFkeVN0YXRlKENvbXBsZXRlKQogICAg
ICwgbV9zdHlsZVJlY2FsY1RpbWVyKHRoaXMsICZEb2N1bWVudDo6c3R5bGVSZWNhbGNUaW1lckZp
cmVkKQpAQCAtNjA2LDYgKzYwNyw4IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogCiAgICAgaWYg
KG1fc3R5bGVTaGVldHMpCiAgICAgICAgIG1fc3R5bGVTaGVldHMtPmRvY3VtZW50RGVzdHJveWVk
KCk7CisgICAgaWYgKG1fc3R5bGVTaGVldHNOb3RJblNoYWRvdykKKyAgICAgICAgbV9zdHlsZVNo
ZWV0c05vdEluU2hhZG93LT5kb2N1bWVudERlc3Ryb3llZCgpOwogCiAgICAgaWYgKG1fZWxlbVNo
ZWV0KQogICAgICAgICBtX2VsZW1TaGVldC0+Y2xlYXJPd25lck5vZGUoKTsKQEAgLTMyMDksNiAr
MzIxMiwxMSBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjpjbG9uZU5vZGUoYm9vbCAvKmRl
ZXAqLykKIAogU3R5bGVTaGVldExpc3QqIERvY3VtZW50OjpzdHlsZVNoZWV0cygpCiB7CisgICAg
cmV0dXJuIG1fc3R5bGVTaGVldHNOb3RJblNoYWRvdy5nZXQoKTsKK30KKworU3R5bGVTaGVldExp
c3QqIERvY3VtZW50OjphbGxTdHlsZVNoZWV0cygpCit7CiAgICAgcmV0dXJuIG1fc3R5bGVTaGVl
dHMuZ2V0KCk7CiB9CiAKQEAgLTMzNDgsNyArMzM1Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92
ZVN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKE5vZGUqIG5vZGUpCiAgICAgbV9zdHlsZVNoZWV0Q2Fu
ZGlkYXRlTm9kZXMucmVtb3ZlKG5vZGUpOwogfQogCi12b2lkIERvY3VtZW50Ojpjb2xsZWN0QWN0
aXZlU3R5bGVzaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBzaGVldHMpCit2b2lk
IERvY3VtZW50Ojpjb2xsZWN0QWN0aXZlU3R5bGVzaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVNo
ZWV0PiA+JiBzaGVldHMsIFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgZG9jdW1lbnRPbmx5
U2hlZXRzKQogewogICAgIGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzID0gdHJ1ZTsKICAg
ICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gdGhpcy0+c2V0dGluZ3MoKSkKQEAgLTM0MzYsOCAr
MzQ0NCwxMiBAQCB2b2lkIERvY3VtZW50Ojpjb2xsZWN0QWN0aXZlU3R5bGVzaGVldHMoVmVjdG9y
PFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBzaGVldHMpCiAgICAgICAgICAgICBpZiAocmVsLmNvbnRh
aW5zKCJhbHRlcm5hdGUiKSAmJiB0aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgc2hl
ZXQgPSAwOwogICAgICAgICB9Ci0gICAgICAgIGlmIChzaGVldCkKKyAgICAgICAgaWYgKHNoZWV0
KSB7CiAgICAgICAgICAgICBzaGVldHMuYXBwZW5kKHNoZWV0KTsKKworICAgICAgICAgICAgaWYg
KCFuLT5pc0luU2hhZG93VHJlZSgpKQorICAgICAgICAgICAgICAgIGRvY3VtZW50T25seVNoZWV0
cy5hcHBlbmQoc2hlZXQpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0zNTU1LDggKzM1Njcs
OCBAQCBib29sIERvY3VtZW50Ojp1cGRhdGVBY3RpdmVTdHlsZXNoZWV0cyhTdHlsZVJlc29sdmVy
VXBkYXRlRmxhZyB1cGRhdGVGbGFnKQogICAgIGlmICghcmVuZGVyZXIoKSB8fCAhYXR0YWNoZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3R5bGVTaGVldFZlY3RvciBuZXdTdHls
ZXNoZWV0czsKLSAgICBjb2xsZWN0QWN0aXZlU3R5bGVzaGVldHMobmV3U3R5bGVzaGVldHMpOwor
ICAgIFN0eWxlU2hlZXRWZWN0b3IgbmV3U3R5bGVzaGVldHMsIG5ld1N0eWxlc2hlZXRzTm90SW5T
aGFkb3c7CisgICAgY29sbGVjdEFjdGl2ZVN0eWxlc2hlZXRzKG5ld1N0eWxlc2hlZXRzLCBuZXdT
dHlsZXNoZWV0c05vdEluU2hhZG93KTsKIAogICAgIGJvb2wgcmVxdWlyZXNTdHlsZVJlc29sdmVy
UmVzZXQ7CiAgICAgYm9vbCByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYzsKQEAgLTM1NjksNiArMzU4
MSw3IEBAIGJvb2wgRG9jdW1lbnQ6OnVwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzKFN0eWxlUmVzb2x2
ZXJVcGRhdGVGbGFnIHVwZGF0ZUZsYWcpCiAgICAgICAgIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7
CiAgICAgfQogICAgIG1fc3R5bGVTaGVldHMtPnN3YXAobmV3U3R5bGVzaGVldHMpOworICAgIG1f
c3R5bGVTaGVldHNOb3RJblNoYWRvdy0+c3dhcChuZXdTdHlsZXNoZWV0c05vdEluU2hhZG93KTsK
IAogICAgIG1fdXNlc1JlbVVuaXRzID0gc3R5bGVTaGVldHNVc2VSZW1Vbml0cyhtX3N0eWxlU2hl
ZXRzLT52ZWN0b3IoKSk7CiAgICAgbV9kaWRDYWxjdWxhdGVTdHlsZVJlc29sdmVyID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNDNjNWY1Nzc0Y2U3MGY0ZDU1NzFmMGU3MWEwMGVhODBl
ODM2ODEzYS4uMTQ0MmJiM2EwODVmNDE3M2U2NDFhYjgyNjgzZDU0ZGJlMjE1OGM0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTcxNSw2ICs3MTUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBwcmVwYXJlTW91c2VFdmVudChjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
CiAKKyAgICBTdHlsZVNoZWV0TGlzdCogYWxsU3R5bGVTaGVldHMoKTsKICAgICBTdHlsZVNoZWV0
TGlzdCogc3R5bGVTaGVldHMoKTsKIAogICAgIC8qIE5ld2x5IHByb3Bvc2VkIENTUzMgbWVjaGFu
aXNtIGZvciBzZWxlY3RpbmcgYWx0ZXJuYXRlCkBAIC0xMjEwLDcgKzEyMTEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVzZXRDU1NGZWF0dXJlRmxhZ3MoKTsKICAgICAKICAgICBib29sIHVwZGF0
ZUFjdGl2ZVN0eWxlc2hlZXRzKFN0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnKTsKLSAgICB2b2lkIGNv
bGxlY3RBY3RpdmVTdHlsZXNoZWV0cyhWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mKTsKKyAg
ICB2b2lkIGNvbGxlY3RBY3RpdmVTdHlsZXNoZWV0cyhWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+
ID4mLCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mKTsKICAgICBib29sIHRlc3RBZGRlZFN0
eWxlc2hlZXRSZXF1aXJlc1N0eWxlUmVjYWxjKFN0eWxlU2hlZXRDb250ZW50cyopOwogICAgIHZv
aWQgYW5hbHl6ZVN0eWxlc2hlZXRDaGFuZ2UoU3R5bGVSZXNvbHZlclVwZGF0ZUZsYWcsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgbmV3U3R5bGVzaGVldHMsIGJvb2wmIHJlcXVp
cmVzU3R5bGVSZXNvbHZlclJlc2V0LCBib29sJiByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyk7CiAK
QEAgLTEzMjcsNiArMTMyOCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlZlB0cjxTdHls
ZVNoZWV0TGlzdD4gbV9zdHlsZVNoZWV0czsgLy8gQWxsIG9mIHRoZSBzdHlsZXNoZWV0cyB0aGF0
IGFyZSBjdXJyZW50bHkgaW4gZWZmZWN0IGZvciBvdXIgbWVkaWEgdHlwZSBhbmQgc3R5bGVzaGVl
dCBzZXQuCisgICAgUmVmUHRyPFN0eWxlU2hlZXRMaXN0PiBtX3N0eWxlU2hlZXRzTm90SW5TaGFk
b3c7IC8vIFRoZSBzdHlsZXNoZWV0cyB0aGF0IGFyZSBvYnRhaW5lZCBmcm9tIG1fc3R5bGVTaGVl
dHMgYnkgcmVtb3Zpbmcgc3R5bGVzIGluIHNoYWRvdyB0cmVlLgogICAgIGJvb2wgbV9oYWRBY3Rp
dmVMb2FkaW5nU3R5bGVzaGVldDsKICAgICAKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PE5vZGUq
LCAzMj4gU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggNmZhODhjNDViNDc2OTI2N2Ix
MjFlNWNhOTZjNDQ0YmZmOTQwZDZlZi4uMDk4YTI4MjI3MmM2OTYzNThmN2RlOWZhOWFmZTdiMWI5
N2Y1ZTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxs
U3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmEKICAgICBz
dHlsZUluZm9zID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
U2hlZXRIZWFkZXI+OjpjcmVhdGUoKTsKICAgICBWZWN0b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMg
PSBtX2RvbUFnZW50LT5kb2N1bWVudHMoKTsKICAgICBmb3IgKFZlY3RvcjxEb2N1bWVudCo+Ojpp
dGVyYXRvciBpdCA9IGRvY3VtZW50cy5iZWdpbigpOyBpdCAhPSBkb2N1bWVudHMuZW5kKCk7ICsr
aXQpIHsKLSAgICAgICAgU3R5bGVTaGVldExpc3QqIGxpc3QgPSAoKml0KS0+c3R5bGVTaGVldHMo
KTsKKyAgICAgICAgU3R5bGVTaGVldExpc3QqIGxpc3QgPSAoKml0KS0+YWxsU3R5bGVTaGVldHMo
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpc3QtPmxlbmd0aCgpOyArK2kp
IHsKICAgICAgICAgICAgIFN0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBsaXN0LT5pdGVtKGkpOwog
ICAgICAgICAgICAgaWYgKHN0eWxlU2hlZXQtPmlzQ1NTU3R5bGVTaGVldCgpKQpAQCAtOTA2LDcg
KzkwNiw3IEBAIEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3BlY3RvckNTU0FnZW50Ojp2aWFJbnNw
ZWN0b3JTdHlsZVNoZWV0KERvY3VtZW50KiBkb2N1bWVuCiAgICAgfQogICAgIGlmIChlYykKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZXRzID0gZG9jdW1l
bnQtPnN0eWxlU2hlZXRzKCk7CisgICAgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZXRzID0gZG9j
dW1lbnQtPmFsbFN0eWxlU2hlZXRzKCk7CiAgICAgU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHN0
eWxlU2hlZXRzLT5pdGVtKHN0eWxlU2hlZXRzLT5sZW5ndGgoKSAtIDEpOwogICAgIGlmICghc3R5
bGVTaGVldCB8fCAhc3R5bGVTaGVldC0+aXNDU1NTdHlsZVNoZWV0KCkpCiAgICAgICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDQ5ODE2MDdiM2QyNTQ5NDFiYjQ2NTkyYjdhZWU5YmRlMTI5ZGNkNjIuLjNj
OTI1MWI4ZTM5ZDhhMTU3NzUzMDAwNzQ1NDhjYThkMDVhYWUzYmUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMi0wNS0yMiAgVGFrYXNoaSBTYWthbW90byAgPHRhc2FrQGdvb2dsZS5jb20+CisK
KyAgICAgICAgU3R5bGUgZWxlbWVudHMgaW4gU2hhZG93IERPTSBzaG91bGQgbm90IGJlIGV4cG9z
ZWQgYnkgZG9jdW1lbnQuc3R5bGVTaGVldHMgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTg2MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2RvY3VtZW50LXN0
eWxlc2hlZXRzLWluLXNoYWRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9kb2N1bWVudC1zdHlsZXNoZWV0cy1pbi1zaGFkb3cuaHRtbDogQWRkZWQuCisK
IDIwMTItMDUtMjggIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgICZBRWxpZyBkb2Vzbid0IGdldCByZW5kZXJlZCBhcyBVKzAwQzYKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kb2N1bWVudC1zdHlsZXNoZWV0cy1pbi1zaGFkb3ct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2RvY3VtZW50LXN0eWxl
c2hlZXRzLWluLXNoYWRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmMGZhNWM4YTU3YjA1
NTM2ZTRlZWM5ZWE2NTA1ODE3MTQ1ZWJkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kb2N1bWVudC1zdHlsZXNoZWV0cy1pbi1zaGFkb3ctZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMyBAQAorUEFTUworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZG9jdW1lbnQtc3R5bGVzaGVldHMtaW4tc2hhZG93Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZG9jdW1lbnQtc3R5bGVzaGVldHMtaW4tc2hhZG93
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmVjYzcxMzY0ZWZhZDFmMzI2Yjg1NWEwOTJmYjg2ZTM0NmI2MWMz
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kb2N1bWVu
dC1zdHlsZXNoZWV0cy1pbi1zaGFkb3cuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MICs9IChtZXNzYWdlICsgIlxu
Iik7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgaWYgKGFj
dHVhbCA9PSBleHBlY3RlZCkKKyAgICB0aHJvdyAiZmFpbHVyZSI7Cit9CisKK2Z1bmN0aW9uIHRl
c3RFcXVhbHMoYWN0dWFsLCBleHBlY3RlZCkgeworICBpZiAoYWN0dWFsID09IGV4cGVjdGVkKQor
ICAgIGxvZygiUEFTUyIpOworICBlbHNlCisgICAgbG9nKCJGQUlMIik7Cit9CisKK2Z1bmN0aW9u
IGRvVGVzdCgpIHsKKyAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFt
ZScpOworICBpZnJhbWUuc3JjID0gJy4uL1dpbmRvdy9yZXNvdXJjZXMvYmxhbmsuaHRtbCc7CisK
KyAgaWZyYW1lLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKyAgICB0cnkgeworICAgICAgdmFyIGlm
cmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnREb2N1bWVudDsKKyAgICAgIHZhciBzaGFkb3dS
b290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaWZyYW1lRG9jdW1lbnQuaGVhZCk7CisgICAgICBz
aG91bGRCZShpZnJhbWVEb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGgsIDEpOworICAgICAgdmFy
IHN0eWxlID0gaWZyYW1lRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKKyAgICAgIHNo
YWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc3R5bGUpOworICAgICAgdGVzdEVxdWFscyhpZnJhbWVEb2N1
bWVudC5zdHlsZVNoZWV0cy5sZW5ndGgsIDApOworCisgICAgICB2YXIgbGluayA9IGlmcmFtZURv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTsKKyAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdy
ZWwnLCAnc3R5bGVzaGVldCcpOworICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCAncmVz
b3VyY2VzL2xpbmstaW4tc2hhZG93LXN0eWxlLmNzcycpOworICAgICAgc2hhZG93Um9vdC5hcHBl
bmRDaGlsZChsaW5rKTsKKyAgICAgIHRlc3RFcXVhbHMoaWZyYW1lRG9jdW1lbnQuc3R5bGVTaGVl
dHMubGVuZ3RoLCAwKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgaWZyYW1lLnBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQoaWZyYW1lKTsKKyAgICB9CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICB9OworCisgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsK
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+Cis8cHJlIGlk
PSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+CitsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CitsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144340</attachid>
            <date>2012-05-28 05:51:16 -0700</date>
            <delta_ts>2012-05-30 02:28:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85863-20120528215115.patch</filename>
            <type>text/plain</type>
            <size>12767</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4Njc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzMzMGQ1NDRiNTRiYmJk
NzdjNDY5NGNhMTJmZmMwNTUwMWUyZGFkNS4uMzBiOWY3ZmIwYTM5NzI4ZjEzYmM0NDQ2YTdmOTRk
NTFlMTkyZTBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTA1LTIyICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBTdHlsZSBlbGVtZW50
cyBpbiBTaGFkb3cgRE9NIHNob3VsZCBub3QgYmUgZXhwb3NlZCBieSBkb2N1bWVudC5zdHlsZVNo
ZWV0cyBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg1ODYzCisKKyAgICAgICAgTW9kaWZpZWQgc3R5bGVTaGVldHMgbWV0aG9kIGluIERv
Y3VtZW50IHRvIHJldHVybiBvbmx5IHN0eWxlc2hlZXRzIHRoYXQgYXJlIG5vdCBpbiBzaGFkb3cg
dHJlZXMuCisgICAgICAgIEFsc28gYWRkZWQgYSBuZXcgbWV0aG9kIGFsbFN0eWxlU2hlZXRzIHRv
IHJldHVybiBhbGwgc3R5bGVzaGVldHMuIEFsbCBjb2RlcyB3aGljaCB1c2VzIERvY3VtZW50J3MK
KyAgICAgICAgc3R5bGVTaGVldHMgd2VyZSBtb2RpZmllZCB0byB1c2UgYWxsU3R5bGVTaGVldHMu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9kb20vc2hhZG93L2RvY3VtZW50LXN0eWxlc2hlZXRzLWluLXNoYWRvdy5odG1sCisKKyAg
ICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6
OmFkZFN0eWxlc2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICBDaGFu
Z2VkIGFsbCAic3R5bGVTaGVldHMiIHRvICJhbGxTdHlsZVNoZWV0cyIuCisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6Cisg
ICAgICAgIEluaXRpYWxpemVkIG1fc3R5bGVTaGVldHNOb3RJblNoYWRvdyBpbiB0aGUgc2FtZSB3
YXkgYXMgbV9zdHlsZVNoZWV0cy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1l
bnQpOgorICAgICAgICBJbnZva2VkIG1fc3R5bGVTaGVldHNOb3RJblNoYWRvdy0+ZG9jdW1lbnRE
ZXN0cm95ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIG1fc3R5bGVTaGVldHMuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c3R5bGVTaGVldHMpOgorICAgICAgICBNb2RpZmllZCBzdHlsZVNoZWV0
cyB0byByZXR1cm4gb25seSBzdHlsZXNoZWV0cyB0aGF0IGFyZSBub3QgaW4gc2hhZG93IHRyZWVz
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFsbFN0eWxlU2hlZXRzKToKKyAgICAgICAg
U2luY2Ugc3R5bGVTaGVldHMgaXMgbW9kaWZpZWQsIGNyZWF0ZWQgYSBuZXcgbWV0aG9kIHdoaWNo
IHdvcmtzIGluIHRoZSBzYW1lIG1hbm5lciBhcworICAgICAgICB0aGUgcHJldmlvdXMgc3R5bGVT
aGVldHMuIEFsbCBjb2RlcyB3aGljaCB1c2VzIHRoZSBwcmV2aW91cyBzdHlsZVNoZWV0cyBzaG91
bGQgYmUgbW9kaWZpZWQKKyAgICAgICAgdG8gdXNlIHRoaWUgImFsbFN0eWxlU2hlZXRzIi4KKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb2xsZWN0QWN0aXZlU3R5bGVzaGVldHMpOgorICAg
ICAgICBBZGRlZCBvbmUgbW9yZSBhcmd1bWVudCB0byBvYnRhaW4gc3R5bGVTaGVldHMgdGhhdCBh
cmUgbm90IGluIHNoYWRvdyB0cmVlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRh
dGVBY3RpdmVTdHlsZXNoZWV0cyk6CisgICAgICAgIE1vZGlmaWVkIHRvIHVwZGF0ZSBhIHZlY3Rv
ciB3aGljaCBjb250YWlucyBzdHlsZVNoZWV0cyB0aGF0IGFyZSBub3QgaW4gc2hhZG93IHRyZWVz
LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAg
ICBBZGRlZCBhIG5ldyBtZXRob2QgYWxsU3R5bGVTaGVldHMuCisgICAgICAgIEFkZGVkIGEgbmV3
IG1lbWJlciB2YXJpYWJsZSwgbV9zdHlsZVNoZWV0c05vdEluU2hhZG93LCBpLmUuIGEgdmVjdG9y
IHdoaWNoIGNvbnRhaW5zIHN0eWxlc2hlZXRzCisgICAgICAgIHRoYXQgYXJlIG5vdCBpbiBzaGFk
b3cgdHJlZXMuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6dmlhSW5zcGVjdG9yU3R5bGVTaGVl
dCk6CisgICAgICAgIENoYW5nZWQgYWxsICJzdHlsZVNoZWV0cyIgdG8gImFsbFN0eWxlU2hlZXRz
Ii4KKwogMjAxMi0wNS0yOCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiBUZXN0IGZpeCBhZnRlciByMTE4NjcwOiBzYXZlZCB0aW1l
bGluZSBkYXRhIG1heQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDA2YjQx
YThhY2UxMzkxZGFmZTcxNjNmNjk2MTc4ZmZiYWM4ZGVhMmQuLmE1OGNiYzE4ZGY4MzcwMzgyMTcy
NGY4NTk0YTMxODczMWQ2N2Y3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
QEAgLTQyMSw3ICs0MjEsNyBAQCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCiAjZW5kaWYKIAogICAg
IGFkZFN0eWxlc2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cygpOwotICAgIGFwcGVuZEF1dGhvclN0
eWxlc2hlZXRzKDAsIGRvY3VtZW50LT5zdHlsZVNoZWV0cygpLT52ZWN0b3IoKSk7CisgICAgYXBw
ZW5kQXV0aG9yU3R5bGVzaGVldHMoMCwgZG9jdW1lbnQtPmFsbFN0eWxlU2hlZXRzKCktPnZlY3Rv
cigpKTsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjphZGRTdHlsZXNoZWV0c0Zyb21TZWFtbGVz
c1BhcmVudHMoKQpAQCAtNDMyLDcgKzQzMiw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkU3R5
bGVzaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKCkKICAgICBWZWN0b3I8U3R5bGVTaGVldExpc3Qq
PiBhbmNlc3RvclNoZWV0czsKICAgICB3aGlsZSAoSFRNTElGcmFtZUVsZW1lbnQqIHBhcmVudElG
cmFtZSA9IGNoaWxkRG9jdW1lbnQtPnNlYW1sZXNzUGFyZW50SUZyYW1lKCkpIHsKICAgICAgICAg
RG9jdW1lbnQqIHBhcmVudERvY3VtZW50ID0gcGFyZW50SUZyYW1lLT5kb2N1bWVudCgpOwotICAg
ICAgICBhbmNlc3RvclNoZWV0cy5hcHBlbmQocGFyZW50RG9jdW1lbnQtPnN0eWxlU2hlZXRzKCkp
OworICAgICAgICBhbmNlc3RvclNoZWV0cy5hcHBlbmQocGFyZW50RG9jdW1lbnQtPmFsbFN0eWxl
U2hlZXRzKCkpOwogICAgICAgICBjaGlsZERvY3VtZW50ID0gcGFyZW50RG9jdW1lbnQ7CiAgICAg
fQogICAgIGZvciAoaW50IGkgPSBhbmNlc3RvclNoZWV0cy5zaXplKCkgLSAxOyBpID49IDA7IGkt
LSkKQEAgLTI5NzUsNyArMjk3NSw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJz
KEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYgd3JhCiAKIHN0YXRp
YyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENT
U1N0eWxlUnVsZT4gPiYgd3JhcHBlck1hcCwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgc3R5bGVTaGVldHMgPSBkb2N1bWVudC0+
c3R5bGVTaGVldHMoKS0+dmVjdG9yKCk7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNo
ZWV0PiA+JiBzdHlsZVNoZWV0cyA9IGRvY3VtZW50LT5hbGxTdHlsZVNoZWV0cygpLT52ZWN0b3Io
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5bGVTaGVldHMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHN0eWxlU2hlZXRzW2ldLmdldCgp
OwogICAgICAgICBpZiAoIXN0eWxlU2hlZXQtPmlzQ1NTU3R5bGVTaGVldCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggOTQ0NzhhODczZmI1YTk5YjI0ZDQ3NjgxMzU5ZjA0NDRlMGIzMWUw
MC4uMzVmYzE3YzQ1ZmViMWU5NzFiZGJkMTI3NWNmZDNlMDM5NzgwM2ZiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC00MzMsNiArNDMzLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAg
ICwgbV9tdXRhdGlvbk9ic2VydmVyVHlwZXMoMCkKICNlbmRpZgogICAgICwgbV9zdHlsZVNoZWV0
cyhTdHlsZVNoZWV0TGlzdDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9zdHlsZVNoZWV0c05vdElu
U2hhZG93KFN0eWxlU2hlZXRMaXN0OjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2hhZEFjdGl2ZUxv
YWRpbmdTdHlsZXNoZWV0KGZhbHNlKQogICAgICwgbV9yZWFkeVN0YXRlKENvbXBsZXRlKQogICAg
ICwgbV9zdHlsZVJlY2FsY1RpbWVyKHRoaXMsICZEb2N1bWVudDo6c3R5bGVSZWNhbGNUaW1lckZp
cmVkKQpAQCAtNjA2LDYgKzYwNyw4IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogCiAgICAgaWYg
KG1fc3R5bGVTaGVldHMpCiAgICAgICAgIG1fc3R5bGVTaGVldHMtPmRvY3VtZW50RGVzdHJveWVk
KCk7CisgICAgaWYgKG1fc3R5bGVTaGVldHNOb3RJblNoYWRvdykKKyAgICAgICAgbV9zdHlsZVNo
ZWV0c05vdEluU2hhZG93LT5kb2N1bWVudERlc3Ryb3llZCgpOwogCiAgICAgaWYgKG1fZWxlbVNo
ZWV0KQogICAgICAgICBtX2VsZW1TaGVldC0+Y2xlYXJPd25lck5vZGUoKTsKQEAgLTMyMDksNiAr
MzIxMiwxMSBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjpjbG9uZU5vZGUoYm9vbCAvKmRl
ZXAqLykKIAogU3R5bGVTaGVldExpc3QqIERvY3VtZW50OjpzdHlsZVNoZWV0cygpCiB7CisgICAg
cmV0dXJuIG1fc3R5bGVTaGVldHNOb3RJblNoYWRvdy5nZXQoKTsKK30KKworU3R5bGVTaGVldExp
c3QqIERvY3VtZW50OjphbGxTdHlsZVNoZWV0cygpCit7CiAgICAgcmV0dXJuIG1fc3R5bGVTaGVl
dHMuZ2V0KCk7CiB9CiAKQEAgLTMzNDgsNyArMzM1Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92
ZVN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKE5vZGUqIG5vZGUpCiAgICAgbV9zdHlsZVNoZWV0Q2Fu
ZGlkYXRlTm9kZXMucmVtb3ZlKG5vZGUpOwogfQogCi12b2lkIERvY3VtZW50Ojpjb2xsZWN0QWN0
aXZlU3R5bGVzaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBzaGVldHMpCit2b2lk
IERvY3VtZW50Ojpjb2xsZWN0QWN0aXZlU3R5bGVzaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVNo
ZWV0PiA+JiBzaGVldHMsIFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgZG9jdW1lbnRPbmx5
U2hlZXRzKQogewogICAgIGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzID0gdHJ1ZTsKICAg
ICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gdGhpcy0+c2V0dGluZ3MoKSkKQEAgLTM0MzYsOCAr
MzQ0NCwxMiBAQCB2b2lkIERvY3VtZW50Ojpjb2xsZWN0QWN0aXZlU3R5bGVzaGVldHMoVmVjdG9y
PFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBzaGVldHMpCiAgICAgICAgICAgICBpZiAocmVsLmNvbnRh
aW5zKCJhbHRlcm5hdGUiKSAmJiB0aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgc2hl
ZXQgPSAwOwogICAgICAgICB9Ci0gICAgICAgIGlmIChzaGVldCkKKyAgICAgICAgaWYgKHNoZWV0
KSB7CiAgICAgICAgICAgICBzaGVldHMuYXBwZW5kKHNoZWV0KTsKKworICAgICAgICAgICAgaWYg
KCFuLT5pc0luU2hhZG93VHJlZSgpKQorICAgICAgICAgICAgICAgIGRvY3VtZW50T25seVNoZWV0
cy5hcHBlbmQoc2hlZXQpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0zNTU1LDggKzM1Njcs
OCBAQCBib29sIERvY3VtZW50Ojp1cGRhdGVBY3RpdmVTdHlsZXNoZWV0cyhTdHlsZVJlc29sdmVy
VXBkYXRlRmxhZyB1cGRhdGVGbGFnKQogICAgIGlmICghcmVuZGVyZXIoKSB8fCAhYXR0YWNoZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3R5bGVTaGVldFZlY3RvciBuZXdTdHls
ZXNoZWV0czsKLSAgICBjb2xsZWN0QWN0aXZlU3R5bGVzaGVldHMobmV3U3R5bGVzaGVldHMpOwor
ICAgIFN0eWxlU2hlZXRWZWN0b3IgbmV3U3R5bGVzaGVldHMsIG5ld1N0eWxlc2hlZXRzTm90SW5T
aGFkb3c7CisgICAgY29sbGVjdEFjdGl2ZVN0eWxlc2hlZXRzKG5ld1N0eWxlc2hlZXRzLCBuZXdT
dHlsZXNoZWV0c05vdEluU2hhZG93KTsKIAogICAgIGJvb2wgcmVxdWlyZXNTdHlsZVJlc29sdmVy
UmVzZXQ7CiAgICAgYm9vbCByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYzsKQEAgLTM1NjksNiArMzU4
MSw3IEBAIGJvb2wgRG9jdW1lbnQ6OnVwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzKFN0eWxlUmVzb2x2
ZXJVcGRhdGVGbGFnIHVwZGF0ZUZsYWcpCiAgICAgICAgIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7
CiAgICAgfQogICAgIG1fc3R5bGVTaGVldHMtPnN3YXAobmV3U3R5bGVzaGVldHMpOworICAgIG1f
c3R5bGVTaGVldHNOb3RJblNoYWRvdy0+c3dhcChuZXdTdHlsZXNoZWV0c05vdEluU2hhZG93KTsK
IAogICAgIG1fdXNlc1JlbVVuaXRzID0gc3R5bGVTaGVldHNVc2VSZW1Vbml0cyhtX3N0eWxlU2hl
ZXRzLT52ZWN0b3IoKSk7CiAgICAgbV9kaWRDYWxjdWxhdGVTdHlsZVJlc29sdmVyID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNDNjNWY1Nzc0Y2U3MGY0ZDU1NzFmMGU3MWEwMGVhODBl
ODM2ODEzYS4uMTQ0MmJiM2EwODVmNDE3M2U2NDFhYjgyNjgzZDU0ZGJlMjE1OGM0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTcxNSw2ICs3MTUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBwcmVwYXJlTW91c2VFdmVudChjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
CiAKKyAgICBTdHlsZVNoZWV0TGlzdCogYWxsU3R5bGVTaGVldHMoKTsKICAgICBTdHlsZVNoZWV0
TGlzdCogc3R5bGVTaGVldHMoKTsKIAogICAgIC8qIE5ld2x5IHByb3Bvc2VkIENTUzMgbWVjaGFu
aXNtIGZvciBzZWxlY3RpbmcgYWx0ZXJuYXRlCkBAIC0xMjEwLDcgKzEyMTEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVzZXRDU1NGZWF0dXJlRmxhZ3MoKTsKICAgICAKICAgICBib29sIHVwZGF0
ZUFjdGl2ZVN0eWxlc2hlZXRzKFN0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnKTsKLSAgICB2b2lkIGNv
bGxlY3RBY3RpdmVTdHlsZXNoZWV0cyhWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mKTsKKyAg
ICB2b2lkIGNvbGxlY3RBY3RpdmVTdHlsZXNoZWV0cyhWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+
ID4mLCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mKTsKICAgICBib29sIHRlc3RBZGRlZFN0
eWxlc2hlZXRSZXF1aXJlc1N0eWxlUmVjYWxjKFN0eWxlU2hlZXRDb250ZW50cyopOwogICAgIHZv
aWQgYW5hbHl6ZVN0eWxlc2hlZXRDaGFuZ2UoU3R5bGVSZXNvbHZlclVwZGF0ZUZsYWcsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgbmV3U3R5bGVzaGVldHMsIGJvb2wmIHJlcXVp
cmVzU3R5bGVSZXNvbHZlclJlc2V0LCBib29sJiByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyk7CiAK
QEAgLTEzMjcsNiArMTMyOCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlZlB0cjxTdHls
ZVNoZWV0TGlzdD4gbV9zdHlsZVNoZWV0czsgLy8gQWxsIG9mIHRoZSBzdHlsZXNoZWV0cyB0aGF0
IGFyZSBjdXJyZW50bHkgaW4gZWZmZWN0IGZvciBvdXIgbWVkaWEgdHlwZSBhbmQgc3R5bGVzaGVl
dCBzZXQuCisgICAgUmVmUHRyPFN0eWxlU2hlZXRMaXN0PiBtX3N0eWxlU2hlZXRzTm90SW5TaGFk
b3c7IC8vIFRoZSBzdHlsZXNoZWV0cyB0aGF0IGFyZSBvYnRhaW5lZCBmcm9tIG1fc3R5bGVTaGVl
dHMgYnkgcmVtb3Zpbmcgc3R5bGVzIGluIHNoYWRvdyB0cmVlLgogICAgIGJvb2wgbV9oYWRBY3Rp
dmVMb2FkaW5nU3R5bGVzaGVldDsKICAgICAKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PE5vZGUq
LCAzMj4gU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggNmZhODhjNDViNDc2OTI2N2Ix
MjFlNWNhOTZjNDQ0YmZmOTQwZDZlZi4uMDk4YTI4MjI3MmM2OTYzNThmN2RlOWZhOWFmZTdiMWI5
N2Y1ZTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxs
U3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmEKICAgICBz
dHlsZUluZm9zID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxl
U2hlZXRIZWFkZXI+OjpjcmVhdGUoKTsKICAgICBWZWN0b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMg
PSBtX2RvbUFnZW50LT5kb2N1bWVudHMoKTsKICAgICBmb3IgKFZlY3RvcjxEb2N1bWVudCo+Ojpp
dGVyYXRvciBpdCA9IGRvY3VtZW50cy5iZWdpbigpOyBpdCAhPSBkb2N1bWVudHMuZW5kKCk7ICsr
aXQpIHsKLSAgICAgICAgU3R5bGVTaGVldExpc3QqIGxpc3QgPSAoKml0KS0+c3R5bGVTaGVldHMo
KTsKKyAgICAgICAgU3R5bGVTaGVldExpc3QqIGxpc3QgPSAoKml0KS0+YWxsU3R5bGVTaGVldHMo
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpc3QtPmxlbmd0aCgpOyArK2kp
IHsKICAgICAgICAgICAgIFN0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBsaXN0LT5pdGVtKGkpOwog
ICAgICAgICAgICAgaWYgKHN0eWxlU2hlZXQtPmlzQ1NTU3R5bGVTaGVldCgpKQpAQCAtOTA2LDcg
KzkwNiw3IEBAIEluc3BlY3RvclN0eWxlU2hlZXQqIEluc3BlY3RvckNTU0FnZW50Ojp2aWFJbnNw
ZWN0b3JTdHlsZVNoZWV0KERvY3VtZW50KiBkb2N1bWVuCiAgICAgfQogICAgIGlmIChlYykKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZXRzID0gZG9jdW1l
bnQtPnN0eWxlU2hlZXRzKCk7CisgICAgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZXRzID0gZG9j
dW1lbnQtPmFsbFN0eWxlU2hlZXRzKCk7CiAgICAgU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHN0
eWxlU2hlZXRzLT5pdGVtKHN0eWxlU2hlZXRzLT5sZW5ndGgoKSAtIDEpOwogICAgIGlmICghc3R5
bGVTaGVldCB8fCAhc3R5bGVTaGVldC0+aXNDU1NTdHlsZVNoZWV0KCkpCiAgICAgICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDQ5ODE2MDdiM2QyNTQ5NDFiYjQ2NTkyYjdhZWU5YmRlMTI5ZGNkNjIuLjNj
OTI1MWI4ZTM5ZDhhMTU3NzUzMDAwNzQ1NDhjYThkMDVhYWUzYmUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMi0wNS0yMiAgVGFrYXNoaSBTYWthbW90byAgPHRhc2FrQGdvb2dsZS5jb20+CisK
KyAgICAgICAgU3R5bGUgZWxlbWVudHMgaW4gU2hhZG93IERPTSBzaG91bGQgbm90IGJlIGV4cG9z
ZWQgYnkgZG9jdW1lbnQuc3R5bGVTaGVldHMgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTg2MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2RvY3VtZW50LXN0
eWxlc2hlZXRzLWluLXNoYWRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9kb2N1bWVudC1zdHlsZXNoZWV0cy1pbi1zaGFkb3cuaHRtbDogQWRkZWQuCisK
IDIwMTItMDUtMjggIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgICZBRWxpZyBkb2Vzbid0IGdldCByZW5kZXJlZCBhcyBVKzAwQzYKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kb2N1bWVudC1zdHlsZXNoZWV0cy1pbi1zaGFkb3ct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2RvY3VtZW50LXN0eWxl
c2hlZXRzLWluLXNoYWRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQzM2IyMzhlYzZmN2I0
ZWNiYzNiM2QwNjVjOWRjMzJjNTA4N2VkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kb2N1bWVudC1zdHlsZXNoZWV0cy1pbi1zaGFkb3ctZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNiBAQAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCitQQVNTIGlmcmFtZS5jb250ZW50RG9jdW1lbnQuc3R5bGVTaGVldHMubGVu
Z3RoIGlzIDAKK1BBU1MgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGgg
aXMgMAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZG9jdW1lbnQt
c3R5bGVzaGVldHMtaW4tc2hhZG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZG9jdW1lbnQtc3R5bGVzaGVldHMtaW4tc2hhZG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg2M2FiMGU2
ZjIzMWExNTkxZGMzYzU5YjM0MDBmNDhjZWI1YmM0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kb2N1bWVudC1zdHlsZXNoZWV0cy1pbi1zaGFkb3cuaHRt
bApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0PgordmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFt
ZScpOworaWZyYW1lLnNyYyA9ICcuLi9XaW5kb3cvcmVzb3VyY2VzL2JsYW5rLmh0bWwnOworCitp
ZnJhbWUub25sb2FkID0gZnVuY3Rpb24gKCkgeworICB0cnkgeworICAgIHZhciBpZnJhbWVEb2N1
bWVudCA9IGlmcmFtZS5jb250ZW50RG9jdW1lbnQ7CisgICAgdmFyIHNoYWRvd1Jvb3QgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChpZnJhbWVEb2N1bWVudC5oZWFkKTsKKyAgICB2YXIgc3R5bGUgPSBp
ZnJhbWVEb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOworICAgIHNoYWRvd1Jvb3QuYXBw
ZW5kQ2hpbGQoc3R5bGUpOworICAgIHNob3VsZEJlKCJpZnJhbWUuY29udGVudERvY3VtZW50LnN0
eWxlU2hlZXRzLmxlbmd0aCIsICIwIik7CisKKyAgICB2YXIgbGluayA9IGlmcmFtZURvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTsKKyAgICBsaW5rLnNldEF0dHJpYnV0ZSgncmVsJywgJ3N0
eWxlc2hlZXQnKTsKKyAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsICdyZXNvdXJjZXMvbGlu
ay1pbi1zaGFkb3ctc3R5bGUuY3NzJyk7CisgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChsaW5r
KTsKKyAgICBzaG91bGRCZSgiaWZyYW1lLmNvbnRlbnREb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5n
dGgiLCAiMCIpOworICB9IGZpbmFsbHkgeworICAgIGlmcmFtZS5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKGlmcmFtZSk7CisgIH0KKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
fQorCitkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CisKK2xheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144766</attachid>
            <date>2012-05-30 02:28:48 -0700</date>
            <delta_ts>2012-05-30 19:05:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85863-20120530182847.patch</filename>
            <type>text/plain</type>
            <size>27948</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I4NmFjMzdkZWZjNTI0
NzFiZTRiNDc0OTBlYzFkY2FjZmRmYjQyNC4uOWE2YWM3OGFkNmY4NGQ4MjQyYTZhOWJhOTBlMTJj
NGI4ZWY5N2MxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTA1LTIyICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBTdHlsZSBlbGVtZW50
cyBpbiBTaGFkb3cgRE9NIHNob3VsZCBub3QgYmUgZXhwb3NlZCBieSBkb2N1bWVudC5zdHlsZVNo
ZWV0cyBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg1ODYzCisKKyAgICAgICAgLSBNb2RpZmllZCBzdHlsZVNoZWV0cyBtZXRob2QgaW4g
RG9jdW1lbnQgdG8gcmV0dXJuIG9ubHkgc3R5bGVzaGVldHMKKyAgICAgICAgICB0aGF0IGFyZSBu
b3QgaW4gc2hhZG93IHRyZWVzLiBBbHNvIGFkZGVkIGEgbmV3IG1ldGhvZCBhbGxTdHlsZVNoZWV0
cworICAgICAgICAgIHRvIHJldHVybiBhbGwgc3R5bGVzaGVldHMuCisgICAgICAgIC0gTW9kaWZp
ZWQgU3R5bGVSZXNvbHZlciB0byBsb29rIHVwIGF1dGhvciBzdHlsZXMgd2l0aCB0cmVlIHNjb3Bl
cy4KKyAgICAgICAgICBUaGlzIGZpeGVzIHRoZSBmb2xsb3dpbmdzOgorICAgICAgICAgIGEuIGxv
d2VyLWJvdW5kYXJ5IGVuY2Fwc3VsYXRpb24gZm9yIENTUyBydWxlcy4KKyAgICAgICAgICBiLiBp
ZiBzb21lIGVsZW1lbnQgaW4gc2hhZG93IERPTSBzdWJ0cmVlIGVuYWJlbHMgYXBwbHlBdXRob3JT
dHlsZXMsCisgICAgICAgICAgICAgYWxsIENTUyBydWxlcyBpbiBhbmNlc3RvcnMgb2YgdGhlIHNo
YWRvdyBET00gc3VidHJlZSBhcmUgYXBwbGllZAorICAgICAgICAgICAgIHRvIHRoZSBlbGVtZW50
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvZG9tL3NoYWRvdy9kb2N1bWVudC1zdHlsZXNoZWV0cy1pbi1zaGFkb3cuaHRtbAorICAg
ICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvc3R5bGUtaW4tc2hhZG93Lmh0bWwKKworICAgICAg
ICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6OlN0eWxlUmVzb2x2ZXIpOgorICAgICAgICBSZW1vdmVkIGEgY29kZSB3aGljaCBpbml0aWFs
aXplcyBtX2F1dGhvclN0eWxlLCBiZWNhdXNlIHJlcGxhY2VkCisgICAgICAgIG1fYXV0aG9yU3R5
bGUgd2l0aCBtX2F1dGhvclN0eWxlcy4gbV9hdXRob3JTdHlsZXMgc3RvcmVzIHJ1bGUgc2V0cwor
ICAgICAgICBwZXIgdHJlZVNjb3BlLiBtX2F1dGhvclN0eWxlcyBpcyBhIGhhc2ggbWFwIGZyb20g
dHJlZSBzY29wZSB0bworICAgICAgICBydWxlIHNldC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OmFkZFN0eWxlc2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpkZXRlcm1pbmVUcmVlU2NvcGUpOgorICAgICAgICBBZGRl
ZCB0byBvYnRhaW4gYSB0cmVlIHNjb3BlIG9mIGEgZ2l2ZW4gc3R5bGVzaGVldCdzIG93bmVyIG5v
ZGUuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphZGRBdXRob3JSdWxlc0Zyb21T
aGVldCk6CisgICAgICAgIEFkZGVkLiBUaGlzIG1ldGhvZCBpcyBmb3IgYWRkaW5nIGEgbmV3IHJ1
bGUgc2V0IHRvIG1fYXV0aG9yU3R5bGVzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6YWRkQXV0aG9yUnVsZXNBbmRDb2xsZWN0VXNlclJ1bGVzRnJvbVNoZWV0cyk6CisgICAgICAg
IE1vZGlmaWVkIHRvIHVzZSBhZGRBdXRob3JSdWxlc0Zyb21TaGVldCB0byBhZGQgVXNlclN0eWxl
U2hlZXRzIHRvCisgICAgICAgIG1fYXV0aG9yU3R5bGVzLgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAgQXMgbV9hdXRob3JTdHlsZXMg
aXMgYSBoYXNoIG1hcCwgbW9kaWZpZWQgdG8gb2J0YWluIGZlYXR1cmVzIGZyb20KKyAgICAgICAg
YWxsIG1fYXV0aG9yU3R5bGVzJyB2YWx1ZXMuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjphcHBlbmRBdXRob3JTdHlsZXNoZWV0cyk6CisgICAgICAgIEFkZGVkIG9uZSBtb3JlIGFy
Z3VtZW50IHRvIHNwZWNpZnkgd2hlcmUgbmV3IHJ1bGVzIHNob3VsZCBiZSBhZGRlZC4KKyAgICAg
ICAgSWYgdGhlIGFyZ3VtZW50LCB0cmVlc2NvcGUsIGlzIG5vdCBnaXZlbiwgYSB0cmVlIHNjb3Bl
IG9mIGNzcworICAgICAgICBzdHlsZXNoZWV0IG93bmVyIG5vZGUgaXMgdXNlZC4KKyAgICAgICAg
SW52b2tlcyBzaHJpbmtUb0ZpdCBmb3IgZWFjaCBtX2F1dGhvclN0eWxlcycgdmFsdWUuCisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclJ1bGVzKToKKyAgICAgICAg
TW9kaWZpZWQgdG8gbG9vayB1cCBtX2F1dGhvclN0eWxlcyBieSB1c2luZyBtX2VsZW1lbnQncyB0
cmVlIHNjb3BlLgorICAgICAgICBJZiBhcHBseUF1dGhvclN0eWxlcyBpcyB0cnVlLCBjb250aW51
ZWQgdG8gbG9vayB1cCBtX2F1dGhvclN0eWxlcworICAgICAgICBieSB1c2luZyB0aGUgdHJlZSBz
Y29wZSdzIHBhcmVudC4gRmluYWxseSBsb29rIHVwIGJ5IHVzaW5nCisgICAgICAgIGRvY3VtZW50
LgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKToKKyAgICAg
ICAgUmVtb3ZlZCBtX2F1dGhvclN0eWxlLmdldCgpLiBJbnN0ZWFkLCBhZGRlZCBydWxlc2V0IG9i
dGFpbmVkIGJ5CisgICAgICAgIGxvb2tpbmcgdXAgbV9hdXRob3JTdHlsZXMgd2l0aCBtX2NoZWNr
ZXIuZG9jdW1lbnQoKS4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNoZWNrUmVn
aW9uU3R5bGUpOgorICAgICAgICBNb2RpZmllZCB0byBjaGVjayBhdXRob3Igc3R5bGVzIHdoaWNo
IGFyZSBpbiBhIHJlZ2lvbkVsZW1lbnQncworICAgICAgICB0cmVlc2NvcGUgYW5kIGl0cyBhbmNl
c3RvcnMuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0Q1NTT01XcmFw
cGVycyk6CisgICAgICAgIENoYW5nZWQgZG9jdW1lbnQtPnN0eWxlU2hlZXRzIHRvIGRvY3VtZW50
LT5hbGxTdHlsZVNoZWV0cy4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAg
ICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAgIEFkZGVkIGEgbmV3IG1lbWJlciB2YXJpYWJsZTog
bV9hdXRob3JTdHlsZXMgYW5kIHJlbW92ZWQgbV9hdXRob3JTdHlsZS4KKyAgICAgICAgQWRkZWQg
dGhyZWUgbmV3IG1ldGhvZHMsIGkuZS4gcnVsZVNldEZvclRyZWVTY29wZSwgZGV0ZXJtaW5lVHJl
ZVNjb3BlLAorICAgICAgICBhbmQgYWRkQXV0aG9yUnVsZXNGcm9tU2hlZXQuCisgICAgICAgIE1v
ZGlmaWVkIGFwcGVuZEF1dGhvclN0eWxlc2hlZXRzJyBkZWNsYXJhdGlvbiwgaS5lLiBhZGRlZCB0
aGlyZAorICAgICAgICBhcmd1bWVudDogY29uc3QgVHJlZVNjb3BlKj0wLgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgor
ICAgICAgICBJbml0aWFsaXplZCBtX3N0eWxlU2hlZXRzTm90SW5TaGFkb3cgaW4gdGhlIHNhbWUg
d2F5IGFzIG1fc3R5bGVTaGVldHMuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3Vt
ZW50KToKKyAgICAgICAgSW52b2tlZCBtX3N0eWxlU2hlZXRzTm90SW5TaGFkb3ctPmRvY3VtZW50
RGVzdHJveWVkIGluIHRoZSBzYW1lIHdheSBhcworICAgICAgICBtX3N0eWxlU2hlZXRzLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0eWxlU2hlZXRzKToKKyAgICAgICAgTW9kaWZpZWQg
c3R5bGVTaGVldHMgdG8gcmV0dXJuIG9ubHkgc3R5bGVzaGVldHMgdGhhdCBhcmUgbm90IGluIHNo
YWRvdworICAgICAgICB0cmVlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphbGxTdHls
ZVNoZWV0cyk6CisgICAgICAgIFNpbmNlIHN0eWxlU2hlZXRzIGlzIG1vZGlmaWVkLCBjcmVhdGVk
IGEgbmV3IG1ldGhvZCB3aGljaCB3b3JrcworICAgICAgICBpbiB0aGUgc2FtZSBtYW5uZXIgYXMg
dGhlIHByZXZpb3VzIHN0eWxlU2hlZXRzLgorICAgICAgICBBbGwgY29kZXMgd2hpY2ggdXNlcyB0
aGUgcHJldmlvdXMgc3R5bGVTaGVldHMgc2hvdWxkIGJlIG1vZGlmaWVkCisgICAgICAgIHRvIHVz
ZSB0aGllICJhbGxTdHlsZVNoZWV0cyIuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29s
bGVjdEFjdGl2ZVN0eWxlc2hlZXRzKToKKyAgICAgICAgQWRkZWQgb25lIG1vcmUgYXJndW1lbnQg
dG8gb2J0YWluIHN0eWxlU2hlZXRzIHRoYXQgYXJlIG5vdCBpbiBzaGFkb3cKKyAgICAgICAgdHJl
ZXMuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlQWN0aXZlU3R5bGVzaGVldHMp
OgorICAgICAgICBNb2RpZmllZCB0byB1cGRhdGUgYSB2ZWN0b3Igd2hpY2ggY29udGFpbnMgc3R5
bGVTaGVldHMgdGhhdCBhcmUgbm90CisgICAgICAgIGluIHNoYWRvdyB0cmVlcy4KKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgQWRkZWQgYSBu
ZXcgbWV0aG9kIGFsbFN0eWxlU2hlZXRzLgorICAgICAgICBBZGRlZCBhIG5ldyBtZW1iZXIgdmFy
aWFibGUsIG1fc3R5bGVTaGVldHNOb3RJblNoYWRvdywKKyAgICAgICAgaS5lLiBhIHZlY3RvciB3
aGljaCBjb250YWlucyBzdHlsZXNoZWV0cyB0aGF0IGFyZSBub3QgaW4gc2hhZG93IHRyZWVzLgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnZpYUluc3BlY3RvclN0eWxlU2hlZXQpOgorICAgICAg
ICBDaGFuZ2VkIGFsbCAic3R5bGVTaGVldHMiIHRvICJhbGxTdHlsZVNoZWV0cyIuCisKIDIwMTIt
MDUtMzAgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1No
YWRvdyBET01dIEhUTUxDb250ZW50RWxlbWVudCBhbmQgSFRNTFNoYWRvd0VsZW1lbnQgY29uc3Ry
dWN0b3JzIHNob3VsZCBiZSB2aXNpYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CmluZGV4IDQ5YTVlMWNkYzU1YWE2YjhiYzM1ZWRhOWI4N2M5MTZmMGI2OWY0MmYuLmZiNTY0NTM4
YmYwYWVjYmRiN2UzYjRiMGQ4MmUxNzUwYzBlYWEyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKQEAgLTExMCw2ICsxMTAsNyBAQAogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNs
dWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIlRyZWVTY29wZS5oIgogI2luY2x1ZGUgIlVzZXJBZ2Vu
dFN0eWxlU2hlZXRzLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIgpAQCAtMzk1LDEzICszOTYsNyBAQCBTdHls
ZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBtYXRjaEF1
dGhvckFuZFVzZXJTdHlsZXMpCiAKICAgICBpZiAobV9yb290RGVmYXVsdFN0eWxlICYmIHZpZXcp
CiAgICAgICAgIG1fbWVkaXVtID0gYWRvcHRQdHIobmV3IE1lZGlhUXVlcnlFdmFsdWF0b3Iodmll
dy0+bWVkaWFUeXBlKCksIHZpZXctPmZyYW1lKCksIG1fcm9vdERlZmF1bHRTdHlsZS5nZXQoKSkp
OwotCi0gICAgbV9hdXRob3JTdHlsZSA9IFJ1bGVTZXQ6OmNyZWF0ZSgpOwotICAgIC8vIEFkZGlu
ZyBydWxlcyBmcm9tIG11bHRpcGxlIHNoZWV0cywgc2hyaW5rIGF0IHRoZSBlbmQuCi0gICAgLy8g
QWRkaW5nIGdsb2JhbCBydWxlcyBmcm9tIG11bHRpcGxlIHNoZWV0cywgc2hyaW5rIGF0IHRoZSBl
bmQuCi0gICAgLy8gTm90ZSB0aGF0IHRoZXJlIHVzdWFsbHkgaXMgb25seSAxIHNoZWV0IGZvciBz
Y29wZWQgcnVsZXMsIHNvIGF1dG8tc2hyaW5rLXRvLWZpdCBpcyBmaW5lLgotICAgIG1fYXV0aG9y
U3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsKLQorICAgIAogICAgIC8vIEZJWE1FOiBU
aGlzIHN1Y2tzISBUaGUgdXNlciBzaGVldCBpcyByZXBhcnNlZCBldmVyeSB0aW1lIQogICAgIE93
blB0cjxSdWxlU2V0PiB0ZW1wVXNlclN0eWxlID0gUnVsZVNldDo6Y3JlYXRlKCk7CiAgICAgaWYg
KENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQgPSBkb2N1bWVudC0+cGFnZVVzZXJTaGVldCgp
KQpAQCAtNDIxLDcgKzQxNiw3IEBAIFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIoRG9jdW1l
bnQqIGRvY3VtZW50LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykKICNlbmRpZgogCiAg
ICAgYWRkU3R5bGVzaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKCk7Ci0gICAgYXBwZW5kQXV0aG9y
U3R5bGVzaGVldHMoMCwgZG9jdW1lbnQtPnN0eWxlU2hlZXRzKCktPnZlY3RvcigpKTsKKyAgICBh
cHBlbmRBdXRob3JTdHlsZXNoZWV0cygwLCBkb2N1bWVudC0+YWxsU3R5bGVTaGVldHMoKS0+dmVj
dG9yKCkpOwogfQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZFN0eWxlc2hlZXRzRnJvbVNlYW1s
ZXNzUGFyZW50cygpCkBAIC00MzYsNyArNDMxLDI0IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRk
U3R5bGVzaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKCkKICAgICAgICAgY2hpbGREb2N1bWVudCA9
IHBhcmVudERvY3VtZW50OwogICAgIH0KICAgICBmb3IgKGludCBpID0gYW5jZXN0b3JTaGVldHMu
c2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pCi0gICAgICAgIGFwcGVuZEF1dGhvclN0eWxlc2hlZXRz
KDAsIGFuY2VzdG9yU2hlZXRzLmF0KGkpLT52ZWN0b3IoKSk7CisgICAgICAgIGFwcGVuZEF1dGhv
clN0eWxlc2hlZXRzKDAsIGFuY2VzdG9yU2hlZXRzLmF0KGkpLT52ZWN0b3IoKSwgZG9jdW1lbnQo
KSk7Cit9CisKK2lubGluZSBjb25zdCBUcmVlU2NvcGUqIFN0eWxlUmVzb2x2ZXI6OmRldGVybWlu
ZVRyZWVTY29wZShjb25zdCBDU1NTdHlsZVNoZWV0KiBzaGVldCkKK3sKKyAgICBBU1NFUlQoc2hl
ZXQpOworICAgIE5vZGUqIG93bmVyTm9kZSA9IHNoZWV0LT5vd25lck5vZGUoKTsKKyAgICByZXR1
cm4gb3duZXJOb2RlPyBvd25lck5vZGUtPnRyZWVTY29wZSgpIDogMDsKK30KKwordm9pZCBTdHls
ZVJlc29sdmVyOjphZGRBdXRob3JSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMqIHNo
ZWV0LCBjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSkKK3sKKyAgICBUcmVlU2NvcGVkUnVsZVNl
dE1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fYXV0aG9yU3R5bGVzLmFkZCh0cmVlU2NvcGUs
IG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZCA9IFJ1bGVTZXQ6OmNyZWF0ZSgpOworICAgICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnNlY29uZC0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOworICAgIH0K
KyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnNlY29uZC0+YWRkUnVsZXNGcm9tU2hlZXQoc2hlZXQs
ICptX21lZGl1bSwgdGhpcyk7CiB9CiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkQXV0aG9yUnVs
ZXNBbmRDb2xsZWN0VXNlclJ1bGVzRnJvbVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0
eWxlU2hlZXQ+ID4qIHVzZXJTaGVldHMsIFJ1bGVTZXQmIHVzZXJTdHlsZSkKQEAgLTQ1MCw3ICs0
NjIsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZEF1dGhvclJ1bGVzQW5kQ29sbGVjdFVzZXJS
dWxlc0Zyb21TaGVldHMoY29uc3QgVmVjdG9yPFJlZgogICAgICAgICBpZiAoc2hlZXQtPmlzVXNl
clN0eWxlU2hlZXQoKSkKICAgICAgICAgICAgIHVzZXJTdHlsZS5hZGRSdWxlc0Zyb21TaGVldChz
aGVldCwgKm1fbWVkaXVtLCB0aGlzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hdXRo
b3JTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc2hlZXQsICptX21lZGl1bSwgdGhpcyk7CisgICAg
ICAgICAgICBhZGRBdXRob3JSdWxlc0Zyb21TaGVldChzaGVldCwgZGV0ZXJtaW5lVHJlZVNjb3Bl
KHVzZXJTaGVldHMtPmF0KGkpLmdldCgpKSk7CiAgICAgfQogfQogCkBAIC00NzMsNyArNDg1LDgg
QEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0RmVhdHVyZXMoKQogICAgIC8vIGluIHRoZSBj
dXJyZW50IHNldCBvZiBzdHlsZXNoZWV0cy4gU3R5bGUgc2hhcmluZyBjb2RlIHVzZXMgdGhpcyBp
bmZvcm1hdGlvbiB0byByZWplY3QKICAgICAvLyBzaGFyaW5nIGNhbmRpZGF0ZXMuCiAgICAgbV9m
ZWF0dXJlcy5hZGQoZGVmYXVsdFN0eWxlLT5mZWF0dXJlcygpKTsKLSAgICBtX2ZlYXR1cmVzLmFk
ZChtX2F1dGhvclN0eWxlLT5mZWF0dXJlcygpKTsKKyAgICBmb3IgKFRyZWVTY29wZWRSdWxlU2V0
TWFwOjppdGVyYXRvciBpdCA9IG1fYXV0aG9yU3R5bGVzLmJlZ2luKCk7IGl0ICE9IG1fYXV0aG9y
U3R5bGVzLmVuZCgpOyArK2l0KQorICAgICAgICBtX2ZlYXR1cmVzLmFkZChpdC0+c2Vjb25kLT5m
ZWF0dXJlcygpKTsKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQogICAgIGZvciAoU2NvcGVkUnVs
ZVNldE1hcDo6aXRlcmF0b3IgaXQgPSBtX3Njb3BlZEF1dGhvclN0eWxlcy5iZWdpbigpOyBpdCAh
PSBtX3Njb3BlZEF1dGhvclN0eWxlcy5lbmQoKTsgKytpdCkKICAgICAgICAgbV9mZWF0dXJlcy5h
ZGQoaXQtPnNlY29uZC0+ZmVhdHVyZXMoKSk7CkBAIC00ODUsNiArNDk4LDEyIEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6Y29sbGVjdEZlYXR1cmVzKCkKICAgICBtX3VuY29tbW9uQXR0cmlidXRlUnVs
ZVNldCA9IG1ha2VSdWxlU2V0KG1fZmVhdHVyZXMudW5jb21tb25BdHRyaWJ1dGVSdWxlcyk7CiB9
CiAKK2lubGluZSBSdWxlU2V0KiBTdHlsZVJlc29sdmVyOjpydWxlU2V0Rm9yVHJlZVNjb3BlKGNv
bnN0IFRyZWVTY29wZSogdHJlZVNjb3BlKSBjb25zdAoreworICAgIFRyZWVTY29wZWRSdWxlU2V0
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fYXV0aG9yU3R5bGVzLmZpbmQodHJlZVNjb3BlKTsK
KyAgICByZXR1cm4gaXQgIT0gbV9hdXRob3JTdHlsZXMuZW5kKCkgPyBpdC0+c2Vjb25kLmdldCgp
IDogMDsgCit9CisKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQogY29uc3QgQ29udGFpbmVyTm9k
ZSogU3R5bGVSZXNvbHZlcjo6ZGV0ZXJtaW5lU2NvcGUoY29uc3QgQ1NTU3R5bGVTaGVldCogc2hl
ZXQpCiB7CkBAIC01MTcsNyArNTM2LDcgQEAgaW5saW5lIFJ1bGVTZXQqIFN0eWxlUmVzb2x2ZXI6
OnJ1bGVTZXRGb3JTY29wZShjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkgY29uc3QKIH0KICNl
bmRpZgogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlc2hlZXRzKHVuc2ln
bmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mIHN0eWxlc2hl
ZXRzKQordm9pZCBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZXNoZWV0cyh1bnNpZ25l
ZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBzdHlsZXNoZWV0
cywgY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUpCiB7CiAgICAgLy8gVGhpcyBoYW5kbGVzIHNo
ZWV0cyBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSBzdHlsZXNoZWV0IGxpc3Qgb25seS4gSW4gb3Ro
ZXIgY2FzZXMgdGhlIHN0eWxlIHJlc29sdmVyCiAgICAgLy8gbmVlZHMgdG8gYmUgcmVjb25zdHJ1
Y3RlZC4gVG8gaGFuZGxlIGluc2VydGlvbnMgdG9vIHRoZSBydWxlIG9yZGVyIG51bWJlcnMgd291
bGQgbmVlZCB0byBiZSB1cGRhdGVkLgpAQCAtNTQxLDExICs1NjAsMTMgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjphcHBlbmRBdXRob3JTdHlsZXNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3Qg
VmVjdG9yPFJlZlAKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKLSAg
ICAgICAgbV9hdXRob3JTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc2hlZXQsICptX21lZGl1bSwg
dGhpcyk7CisgICAgICAgIGFkZEF1dGhvclJ1bGVzRnJvbVNoZWV0KHNoZWV0LCB0cmVlU2NvcGU/
IHRyZWVTY29wZSA6IGRldGVybWluZVRyZWVTY29wZShjc3NTaGVldCkpOworCiAgICAgICAgIGlm
ICghbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLCBjc3NTaGVl
dCk7CiAgICAgfQotICAgIG1fYXV0aG9yU3R5bGUtPnNocmlua1RvRml0KCk7CisgICAgZm9yIChU
cmVlU2NvcGVkUnVsZVNldE1hcDo6aXRlcmF0b3IgaXQgPSBtX2F1dGhvclN0eWxlcy5iZWdpbigp
OyBpdCAhPSBtX2F1dGhvclN0eWxlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgaXQtPnNlY29uZC0+
c2hyaW5rVG9GaXQoKTsKICAgICBjb2xsZWN0RmVhdHVyZXMoKTsKICAgICAKICAgICBpZiAoZG9j
dW1lbnQoKS0+cmVuZGVyZXIoKSAmJiBkb2N1bWVudCgpLT5yZW5kZXJlcigpLT5zdHlsZSgpKQpA
QCAtOTUyLDggKzk3MywyNSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMo
TWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcwogCiAgICAgLy8gTWF0
Y2ggZ2xvYmFsIGF1dGhvciBydWxlcy4KICAgICBNYXRjaE9wdGlvbnMgb3B0aW9ucyhpbmNsdWRl
RW1wdHlSdWxlcyk7Ci0gICAgY29sbGVjdE1hdGNoaW5nUnVsZXMobV9hdXRob3JTdHlsZS5nZXQo
KSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhv
clJ1bGUsIG9wdGlvbnMpOwotICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKG1fYXV0
aG9yU3R5bGUuZ2V0KCksIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFu
Z2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKworICAgIGNvbnN0IFRyZWVTY29wZSogdHJl
ZVNjb3BlID0gbV9lbGVtZW50LT50cmVlU2NvcGUoKTsKKyAgICBmb3IgKDsgdHJlZVNjb3BlOyB0
cmVlU2NvcGUgPSB0cmVlU2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKSB7CisgICAgICAgIFJ1bGVT
ZXQqIHJ1bGVTZXQgPSBydWxlU2V0Rm9yVHJlZVNjb3BlKHRyZWVTY29wZSk7CisgICAgICAgIGlm
IChydWxlU2V0KSB7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhydWxlU2V0LCBy
ZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVs
ZSwgb3B0aW9ucyk7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihy
dWxlU2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0
QXV0aG9yUnVsZSwgb3B0aW9ucyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF0cmVlU2NvcGUt
PmFwcGx5QXV0aG9yU3R5bGVzKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgLy8g
U2hvdWxkIGJlIGFwcGx5IFJVTEUgZGVjbGFyZWQgaW4gZG9jdW1lbnQgdHJlZS4KKyAgICBpZiAo
dHJlZVNjb3BlKSB7CisgICAgICAgIFJ1bGVTZXQqIHJ1bGVTZXQgPSBydWxlU2V0Rm9yVHJlZVNj
b3BlKGRvY3VtZW50KCkpOworICAgICAgICBpZiAocnVsZVNldCkgeworICAgICAgICAgICAgY29s
bGVjdE1hdGNoaW5nUnVsZXMocnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUs
IHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgICAgICAgICAgY29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24ocnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1
dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgICAg
ICB9CisgICAgfQogCiAgICAgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhyZXN1bHQsIGluY2x1ZGVF
bXB0eVJ1bGVzKTsKIApAQCAtMTg2Myw3ICsxOTAxLDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKGludCBwYWdlSW5kZXgpCiAgICAgbWF0Y2hQ
YWdlUnVsZXMocmVzdWx0LCBkZWZhdWx0UHJpbnRTdHlsZSwgaXNMZWZ0LCBpc0ZpcnN0LCBwYWdl
KTsKICAgICBtYXRjaFBhZ2VSdWxlcyhyZXN1bHQsIG1fdXNlclN0eWxlLmdldCgpLCBpc0xlZnQs
IGlzRmlyc3QsIHBhZ2UpOwogICAgIC8vIE9ubHkgY29uc2lkZXIgdGhlIGdsb2JhbCBhdXRob3Ig
UnVsZVNldCBmb3IgQHBhZ2UgcnVsZXMsIGFzIHBlciB0aGUgSFRNTDUgc3BlYy4KLSAgICBtYXRj
aFBhZ2VSdWxlcyhyZXN1bHQsIG1fYXV0aG9yU3R5bGUuZ2V0KCksIGlzTGVmdCwgaXNGaXJzdCwg
cGFnZSk7CisgICAgbWF0Y2hQYWdlUnVsZXMocmVzdWx0LCBydWxlU2V0Rm9yVHJlZVNjb3BlKG1f
Y2hlY2tlci5kb2N1bWVudCgpKSwgaXNMZWZ0LCBpc0ZpcnN0LCBwYWdlKTsKICAgICBtX2xpbmVI
ZWlnaHRWYWx1ZSA9IDA7CiAgICAgYm9vbCBpbmhlcml0ZWRPbmx5ID0gZmFsc2U7CiAgICAgYXBw
bHlNYXRjaGVkUHJvcGVydGllczxIaWdoUHJpb3JpdHlQcm9wZXJ0aWVzPihyZXN1bHQsIGZhbHNl
LCAwLCByZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMuc2l6ZSgpIC0gMSwgaW5oZXJpdGVkT25seSk7
CkBAIC0yMTcxLDE1ICsyMjA5LDIwIEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2hlY2tSZWdpb25T
dHlsZShFbGVtZW50KiByZWdpb25FbGVtZW50KQogICAgIC8vIEZJWE1FIChCVUcgNzI0NzIpOiBX
ZSBkb24ndCBhZGQgQC13ZWJraXQtcmVnaW9uIHJ1bGVzIG9mIHNjb3BlZCBzdHlsZSBzaGVldHMg
Zm9yIHRoZSBtb21lbnQsCiAgICAgLy8gc28gYWxsIHJlZ2lvbiBydWxlcyBhcmUgZ2xvYmFsIGJ5
IGRlZmF1bHQuIFZlcmlmeSB3aGV0aGVyIHRoYXQgY2FuIHN0YW5kIG9yIG5lZWRzIGNoYW5naW5n
LgogCi0gICAgdW5zaWduZWQgcnVsZXNTaXplID0gbV9hdXRob3JTdHlsZS0+bV9yZWdpb25TZWxl
Y3RvcnNBbmRSdWxlU2V0cy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1
bGVzU2l6ZTsgKytpKSB7Ci0gICAgICAgIEFTU0VSVChtX2F1dGhvclN0eWxlLT5tX3JlZ2lvblNl
bGVjdG9yc0FuZFJ1bGVTZXRzLmF0KGkpLnJ1bGVTZXQuZ2V0KCkpOwotICAgICAgICBpZiAoY2hl
Y2tSZWdpb25TZWxlY3RvcihtX2F1dGhvclN0eWxlLT5tX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVT
ZXRzLmF0KGkpLnNlbGVjdG9yLCByZWdpb25FbGVtZW50KSkKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIGZvciAoY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUgPSByZWdpb25FbGVtZW50
LT50cmVlU2NvcGUoKTsgdHJlZVNjb3BlOyB0cmVlU2NvcGUgPSB0cmVlU2NvcGUtPnBhcmVudFRy
ZWVTY29wZSgpKSB7CisgICAgICAgIFJ1bGVTZXQqIGF1dGhvclN0eWxlID0gcnVsZVNldEZvclRy
ZWVTY29wZSh0cmVlU2NvcGUpOworICAgICAgICBpZiAoYXV0aG9yU3R5bGUpIHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHJ1bGVzU2l6ZSA9IGF1dGhvclN0eWxlLT5tX3JlZ2lvblNlbGVjdG9yc0Fu
ZFJ1bGVTZXRzLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
dWxlc1NpemU7ICsraSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChhdXRob3JTdHlsZS0+bV9y
ZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cy5hdChpKS5ydWxlU2V0LmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBpZiAoY2hlY2tSZWdpb25TZWxlY3RvcihhdXRob3JTdHlsZS0+bV9yZWdpb25TZWxl
Y3RvcnNBbmRSdWxlU2V0cy5hdChpKS5zZWxlY3RvciwgcmVnaW9uRWxlbWVudCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKG1fdXNlclN0eWxlKSB7Ci0gICAgICAgIHJ1bGVzU2l6ZSA9IG1fdXNlclN0
eWxlLT5tX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzLnNpemUoKTsKKyAgICAgICAgdW5zaWdu
ZWQgcnVsZXNTaXplID0gbV91c2VyU3R5bGUtPm1fcmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMu
c2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcnVsZXNTaXplOyArK2kp
IHsKICAgICAgICAgICAgIEFTU0VSVChtX3VzZXJTdHlsZS0+bV9yZWdpb25TZWxlY3RvcnNBbmRS
dWxlU2V0cy5hdChpKS5ydWxlU2V0LmdldCgpKTsKICAgICAgICAgICAgIGlmIChjaGVja1JlZ2lv
blNlbGVjdG9yKG1fdXNlclN0eWxlLT5tX3JlZ2lvblNlbGVjdG9yc0FuZFJ1bGVTZXRzLmF0KGkp
LnNlbGVjdG9yLCByZWdpb25FbGVtZW50KSkKQEAgLTI5NzgsNyArMzAyMSw3IEBAIHN0YXRpYyB2
b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0
eWxlUnVsZT4gPiYgd3JhCiAKIHN0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hN
YXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYgd3JhcHBlck1hcCwgRG9jdW1l
bnQqIGRvY3VtZW50KQogewotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYg
c3R5bGVTaGVldHMgPSBkb2N1bWVudC0+c3R5bGVTaGVldHMoKS0+dmVjdG9yKCk7CisgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBzdHlsZVNoZWV0cyA9IGRvY3VtZW50LT5h
bGxTdHlsZVNoZWV0cygpLT52ZWN0b3IoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c3R5bGVTaGVldHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgU3R5bGVTaGVldCogc3R5bGVTaGVl
dCA9IHN0eWxlU2hlZXRzW2ldLmdldCgpOwogICAgICAgICBpZiAoIXN0eWxlU2hlZXQtPmlzQ1NT
U3R5bGVTaGVldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggNTM5ZGQ2MzU2
YWUwOWYxYzY4ZWYyN2Y2MmM5YTNmNTgxMTZkMTViZi4uNjY0YmU5YTI3MDA1MmNhOWI0OTU2NTc0
NGU5MDg3YTQzZTkwZGRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC04Myw2
ICs4Myw3IEBAIGNsYXNzIFN0eWxlU2hlZXQ7CiBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHM7CiBj
bGFzcyBTdHlsZVNoZWV0TGlzdDsKIGNsYXNzIFN0eWxlZEVsZW1lbnQ7CitjbGFzcyBUcmVlU2Nv
cGU7CiBjbGFzcyBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTsKIGNsYXNzIFdlYktpdENTU1NoYWRlclZh
bHVlOwogCkBAIC0xNTUsNyArMTU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGV4dFNpemVB
ZGp1c3QoYm9vbCBiKSB7IG1fZm9udERpcnR5IHw9IHN0eWxlKCktPnNldFRleHRTaXplQWRqdXN0
KGIpOyB9CiAgICAgYm9vbCBoYXNQYXJlbnROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRO
b2RlOyB9CiAgICAgCi0gICAgdm9pZCBhcHBlbmRBdXRob3JTdHlsZXNoZWV0cyh1bnNpZ25lZCBm
aXJzdE5ldywgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+Jik7CisgICAgdm9pZCBh
cHBlbmRBdXRob3JTdHlsZXNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdHlsZVNoZWV0PiA+JiwgY29uc3QgVHJlZVNjb3BlKiA9IDApOwogICAgIAogICAgIC8v
IEZpbmQgdGhlIGlkcyBvciBjbGFzc2VzIHRoZSBzZWxlY3RvcnMgb24gYSBzdHlsZXNoZWV0IGFy
ZSBzY29wZWQgdG8uIFRoZSBzZWxlY3RvcnMgb25seSBhcHBseSB0byBlbGVtZW50cyBpbiBzdWJ0
cmVlcyB3aGVyZSB0aGUgcm9vdCBlbGVtZW50IG1hdGNoZXMgdGhlIHNjb3BlLgogICAgIHN0YXRp
YyBib29sIGRldGVybWluZVN0eWxlc2hlZXRTZWxlY3RvclNjb3BlcyhTdHlsZVNoZWV0Q29udGVu
dHMqLCBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiYgaWRTY29wZXMsIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nSW1wbCo+JiBjbGFzc1Njb3Blcyk7CkBAIC0zNzEsNyArMzcyLDkgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzRmlyc3RQYWdlKGludCBwYWdlSW5kZXgpIGNvbnN0OwogICAgIFN0cmluZyBw
YWdlTmFtZShpbnQgcGFnZUluZGV4KSBjb25zdDsKIAotICAgIE93blB0cjxSdWxlU2V0PiBtX2F1
dGhvclN0eWxlOworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBUcmVlU2NvcGUqLCBPd25QdHI8
UnVsZVNldD4gPiBUcmVlU2NvcGVkUnVsZVNldE1hcDsKKworICAgIFRyZWVTY29wZWRSdWxlU2V0
TWFwIG1fYXV0aG9yU3R5bGVzOwogICAgIE93blB0cjxSdWxlU2V0PiBtX3VzZXJTdHlsZTsKIAog
ICAgIEZlYXR1cmVzIG1fZmVhdHVyZXM7CkBAIC00MDYsNiArNDA5LDcgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgUmVuZGVyU3R5bGUqIHNfc3R5bGVOb3RZZXRBdmFpbGFibGU7CiAKICAgICB2b2lk
IGFkZFN0eWxlc2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cygpOworICAgIHZvaWQgYWRkQXV0aG9y
UnVsZXNGcm9tU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzKiwgY29uc3QgVHJlZVNjb3BlKik7CiAg
ICAgdm9pZCBhZGRBdXRob3JSdWxlc0FuZENvbGxlY3RVc2VyUnVsZXNGcm9tU2hlZXRzKGNvbnN0
IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiosIFJ1bGVTZXQmIHVzZXJTdHlsZSk7CiAK
ICAgICB2b2lkIGNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOwpAQCAtNTM0LDYgKzUzOCw4IEBA
IHByaXZhdGU6CiAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGRlY2lkZSB3aGV0aGVyIG1fc2NvcGlu
Z0VsZW1lbnRTdGFjayBpcyBjb25zaXN0ZW50LCBzZXBhcmF0ZWx5IGZyb20gU2VsZWN0b3JDaGVj
a2VyOjptX3BhcmVudFN0YWNrLgogICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIG1fc2NvcGVTdGFj
a1BhcmVudDsKICNlbmRpZgorICAgIFJ1bGVTZXQqIHJ1bGVTZXRGb3JUcmVlU2NvcGUoY29uc3Qg
VHJlZVNjb3BlKikgY29uc3Q7CisgICAgY29uc3QgVHJlZVNjb3BlKiBkZXRlcm1pbmVUcmVlU2Nv
cGUoY29uc3QgQ1NTU3R5bGVTaGVldCopOwogCiAgICAgZnJpZW5kIGNsYXNzIFN0eWxlQnVpbGRl
cjsKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiwg
Y29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk0
NDc4YTg3M2ZiNWE5OWIyNGQ0NzY4MTM1OWYwNDQ0ZTBiMzFlMDAuLjM1ZmMxN2M0NWZlYjFlOTcx
YmRiZDEyNzVjZmQzZTAzOTc4MDNmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDMz
LDYgKzQzMyw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwm
IHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1fbXV0YXRpb25PYnNlcnZl
clR5cGVzKDApCiAjZW5kaWYKICAgICAsIG1fc3R5bGVTaGVldHMoU3R5bGVTaGVldExpc3Q6OmNy
ZWF0ZSh0aGlzKSkKKyAgICAsIG1fc3R5bGVTaGVldHNOb3RJblNoYWRvdyhTdHlsZVNoZWV0TGlz
dDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldChmYWxz
ZSkKICAgICAsIG1fcmVhZHlTdGF0ZShDb21wbGV0ZSkKICAgICAsIG1fc3R5bGVSZWNhbGNUaW1l
cih0aGlzLCAmRG9jdW1lbnQ6OnN0eWxlUmVjYWxjVGltZXJGaXJlZCkKQEAgLTYwNiw2ICs2MDcs
OCBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKIAogICAgIGlmIChtX3N0eWxlU2hlZXRzKQogICAg
ICAgICBtX3N0eWxlU2hlZXRzLT5kb2N1bWVudERlc3Ryb3llZCgpOworICAgIGlmIChtX3N0eWxl
U2hlZXRzTm90SW5TaGFkb3cpCisgICAgICAgIG1fc3R5bGVTaGVldHNOb3RJblNoYWRvdy0+ZG9j
dW1lbnREZXN0cm95ZWQoKTsKIAogICAgIGlmIChtX2VsZW1TaGVldCkKICAgICAgICAgbV9lbGVt
U2hlZXQtPmNsZWFyT3duZXJOb2RlKCk7CkBAIC0zMjA5LDYgKzMyMTIsMTEgQEAgUGFzc1JlZlB0
cjxOb2RlPiBEb2N1bWVudDo6Y2xvbmVOb2RlKGJvb2wgLypkZWVwKi8pCiAKIFN0eWxlU2hlZXRM
aXN0KiBEb2N1bWVudDo6c3R5bGVTaGVldHMoKQogeworICAgIHJldHVybiBtX3N0eWxlU2hlZXRz
Tm90SW5TaGFkb3cuZ2V0KCk7Cit9CisKK1N0eWxlU2hlZXRMaXN0KiBEb2N1bWVudDo6YWxsU3R5
bGVTaGVldHMoKQorewogICAgIHJldHVybiBtX3N0eWxlU2hlZXRzLmdldCgpOwogfQogCkBAIC0z
MzQ4LDcgKzMzNTYsNyBAQCB2b2lkIERvY3VtZW50OjpyZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRl
Tm9kZShOb2RlKiBub2RlKQogICAgIG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLnJlbW92ZShu
b2RlKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6Y29sbGVjdEFjdGl2ZVN0eWxlc2hlZXRzKFZlY3Rv
cjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgc2hlZXRzKQordm9pZCBEb2N1bWVudDo6Y29sbGVjdEFj
dGl2ZVN0eWxlc2hlZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgc2hlZXRzLCBWZWN0
b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mIGRvY3VtZW50T25seVNoZWV0cykKIHsKICAgICBib29s
IG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyA9IHRydWU7CiAgICAgaWYgKFNldHRpbmdzKiBzZXR0
aW5ncyA9IHRoaXMtPnNldHRpbmdzKCkpCkBAIC0zNDM2LDggKzM0NDQsMTIgQEAgdm9pZCBEb2N1
bWVudDo6Y29sbGVjdEFjdGl2ZVN0eWxlc2hlZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4g
PiYgc2hlZXRzKQogICAgICAgICAgICAgaWYgKHJlbC5jb250YWlucygiYWx0ZXJuYXRlIikgJiYg
dGl0bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHNoZWV0ID0gMDsKICAgICAgICAgfQot
ICAgICAgICBpZiAoc2hlZXQpCisgICAgICAgIGlmIChzaGVldCkgewogICAgICAgICAgICAgc2hl
ZXRzLmFwcGVuZChzaGVldCk7CisKKyAgICAgICAgICAgIGlmICghbi0+aXNJblNoYWRvd1RyZWUo
KSkKKyAgICAgICAgICAgICAgICBkb2N1bWVudE9ubHlTaGVldHMuYXBwZW5kKHNoZWV0KTsKKyAg
ICAgICAgfQogICAgIH0KIH0KIApAQCAtMzU1NSw4ICszNTY3LDggQEAgYm9vbCBEb2N1bWVudDo6
dXBkYXRlQWN0aXZlU3R5bGVzaGVldHMoU3R5bGVSZXNvbHZlclVwZGF0ZUZsYWcgdXBkYXRlRmxh
ZykKICAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIWF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIFN0eWxlU2hlZXRWZWN0b3IgbmV3U3R5bGVzaGVldHM7Ci0gICAgY29sbGVj
dEFjdGl2ZVN0eWxlc2hlZXRzKG5ld1N0eWxlc2hlZXRzKTsKKyAgICBTdHlsZVNoZWV0VmVjdG9y
IG5ld1N0eWxlc2hlZXRzLCBuZXdTdHlsZXNoZWV0c05vdEluU2hhZG93OworICAgIGNvbGxlY3RB
Y3RpdmVTdHlsZXNoZWV0cyhuZXdTdHlsZXNoZWV0cywgbmV3U3R5bGVzaGVldHNOb3RJblNoYWRv
dyk7CiAKICAgICBib29sIHJlcXVpcmVzU3R5bGVSZXNvbHZlclJlc2V0OwogICAgIGJvb2wgcmVx
dWlyZXNGdWxsU3R5bGVSZWNhbGM7CkBAIC0zNTY5LDYgKzM1ODEsNyBAQCBib29sIERvY3VtZW50
Ojp1cGRhdGVBY3RpdmVTdHlsZXNoZWV0cyhTdHlsZVJlc29sdmVyVXBkYXRlRmxhZyB1cGRhdGVG
bGFnKQogICAgICAgICByZXNldENTU0ZlYXR1cmVGbGFncygpOwogICAgIH0KICAgICBtX3N0eWxl
U2hlZXRzLT5zd2FwKG5ld1N0eWxlc2hlZXRzKTsKKyAgICBtX3N0eWxlU2hlZXRzTm90SW5TaGFk
b3ctPnN3YXAobmV3U3R5bGVzaGVldHNOb3RJblNoYWRvdyk7CiAKICAgICBtX3VzZXNSZW1Vbml0
cyA9IHN0eWxlU2hlZXRzVXNlUmVtVW5pdHMobV9zdHlsZVNoZWV0cy0+dmVjdG9yKCkpOwogICAg
IG1fZGlkQ2FsY3VsYXRlU3R5bGVSZXNvbHZlciA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDQzYzVmNTc3NGNlNzBmNGQ1NTcxZjBlNzFhMDBlYTgwZTgzNjgxM2EuLjE0NDJiYjNhMDg1
ZjQxNzNlNjQxYWI4MjY4M2Q1NGRiZTIxNThjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03
MTUsNiArNzE1LDcgQEAgcHVibGljOgogICAgIAogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMgcHJlcGFyZU1vdXNlRXZlbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBMYXlv
dXRQb2ludCYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCisgICAgU3R5bGVTaGVldExp
c3QqIGFsbFN0eWxlU2hlZXRzKCk7CiAgICAgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZXRzKCk7
CiAKICAgICAvKiBOZXdseSBwcm9wb3NlZCBDU1MzIG1lY2hhbmlzbSBmb3Igc2VsZWN0aW5nIGFs
dGVybmF0ZQpAQCAtMTIxMCw3ICsxMjExLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0Q1NT
RmVhdHVyZUZsYWdzKCk7CiAgICAgCiAgICAgYm9vbCB1cGRhdGVBY3RpdmVTdHlsZXNoZWV0cyhT
dHlsZVJlc29sdmVyVXBkYXRlRmxhZyk7Ci0gICAgdm9pZCBjb2xsZWN0QWN0aXZlU3R5bGVzaGVl
dHMoVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+Jik7CisgICAgdm9pZCBjb2xsZWN0QWN0aXZl
U3R5bGVzaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+JiwgVmVjdG9yPFJlZlB0cjxT
dHlsZVNoZWV0PiA+Jik7CiAgICAgYm9vbCB0ZXN0QWRkZWRTdHlsZXNoZWV0UmVxdWlyZXNTdHls
ZVJlY2FsYyhTdHlsZVNoZWV0Q29udGVudHMqKTsKICAgICB2b2lkIGFuYWx5emVTdHlsZXNoZWV0
Q2hhbmdlKFN0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnLCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxl
U2hlZXQ+ID4mIG5ld1N0eWxlc2hlZXRzLCBib29sJiByZXF1aXJlc1N0eWxlUmVzb2x2ZXJSZXNl
dCwgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpOwogCkBAIC0xMzI3LDYgKzEzMjgsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBSZWZQdHI8U3R5bGVTaGVldExpc3Q+IG1fc3R5bGVT
aGVldHM7IC8vIEFsbCBvZiB0aGUgc3R5bGVzaGVldHMgdGhhdCBhcmUgY3VycmVudGx5IGluIGVm
ZmVjdCBmb3Igb3VyIG1lZGlhIHR5cGUgYW5kIHN0eWxlc2hlZXQgc2V0LgorICAgIFJlZlB0cjxT
dHlsZVNoZWV0TGlzdD4gbV9zdHlsZVNoZWV0c05vdEluU2hhZG93OyAvLyBUaGUgc3R5bGVzaGVl
dHMgdGhhdCBhcmUgb2J0YWluZWQgZnJvbSBtX3N0eWxlU2hlZXRzIGJ5IHJlbW92aW5nIHN0eWxl
cyBpbiBzaGFkb3cgdHJlZS4KICAgICBib29sIG1faGFkQWN0aXZlTG9hZGluZ1N0eWxlc2hlZXQ7
CiAgICAgCiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxOb2RlKiwgMzI+IFN0eWxlU2hlZXRDYW5k
aWRhdGVMaXN0SGFzaFNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCmluZGV4IDZmYTg4YzQ1YjQ3NjkyNjdiMTIxZTVjYTk2YzQ0NGJmZjk0MGQ2
ZWYuLjA5OGEyODIyNzJjNjk2MzU4ZjdkZTlmYTlhZmU3YjFiOTdmNWU1MGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNjQ4LDcgKzY0
OCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3Ry
aW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJhCiAgICAgc3R5bGVJbmZvcyA9IFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPjo6Y3JlYXRl
KCk7CiAgICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jdW1lbnRzID0gbV9kb21BZ2VudC0+ZG9jdW1l
bnRzKCk7CiAgICAgZm9yIChWZWN0b3I8RG9jdW1lbnQqPjo6aXRlcmF0b3IgaXQgPSBkb2N1bWVu
dHMuYmVnaW4oKTsgaXQgIT0gZG9jdW1lbnRzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIFN0eWxl
U2hlZXRMaXN0KiBsaXN0ID0gKCppdCktPnN0eWxlU2hlZXRzKCk7CisgICAgICAgIFN0eWxlU2hl
ZXRMaXN0KiBsaXN0ID0gKCppdCktPmFsbFN0eWxlU2hlZXRzKCk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsaXN0LT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgICAgICBTdHls
ZVNoZWV0KiBzdHlsZVNoZWV0ID0gbGlzdC0+aXRlbShpKTsKICAgICAgICAgICAgIGlmIChzdHls
ZVNoZWV0LT5pc0NTU1N0eWxlU2hlZXQoKSkKQEAgLTkwNiw3ICs5MDYsNyBAQCBJbnNwZWN0b3JT
dHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6dmlhSW5zcGVjdG9yU3R5bGVTaGVldChEb2N1
bWVudCogZG9jdW1lbgogICAgIH0KICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwotICAg
IFN0eWxlU2hlZXRMaXN0KiBzdHlsZVNoZWV0cyA9IGRvY3VtZW50LT5zdHlsZVNoZWV0cygpOwor
ICAgIFN0eWxlU2hlZXRMaXN0KiBzdHlsZVNoZWV0cyA9IGRvY3VtZW50LT5hbGxTdHlsZVNoZWV0
cygpOwogICAgIFN0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBzdHlsZVNoZWV0cy0+aXRlbShzdHls
ZVNoZWV0cy0+bGVuZ3RoKCkgLSAxKTsKICAgICBpZiAoIXN0eWxlU2hlZXQgfHwgIXN0eWxlU2hl
ZXQtPmlzQ1NTU3R5bGVTaGVldCgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YWQ0ZDIw
ZjRlYmE2M2EwNzIxZTBjMGJlYmJkN2M5YmIyOWY0YjJjLi42YmIxYTI4NTM3MmY5ZTdhZDkwNWY5
NDMyNjc4Yjk5NjAyNDcwZWYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDUtMjIgIFRh
a2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgorCisgICAgICAgIFN0eWxlIGVsZW1l
bnRzIGluIFNoYWRvdyBET00gc2hvdWxkIG5vdCBiZSBleHBvc2VkIGJ5IGRvY3VtZW50LnN0eWxl
U2hlZXRzIGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODU4NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kb2N1bWVudC1zdHlsZXNoZWV0cy1pbi1zaGFkb3ct
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZG9jdW1lbnQt
c3R5bGVzaGVldHMtaW4tc2hhZG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3No
YWRvdy9zdHlsZS1pbi1zaGFkb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvc3R5bGUtaW4tc2hhZG93Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA1LTMwICBa
b2x0YW4gQXJ2YWkgIDx6YXJ2YWlAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0gR2Fy
ZGVuaW5nLiBTaGFkb3cgRE9NIGlzIGRpc2FibGVkIG9uIFF0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2RvY3VtZW50LXN0eWxlc2hlZXRzLWluLXNoYWRvdy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZG9jdW1lbnQtc3R5bGVzaGVl
dHMtaW4tc2hhZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDMzYjIzOGVjNmY3YjRlY2Jj
M2IzZDA2NWM5ZGMzMmM1MDg3ZWRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2RvY3VtZW50LXN0eWxlc2hlZXRzLWluLXNoYWRvdy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw2IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKK1BBU1MgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGgg
aXMgMAorUEFTUyBpZnJhbWUuY29udGVudERvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aCBpcyAw
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kb2N1bWVudC1zdHls
ZXNoZWV0cy1pbi1zaGFkb3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kb2N1
bWVudC1zdHlsZXNoZWV0cy1pbi1zaGFkb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODYzYWIwZTZmMjMx
YTE1OTFkYzNjNTliMzQwMGY0OGNlYjViYzQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2RvY3VtZW50LXN0eWxlc2hlZXRzLWluLXNoYWRvdy5odG1sCkBA
IC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+Cit2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7
CitpZnJhbWUuc3JjID0gJy4uL1dpbmRvdy9yZXNvdXJjZXMvYmxhbmsuaHRtbCc7CisKK2lmcmFt
ZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CisgIHRyeSB7CisgICAgdmFyIGlmcmFtZURvY3VtZW50
ID0gaWZyYW1lLmNvbnRlbnREb2N1bWVudDsKKyAgICB2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KGlmcmFtZURvY3VtZW50LmhlYWQpOworICAgIHZhciBzdHlsZSA9IGlmcmFt
ZURvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CisgICAgc2hhZG93Um9vdC5hcHBlbmRD
aGlsZChzdHlsZSk7CisgICAgc2hvdWxkQmUoImlmcmFtZS5jb250ZW50RG9jdW1lbnQuc3R5bGVT
aGVldHMubGVuZ3RoIiwgIjAiKTsKKworICAgIHZhciBsaW5rID0gaWZyYW1lRG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnbGluaycpOworICAgIGxpbmsuc2V0QXR0cmlidXRlKCdyZWwnLCAnc3R5bGVz
aGVldCcpOworICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgJ3Jlc291cmNlcy9saW5rLWlu
LXNoYWRvdy1zdHlsZS5jc3MnKTsKKyAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKGxpbmspOwor
ICAgIHNob3VsZEJlKCJpZnJhbWUuY29udGVudERvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aCIs
ICIwIik7CisgIH0gZmluYWxseSB7CisgICAgaWZyYW1lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo
aWZyYW1lKTsKKyAgfQorICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisK
K2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKKworbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc3R5bGUtaW4tc2hhZG93LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zdHlsZS1pbi1zaGFkb3ctZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzZTI4NGIwOTVhZTFkYjczMzJjOTBkZTI4ZGY1YzQxMTQw
NzFjYzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc3R5
bGUtaW4tc2hhZG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDQ0CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDgwMHg0NAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDI4CisgICAg
ICBSZW5kZXJQYXJ0T2JqZWN0IHtJRlJBTUV9IGF0ICgwLDApIHNpemUgNzg0eDgKKyAgICAgICAg
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODR4OAorICAgICAgICAgIFJlbmRlclZpZXcgYXQgKDAsMCkg
c2l6ZSA3ODR4OAorICAgICAgICBsYXllciBhdCAoMCwwKSBzaXplIDc4NHg4CisgICAgICAgICAg
UmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgNzg0eDgKKyAgICAgICAgICAgIFJlbmRl
ckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzY4eDAKKyAgICAgICAgICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3Njh4MAorICAgICAgICAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCwwKSBzaXplIDc2OHgwIFtjb2xvcj0jODAwMDgwXQorICAgICAgICAgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc2OHgwCisgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCw4KSBzaXplIDc4NHgyMAorICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0
ICgwLDApIHNpemUgNTV4MTkKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSA1NXgxOQorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTU6ICJNb2Rp
ZmllZCIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDI4KSBzaXplIDc4NHgwCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc3R5bGUtaW4tc2hhZG93Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc3R5bGUtaW4tc2hhZG93Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWY2N2Y0ZWIyMGYzMmIzODRkMDhkNjY3OTIxMDgwOTkxOGJjNzY4MwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zdHlsZS1pbi1zaGFkb3cuaHRt
bApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzZWFtbGVzcyBzcmM9Ii4uLy4uL2ZyYW1lcy9zZWFtbGVz
cy9yZXNvdXJjZXMvY3NzLWNhc2NhZGUtY2hpbGQuaHRtbCI+PC9pZnJhbWU+Cis8ZGl2IGlkPSJm
b3VyIj48L2Rpdj4KKzxkaXYgaWQ9ImZpdmUiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBvbmUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm91cicpOwordmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChvbmUpOworc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPFNUWUxFPmRpdiB7
IGNvbG9yOiBibHVlIH08L1NUWUxFPjxTUEFOPk1vZGlmaWVkPC9TUEFOPic7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>