<?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>97504</bug_id>
          
          <creation_ts>2012-09-24 17:38:29 -0700</creation_ts>
          <short_desc>Don&apos;t use StyleSheetList internally</short_desc>
          <delta_ts>2012-09-24 21:25:31 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>727122</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-09-24 17:38:29 -0700</bug_when>
    <thetext>StyleSheetList is a DOM type and should not be used internally. Use plain Vector instead and construct StyleSheetList on DOM access only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727155</commentid>
    <comment_count>1</comment_count>
      <attachid>165484</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-09-24 18:24:35 -0700</bug_when>
    <thetext>Created attachment 165484
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727226</commentid>
    <comment_count>2</comment_count>
      <attachid>165484</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-24 20:23:39 -0700</bug_when>
    <thetext>Comment on attachment 165484
patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Also hot rid of the StyleSheetVector typedef as Vector&lt;RefPtr&lt;StyleSheet&gt; &gt; is less opaque and not much longer.

Typo: hot rid of

&gt; Source/WebCore/dom/Document.cpp:3201
&gt; +    if (!m_authorStyleSheetList)
&gt; +        m_authorStyleSheetList = StyleSheetList::create(this);
&gt; +    return m_authorStyleSheetList.get();

So now we wouldn&apos;t create StyleSheetList until it&apos;s used by scripts? I think that should be explained in the change log.
Doesn&apos;t this imply that if the author did
document.styleSheets.foo = &apos;bar&apos;;
gc(); // Force GC here.
alert(document.styleSheets.foo); // would give us &quot;undefined&quot;?

&gt; Source/WebCore/dom/Document.h:1322
&gt;      OwnPtr&lt;DocumentStyleSheetCollection&gt; m_styleSheetCollection;
&gt; +    RefPtr&lt;StyleSheetList&gt; m_authorStyleSheetList;

This change of ownership of m_authorStyleSheetList should be explained in the change log.

&gt; Source/WebCore/dom/DocumentStyleSheetCollection.cpp:461
&gt; -    m_authorStyleSheets-&gt;swap(newStylesheets);
&gt; +    m_authorStyleSheets = newStylesheets;

Why do we not want to swap?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727230</commentid>
    <comment_count>3</comment_count>
      <attachid>165484</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-24 20:28:43 -0700</bug_when>
    <thetext>Comment on attachment 165484
patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:3201
&gt;&gt; +    return m_authorStyleSheetList.get();
&gt; 
&gt; So now we wouldn&apos;t create StyleSheetList until it&apos;s used by scripts? I think that should be explained in the change log.
&gt; Doesn&apos;t this imply that if the author did
&gt; document.styleSheets.foo = &apos;bar&apos;;
&gt; gc(); // Force GC here.
&gt; alert(document.styleSheets.foo); // would give us &quot;undefined&quot;?

Ugh... nvm. Document has a RefPtr to StyleSheetList.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727233</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-09-24 20:50:39 -0700</bug_when>
    <thetext>(In reply to comment #2)

&gt; So now we wouldn&apos;t create StyleSheetList until it&apos;s used by scripts? I think that should be explained in the change log.
&gt; Doesn&apos;t this imply that if the author did
&gt; document.styleSheets.foo = &apos;bar&apos;;
&gt; gc(); // Force GC here.
&gt; alert(document.styleSheets.foo); // would give us &quot;undefined&quot;?

No since document refs the StyleSheetList and always returns the same instance after initial  construction. There shouldn&apos;t be any externally observable changes.

&gt; Why do we not want to swap?

Good point, I forgot Vector has swap() too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727242</commentid>
    <comment_count>5</comment_count>
      <attachid>165508</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-09-24 20:58:53 -0700</bug_when>
    <thetext>Created attachment 165508
updated patch

Updates based on comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727257</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-09-24 21:25:31 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/129452</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165484</attachid>
            <date>2012-09-24 18:24:35 -0700</date>
            <delta_ts>2012-09-24 20:58:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>stylesheetlist-internal-2.patch</filename>
            <type>text/plain</type>
            <size>12911</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTQzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA5LTI0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgU3R5bGVTaGVl
dExpc3QgaW50ZXJuYWxseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk3NTA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3R5bGVTaGVldExpc3QgaXMgYSBET00gdHlwZSBhbmQgc2hvdWxkIG5vdCBiZSB1
c2VkIGludGVybmFsbHkuIFVzZSBwbGFpbiBWZWN0b3IgaW5zdGVhZCBhbmQgY29uc3RydWN0IFN0
eWxlU2hlZXRMaXN0IG9uIERPTSBhY2Nlc3Mgb25seS4KKyAgICAgICAgCisgICAgICAgIEFsc28g
aG90IHJpZCBvZiB0aGUgU3R5bGVTaGVldFZlY3RvciB0eXBlZGVmIGFzIFZlY3RvcjxSZWZQdHI8
U3R5bGVTaGVldD4gPiBpcyBsZXNzIG9wYXF1ZSBhbmQgbm90IG11Y2ggbG9uZ2VyLgorCisgICAg
ICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNv
bHZlcjo6U3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjph
ZGRTdHlsZXNoZWV0c0Zyb21TZWFtbGVzc1BhcmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBjc3Mv
U3R5bGVTaGVldExpc3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU3R5bGVTaGVl
dExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldExpc3Q6OmRvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRMaXN0OjpzZXRTdHlsZVNoZWV0cyk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvbXBhdGliaWxpdHlNb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdHlsZVNoZWV0cyk6CisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbjo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp+RG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjphbmFseXplU3R5bGVTaGVldENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmF1dGhvclN0eWxlU2hlZXRzKToKKyAg
ICAgICAgKERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24pOgorCiAyMDEyLTA5LTI0ICBQYXRy
aWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBTdHJp
bmc6Om9wZXJhdG9yKz0oKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAko
cmV2aXNpb24gMTI5NDIzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NDksNyArNDQ5LDcgQEAgU3R5bGVSZXNvbHZlcjo6U3R5bGVS
ZXNvbHZlcihEb2N1bWVudCogZAogI2VuZGlmCiAKICAgICBhZGRTdHlsZXNoZWV0c0Zyb21TZWFt
bGVzc1BhcmVudHMoKTsKLSAgICBhcHBlbmRBdXRob3JTdHlsZXNoZWV0cygwLCBzdHlsZVNoZWV0
Q29sbGVjdGlvbi0+YXV0aG9yU3R5bGVTaGVldHMoKS0+dmVjdG9yKCkpOworICAgIGFwcGVuZEF1
dGhvclN0eWxlc2hlZXRzKDAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5hdXRob3JTdHlsZVNoZWV0
cygpKTsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjphZGRTdHlsZXNoZWV0c0Zyb21TZWFtbGVz
c1BhcmVudHMoKQpAQCAtNDU3LDE0ICs0NTcsMTQgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGRT
dHlsZXNoZWV0c0Zyb21TZQogICAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBzdHlsZXNoZWV0IGxpc3Rz
IGZyb20gb3VyIGFuY2VzdG9ycywgYW5kIHdhbGsgdGhhdAogICAgIC8vIGxpc3QgaW4gcmV2ZXJz
ZSBvcmRlciBzbyB0aGF0IHRoZSByb290LW1vc3Qgc2hlZXRzIGFyZSBhcHBlbmRlZCBmaXJzdC4K
ICAgICBEb2N1bWVudCogY2hpbGREb2N1bWVudCA9IGRvY3VtZW50KCk7Ci0gICAgVmVjdG9yPFN0
eWxlU2hlZXRMaXN0Kj4gYW5jZXN0b3JTaGVldHM7CisgICAgVmVjdG9yPGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3R5bGVTaGVldD4gPiogPiBhbmNlc3RvclNoZWV0czsKICAgICB3aGlsZSAoSFRNTElG
cmFtZUVsZW1lbnQqIHBhcmVudElGcmFtZSA9IGNoaWxkRG9jdW1lbnQtPnNlYW1sZXNzUGFyZW50
SUZyYW1lKCkpIHsKICAgICAgICAgRG9jdW1lbnQqIHBhcmVudERvY3VtZW50ID0gcGFyZW50SUZy
YW1lLT5kb2N1bWVudCgpOwotICAgICAgICBhbmNlc3RvclNoZWV0cy5hcHBlbmQocGFyZW50RG9j
dW1lbnQtPnN0eWxlU2hlZXRzKCkpOworICAgICAgICBhbmNlc3RvclNoZWV0cy5hcHBlbmQoJnBh
cmVudERvY3VtZW50LT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hdXRob3JTdHlsZVNoZWV0cygp
KTsKICAgICAgICAgY2hpbGREb2N1bWVudCA9IHBhcmVudERvY3VtZW50OwogICAgIH0KICAgICBm
b3IgKGludCBpID0gYW5jZXN0b3JTaGVldHMuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pCi0gICAg
ICAgIGFwcGVuZEF1dGhvclN0eWxlc2hlZXRzKDAsIGFuY2VzdG9yU2hlZXRzLmF0KGkpLT52ZWN0
b3IoKSk7CisgICAgICAgIGFwcGVuZEF1dGhvclN0eWxlc2hlZXRzKDAsICphbmNlc3RvclNoZWV0
cy5hdChpKSk7CiB9CiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRkQXV0aG9yUnVsZXNBbmRDb2xs
ZWN0VXNlclJ1bGVzRnJvbVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+
ID4qIHVzZXJTaGVldHMsIFJ1bGVTZXQmIHVzZXJTdHlsZSkKQEAgLTMxNzgsNyArMzE3OCw3IEBA
IHN0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXAKIAogc3RhdGljIHZvaWQg
Y29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVS
dWxlPiA+JiB3cmFwcGVyTWFwLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHlsZVNo
ZWV0Q29sbGVjdGlvbikKIHsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4m
IHN0eWxlU2hlZXRzID0gc3R5bGVTaGVldENvbGxlY3Rpb24tPmF1dGhvclN0eWxlU2hlZXRzKCkt
PnZlY3RvcigpOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgc3R5bGVT
aGVldHMgPSBzdHlsZVNoZWV0Q29sbGVjdGlvbi0+YXV0aG9yU3R5bGVTaGVldHMoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5bGVTaGVldHMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHN0eWxlU2hlZXRzW2ldLmdldCgpOwogICAgICAg
ICBpZiAoIXN0eWxlU2hlZXQtPmlzQ1NTU3R5bGVTaGVldCgpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlU2hlZXRMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVTaGVldExpc3QuY3BwCShyZXZpc2lvbiAxMjk0MjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBA
CiAKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtMzEsOCArMzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVN0eWxlU2hlZXRMaXN0OjpTdHlsZVNoZWV0TGlz
dChEb2N1bWVudCogZG9jKQotICAgIDogbV9kb2MoZG9jKQorU3R5bGVTaGVldExpc3Q6OlN0eWxl
U2hlZXRMaXN0KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQp
CiB7CiB9CiAKQEAgLTQwLDI0ICs0MSwzMyBAQCBTdHlsZVNoZWV0TGlzdDo6flN0eWxlU2hlZXRM
aXN0KCkKIHsKIH0KIAotdm9pZCBTdHlsZVNoZWV0TGlzdDo6ZG9jdW1lbnREZXN0cm95ZWQoKQor
aW5saW5lIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgU3R5bGVTaGVldExpc3Q6
OnN0eWxlU2hlZXRzKCkgY29uc3QKIHsKLSAgICBtX2RvYyA9IDA7CisgICAgaWYgKCFtX2RvY3Vt
ZW50KQorICAgICAgICByZXR1cm4gbV9kZXRhY2hlZFN0eWxlU2hlZXRzOworICAgIHJldHVybiBt
X2RvY3VtZW50LT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5hdXRob3JTdHlsZVNoZWV0cygpOwor
fQorCit2b2lkIFN0eWxlU2hlZXRMaXN0OjpkZXRhY2hGcm9tRG9jdW1lbnQoKQoreworICAgIG1f
ZGV0YWNoZWRTdHlsZVNoZWV0cyA9IG1fZG9jdW1lbnQtPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCkt
PmF1dGhvclN0eWxlU2hlZXRzKCk7CisgICAgbV9kb2N1bWVudCA9IDA7CiB9CiAKIHVuc2lnbmVk
IFN0eWxlU2hlZXRMaXN0OjpsZW5ndGgoKSBjb25zdAogewotICAgIHJldHVybiBtX3NoZWV0cy5z
aXplKCk7CisgICAgcmV0dXJuIHN0eWxlU2hlZXRzKCkuc2l6ZSgpOwogfQogCiBTdHlsZVNoZWV0
KiBTdHlsZVNoZWV0TGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICByZXR1cm4gaW5k
ZXggPCBsZW5ndGgoKSA/IG1fc2hlZXRzW2luZGV4XS5nZXQoKSA6IDA7CisgICAgY29uc3QgVmVj
dG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBzaGVldHMgPSBzdHlsZVNoZWV0cygpOworICAgIHJl
dHVybiBpbmRleCA8IHNoZWV0cy5zaXplKCkgPyBzaGVldHNbaW5kZXhdLmdldCgpIDogMDsKIH0K
IAogSFRNTFN0eWxlRWxlbWVudCogU3R5bGVTaGVldExpc3Q6OmdldE5hbWVkSXRlbShjb25zdCBT
dHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2RvYykKKyAgICBpZiAoIW1fZG9jdW1l
bnQpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gSUUgYWxzbyBzdXBwb3J0cyByZXRyaWV2
aW5nIGEgc3R5bGVzaGVldCBieSBuYW1lLCB1c2luZyB0aGUgbmFtZS9pZCBvZiB0aGUgPHN0eWxl
PiB0YWcKQEAgLTY1LDggKzc1LDcgQEAgSFRNTFN0eWxlRWxlbWVudCogU3R5bGVTaGVldExpc3Q6
OmdldE5hbQogICAgIC8vICMjIyBCYWQgaW1wbGVtZW50YXRpb24gYmVjYXVzZSByZXR1cm5zIGEg
c2luZ2xlIGVsZW1lbnQgKGFyZSBJRHMgYWx3YXlzIHVuaXF1ZT8pCiAgICAgLy8gYW5kIGRvZXNu
J3QgbG9vayBmb3IgbmFtZSBhdHRyaWJ1dGUuCiAgICAgLy8gQnV0IHVuaWNpdHkgb2Ygc3R5bGVz
aGVldCBpZHMgaXMgZ29vZCBwcmFjdGljZSBhbnl3YXkgOykKLQotICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBtX2RvYy0+Z2V0RWxlbWVudEJ5SWQobmFtZSk7CisgICAgRWxlbWVudCogZWxlbWVudCA9
IG1fZG9jdW1lbnQtPmdldEVsZW1lbnRCeUlkKG5hbWUpOwogICAgIGlmIChlbGVtZW50ICYmIGVs
ZW1lbnQtPmhhc1RhZ05hbWUoc3R5bGVUYWcpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTFN0eWxlRWxlbWVudCo+KGVsZW1lbnQpOwogICAgIHJldHVybiAwOwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgJKHJldmlzaW9uIDEyOTQyMikKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw0MCArMzIsMjYg
QEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MU3R5bGVFbGVtZW50OwogY2xhc3MgU3R5bGVT
aGVldDsKIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4gU3R5bGVTaGVldFZl
Y3RvcjsKLQogY2xhc3MgU3R5bGVTaGVldExpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVNo
ZWV0TGlzdD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlU2hlZXRMaXN0
PiBjcmVhdGUoRG9jdW1lbnQqIGRvYykgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlU2hlZXRM
aXN0KGRvYykpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVTaGVldExpc3Q+IGNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVNoZWV0TGlz
dChkb2N1bWVudCkpOyB9CiAgICAgflN0eWxlU2hlZXRMaXN0KCk7CiAKLSAgICB2b2lkIGRvY3Vt
ZW50RGVzdHJveWVkKCk7Ci0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICBTdHls
ZVNoZWV0KiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKIAogICAgIEhUTUxTdHlsZUVsZW1lbnQqIGdl
dE5hbWVkSXRlbShjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotICAgIGNvbnN0IFN0eWxlU2hlZXRW
ZWN0b3ImIHZlY3RvcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zaGVldHM7Ci0g
ICAgfQotCi0gICAgdm9pZCBzd2FwKFN0eWxlU2hlZXRWZWN0b3ImIHNoZWV0cykKLSAgICB7Ci0g
ICAgICAgIG1fc2hlZXRzLnN3YXAoc2hlZXRzKTsKLSAgICB9Ci0KLSAgICBEb2N1bWVudCogZG9j
dW1lbnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZG9jOwotICAgIH0KKyAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50OyB9CisKKyAgICB2b2lkIGRldGFjaEZy
b21Eb2N1bWVudCgpOwogCiBwcml2YXRlOgogICAgIFN0eWxlU2hlZXRMaXN0KERvY3VtZW50Kik7
CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBzdHlsZVNoZWV0cygpIGNv
bnN0OwogCi0gICAgRG9jdW1lbnQqIG1fZG9jOwotICAgIFN0eWxlU2hlZXRWZWN0b3IgbV9zaGVl
dHM7CisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVNo
ZWV0PiA+IG1fZGV0YWNoZWRTdHlsZVNoZWV0czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTI5NDIzKQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMwLDYgKzYz
MCw5IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogCiAgICAgbV9kZWNvZGVyID0gMDsKIAorICAg
IGlmIChtX2F1dGhvclN0eWxlU2hlZXRMaXN0KQorICAgICAgICBtX2F1dGhvclN0eWxlU2hlZXRM
aXN0LT5kZXRhY2hGcm9tRG9jdW1lbnQoKTsKKwogICAgIG1fc3R5bGVTaGVldENvbGxlY3Rpb24u
Y2xlYXIoKTsKIAogICAgIGlmIChtX25hbWVkRmxvd3MpCkBAIC03NzgsNyArNzgxLDcgQEAgdm9p
ZCBEb2N1bWVudDo6c2V0Q29tcGF0aWJpbGl0eU1vZGUoQ29tcAogewogICAgIGlmIChtX2NvbXBh
dGliaWxpdHlNb2RlTG9ja2VkIHx8IG1vZGUgPT0gbV9jb21wYXRpYmlsaXR5TW9kZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIEFTU0VSVCghbV9zdHlsZVNoZWV0Q29sbGVjdGlvbi0+YXV0aG9yU3R5
bGVTaGVldHMoKS0+bGVuZ3RoKCkpOworICAgIEFTU0VSVChtX3N0eWxlU2hlZXRDb2xsZWN0aW9u
LT5hdXRob3JTdHlsZVNoZWV0cygpLmlzRW1wdHkoKSk7CiAgICAgYm9vbCB3YXNJblF1aXJrc01v
ZGUgPSBpblF1aXJrc01vZGUoKTsKICAgICBtX2NvbXBhdGliaWxpdHlNb2RlID0gbW9kZTsKICAg
ICBzZWxlY3RvclF1ZXJ5Q2FjaGUoKS0+aW52YWxpZGF0ZSgpOwpAQCAtMzE5Myw3ICszMTk2LDkg
QEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6Y2xvbmVOb2RlKGJvbwogCiBTdHlsZVNoZWV0
TGlzdCogRG9jdW1lbnQ6OnN0eWxlU2hlZXRzKCkKIHsKLSAgICByZXR1cm4gbV9zdHlsZVNoZWV0
Q29sbGVjdGlvbi0+YXV0aG9yU3R5bGVTaGVldHMoKTsKKyAgICBpZiAoIW1fYXV0aG9yU3R5bGVT
aGVldExpc3QpCisgICAgICAgIG1fYXV0aG9yU3R5bGVTaGVldExpc3QgPSBTdHlsZVNoZWV0TGlz
dDo6Y3JlYXRlKHRoaXMpOworICAgIHJldHVybiBtX2F1dGhvclN0eWxlU2hlZXRMaXN0LmdldCgp
OwogfQogCiBTdHJpbmcgRG9jdW1lbnQ6OnByZWZlcnJlZFN0eWxlc2hlZXRTZXQoKSBjb25zdApJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDEyOTQyMykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzE5LDYgKzEzMTksNyBAQCBw
cml2YXRlOgogCiAKICAgICBPd25QdHI8RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbj4gbV9z
dHlsZVNoZWV0Q29sbGVjdGlvbjsKKyAgICBSZWZQdHI8U3R5bGVTaGVldExpc3Q+IG1fYXV0aG9y
U3R5bGVTaGVldExpc3Q7CiAKICAgICBPd25QdHI8Rm9ybUNvbnRyb2xsZXI+IG1fZm9ybUNvbnRy
b2xsZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDEyOTQyMykKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNyArNTMsNiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBEb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKERvY3VtZW50KiBk
b2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2F1dGhvclN0eWxl
U2hlZXRzKFN0eWxlU2hlZXRMaXN0OjpjcmVhdGUoZG9jdW1lbnQpKQogICAgICwgbV9wZW5kaW5n
U3R5bGVzaGVldHMoMCkKICAgICAsIG1fcGFnZUdyb3VwVXNlclNoZWV0Q2FjaGVWYWxpZChmYWxz
ZSkKICAgICAsIG1faGFkQWN0aXZlTG9hZGluZ1N0eWxlc2hlZXQoZmFsc2UpCkBAIC03MCw4ICs2
OSw2IEBAIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OkRvY3VtZW50U3QKIAogRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6fkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24oKQog
ewotICAgIG1fYXV0aG9yU3R5bGVTaGVldHMtPmRvY3VtZW50RGVzdHJveWVkKCk7Ci0KICAgICBp
ZiAobV9wYWdlVXNlclNoZWV0KQogICAgICAgICBtX3BhZ2VVc2VyU2hlZXQtPmNsZWFyT3duZXJO
b2RlKCk7CiAgICAgaWYgKG1fcGFnZUdyb3VwVXNlclNoZWV0cykgewpAQCAtNDAwLDExICszOTcs
MTEgQEAgdm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphbmFseQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBTZWUgaWYgd2UgYXJlIGp1c3QgYWRkaW5nIHN0eWxlc2hlZXRzLgot
ICAgIHVuc2lnbmVkIG9sZFN0eWxlc2hlZXRDb3VudCA9IG1fYXV0aG9yU3R5bGVTaGVldHMtPmxl
bmd0aCgpOworICAgIHVuc2lnbmVkIG9sZFN0eWxlc2hlZXRDb3VudCA9IG1fYXV0aG9yU3R5bGVT
aGVldHMuc2l6ZSgpOwogICAgIGlmIChuZXdTdHlsZXNoZWV0Q291bnQgPCBvbGRTdHlsZXNoZWV0
Q291bnQpCiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2xk
U3R5bGVzaGVldENvdW50OyArK2kpIHsKLSAgICAgICAgaWYgKG1fYXV0aG9yU3R5bGVTaGVldHMt
Pml0ZW0oaSkgIT0gbmV3U3R5bGVzaGVldHNbaV0pCisgICAgICAgIGlmIChtX2F1dGhvclN0eWxl
U2hlZXRzW2ldICE9IG5ld1N0eWxlc2hlZXRzW2ldKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICByZXF1aXJlc1N0eWxlUmVzb2x2ZXJSZXNldCA9IGZhbHNlOwpAQCAtNDQ4LDcgKzQ0
NSw3IEBAIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXQKICAgICBpZiAo
IW1fZG9jdW1lbnQtPnJlbmRlcmVyKCkgfHwgIW1fZG9jdW1lbnQtPmF0dGFjaGVkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0eWxlU2hlZXRWZWN0b3IgbmV3U3R5bGVzaGVldHM7
CisgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+IG5ld1N0eWxlc2hlZXRzOwogICAgIGNv
bGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhuZXdTdHlsZXNoZWV0cyk7CiAKICAgICBib29sIHJlcXVp
cmVzU3R5bGVSZXNvbHZlclJlc2V0OwpAQCAtNDU4LDEyICs0NTUsMTIgQEAgYm9vbCBEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdAogICAgIGlmIChyZXF1aXJlc1N0eWxlUmVzb2x2
ZXJSZXNldCkKICAgICAgICAgbV9kb2N1bWVudC0+Y2xlYXJTdHlsZVJlc29sdmVyKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXIoKS0+YXBwZW5kQXV0aG9y
U3R5bGVzaGVldHMobV9hdXRob3JTdHlsZVNoZWV0cy0+bGVuZ3RoKCksIG5ld1N0eWxlc2hlZXRz
KTsKKyAgICAgICAgbV9kb2N1bWVudC0+c3R5bGVSZXNvbHZlcigpLT5hcHBlbmRBdXRob3JTdHls
ZXNoZWV0cyhtX2F1dGhvclN0eWxlU2hlZXRzLnNpemUoKSwgbmV3U3R5bGVzaGVldHMpOwogICAg
ICAgICByZXNldENTU0ZlYXR1cmVGbGFncygpOwogICAgIH0KLSAgICBtX2F1dGhvclN0eWxlU2hl
ZXRzLT5zd2FwKG5ld1N0eWxlc2hlZXRzKTsKKyAgICBtX2F1dGhvclN0eWxlU2hlZXRzID0gbmV3
U3R5bGVzaGVldHM7CiAKLSAgICBtX3VzZXNSZW1Vbml0cyA9IHN0eWxlU2hlZXRzVXNlUmVtVW5p
dHMobV9hdXRob3JTdHlsZVNoZWV0cy0+dmVjdG9yKCkpOworICAgIG1fdXNlc1JlbVVuaXRzID0g
c3R5bGVTaGVldHNVc2VSZW1Vbml0cyhtX2F1dGhvclN0eWxlU2hlZXRzKTsKICAgICBtX25lZWRz
VXBkYXRlQWN0aXZlU3R5bGVzaGVldHNPblN0eWxlUmVjYWxjID0gZmFsc2U7CiAKICAgICBtX2Rv
Y3VtZW50LT5ub3RpZnlTZWFtbGVzc0NoaWxkRG9jdW1lbnRzT2ZTdHlsZXNoZWV0VXBkYXRlKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmgJKHJldmlzaW9uIDEyOTQyMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAg
cHVibGljOgogICAgIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnQqKTsKICAg
ICB+RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbigpOwogCi0gICAgU3R5bGVTaGVldExpc3Qq
IGF1dGhvclN0eWxlU2hlZXRzKCkgeyByZXR1cm4gbV9hdXRob3JTdHlsZVNoZWV0cy5nZXQoKTsg
fQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgYXV0aG9yU3R5bGVTaGVl
dHMoKSB7IHJldHVybiBtX2F1dGhvclN0eWxlU2hlZXRzOyB9CiAKICAgICBDU1NTdHlsZVNoZWV0
KiBwYWdlVXNlclNoZWV0KCk7CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0
PiA+KiBwYWdlR3JvdXBVc2VyU2hlZXRzKCkgY29uc3Q7CkBAIC0xMDYsNyArMTA2LDcgQEAgcHJp
dmF0ZToKIAogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwogCi0gICAgUmVmUHRyPFN0eWxlU2hl
ZXRMaXN0PiBtX2F1dGhvclN0eWxlU2hlZXRzOworICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVl
dD4gPiBtX2F1dGhvclN0eWxlU2hlZXRzOwogCiAgICAgLy8gVHJhY2sgdGhlIG51bWJlciBvZiBj
dXJyZW50bHkgbG9hZGluZyB0b3AtbGV2ZWwgc3R5bGVzaGVldHMgbmVlZGVkIGZvciByZW5kZXJp
bmcuCiAgICAgLy8gU2hlZXRzIGxvYWRlZCB1c2luZyB0aGUgQGltcG9ydCBkaXJlY3RpdmUgYXJl
IG5vdCBpbmNsdWRlZCBpbiB0aGlzIGNvdW50Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165508</attachid>
            <date>2012-09-24 20:58:53 -0700</date>
            <delta_ts>2012-09-24 21:02:35 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>stylesheetlist-internal-3.patch</filename>
            <type>text/plain</type>
            <size>13457</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTQ0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA5LTI0ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgU3R5bGVTaGVl
dExpc3QgaW50ZXJuYWxseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk3NTA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3R5bGVTaGVldExpc3QgaXMgYSBET00gdHlwZSBhbmQgc2hvdWxkIG5vdCBiZSB1
c2VkIGludGVybmFsbHkuIFVzZSBwbGFpbiBWZWN0b3IgaW5zdGVhZCBhbmQgY29uc3RydWN0IFN0
eWxlU2hlZXRMaXN0IG9uIERPTSBhY2Nlc3Mgb25seS4KKworICAgICAgICAqIGNzcy9TdHlsZVJl
c29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRkU3R5bGVzaGVldHNGcm9t
U2VhbWxlc3NQYXJlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRMaXN0OjpTdHlsZVNoZWV0TGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0TGlzdDo6c3R5bGVTaGVldHMpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0TGlzdDo6ZGV0YWNoRnJvbURv
Y3VtZW50KToKKyAgICAgICAgCisgICAgICAgICAgICBVc2UgbGl2ZSBzdHlsZXNoZWV0IHZlY3Rv
ciBvZiB0aGUgZG9jdW1lbnRzIHN0eWxlc2hlZXQgY29sbGVjdGlvbiBhcyBsb25nIGFzIHdlIGFy
ZSBhdHRhY2hlZCB0byBhIGRvY3VtZW50LiAKKyAgICAgICAgICAgIFdoZW4gZGV0YWNoZWQgY29w
eSB0aGUgc3R5bGVzaGVldCB2ZWN0b3IgdG8gYSBtZW1iZXIgZmllbGQgYW5kIHVzZSB0aGF0IGlu
c3RlYWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRMaXN0OjpsZW5ndGgpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldExpc3Q6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTaGVldExpc3Q6OmdldE5hbWVkSXRlbSk6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRM
aXN0Lmg6CisgICAgICAgIAorICAgICAgICAgICAgUmVtb3ZlZCBTdHlsZVNoZWV0VmVjdG9yIHR5
cGVkZWYgYXMgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+IGlzIGxlc3Mgb3BhcXVlIGFuZCBu
b3QgbXVjaCBsb25nZXIuCisgICAgCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlU2hlZXRMaXN0OjpjcmVhdGUpOgorICAgICAgICAoU3R5bGVTaGVldExpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldExpc3Q6OmRvY3VtZW50KToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29tcGF0aWJpbGl0eU1vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0eWxlU2hlZXRzKToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246On5Eb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b246OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKToKKyAgICAgICAg
KiBkb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjCisKIDIwMTItMDktMjQgIFlvc2hpZnVtaSBJbm91ZSAg
PHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBEb2N1bWVudDo6YWRvcHROb2RlIGZvciBt
dWx0aXBsZSBmaWVsZHMgdGltZSBpbnB1dCBVSSBzaG91bGQgbm90IGNyYXNoCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAxMjk0MjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0OSw3ICs0
NDksNyBAQCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50KiBkCiAjZW5kaWYK
IAogICAgIGFkZFN0eWxlc2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cygpOwotICAgIGFwcGVuZEF1
dGhvclN0eWxlc2hlZXRzKDAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5hdXRob3JTdHlsZVNoZWV0
cygpLT52ZWN0b3IoKSk7CisgICAgYXBwZW5kQXV0aG9yU3R5bGVzaGVldHMoMCwgc3R5bGVTaGVl
dENvbGxlY3Rpb24tPmF1dGhvclN0eWxlU2hlZXRzKCkpOwogfQogCiB2b2lkIFN0eWxlUmVzb2x2
ZXI6OmFkZFN0eWxlc2hlZXRzRnJvbVNlYW1sZXNzUGFyZW50cygpCkBAIC00NTcsMTQgKzQ1Nywx
NCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkZFN0eWxlc2hlZXRzRnJvbVNlCiAgICAgLy8gQnVp
bGQgYSBsaXN0IG9mIHN0eWxlc2hlZXQgbGlzdHMgZnJvbSBvdXIgYW5jZXN0b3JzLCBhbmQgd2Fs
ayB0aGF0CiAgICAgLy8gbGlzdCBpbiByZXZlcnNlIG9yZGVyIHNvIHRoYXQgdGhlIHJvb3QtbW9z
dCBzaGVldHMgYXJlIGFwcGVuZGVkIGZpcnN0LgogICAgIERvY3VtZW50KiBjaGlsZERvY3VtZW50
ID0gZG9jdW1lbnQoKTsKLSAgICBWZWN0b3I8U3R5bGVTaGVldExpc3QqPiBhbmNlc3RvclNoZWV0
czsKKyAgICBWZWN0b3I8Y29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+KiA+IGFuY2Vz
dG9yU2hlZXRzOwogICAgIHdoaWxlIChIVE1MSUZyYW1lRWxlbWVudCogcGFyZW50SUZyYW1lID0g
Y2hpbGREb2N1bWVudC0+c2VhbWxlc3NQYXJlbnRJRnJhbWUoKSkgewogICAgICAgICBEb2N1bWVu
dCogcGFyZW50RG9jdW1lbnQgPSBwYXJlbnRJRnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgICAgIGFu
Y2VzdG9yU2hlZXRzLmFwcGVuZChwYXJlbnREb2N1bWVudC0+c3R5bGVTaGVldHMoKSk7CisgICAg
ICAgIGFuY2VzdG9yU2hlZXRzLmFwcGVuZCgmcGFyZW50RG9jdW1lbnQtPnN0eWxlU2hlZXRDb2xs
ZWN0aW9uKCktPmF1dGhvclN0eWxlU2hlZXRzKCkpOwogICAgICAgICBjaGlsZERvY3VtZW50ID0g
cGFyZW50RG9jdW1lbnQ7CiAgICAgfQogICAgIGZvciAoaW50IGkgPSBhbmNlc3RvclNoZWV0cy5z
aXplKCkgLSAxOyBpID49IDA7IGktLSkKLSAgICAgICAgYXBwZW5kQXV0aG9yU3R5bGVzaGVldHMo
MCwgYW5jZXN0b3JTaGVldHMuYXQoaSktPnZlY3RvcigpKTsKKyAgICAgICAgYXBwZW5kQXV0aG9y
U3R5bGVzaGVldHMoMCwgKmFuY2VzdG9yU2hlZXRzLmF0KGkpKTsKIH0KIAogdm9pZCBTdHlsZVJl
c29sdmVyOjphZGRBdXRob3JSdWxlc0FuZENvbGxlY3RVc2VyUnVsZXNGcm9tU2hlZXRzKGNvbnN0
IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogdXNlclNoZWV0cywgUnVsZVNldCYgdXNl
clN0eWxlKQpAQCAtMzE3OCw3ICszMTc4LDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdENTU09NV3Jh
cHBlcnMoSGFzaE1hcAogCiBzdGF0aWMgdm9pZCBjb2xsZWN0Q1NTT01XcmFwcGVycyhIYXNoTWFw
PFN0eWxlUnVsZSosIFJlZlB0cjxDU1NTdHlsZVJ1bGU+ID4mIHdyYXBwZXJNYXAsIERvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb24qIHN0eWxlU2hlZXRDb2xsZWN0aW9uKQogewotICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgc3R5bGVTaGVldHMgPSBzdHlsZVNoZWV0Q29s
bGVjdGlvbi0+YXV0aG9yU3R5bGVTaGVldHMoKS0+dmVjdG9yKCk7CisgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBzdHlsZVNoZWV0cyA9IHN0eWxlU2hlZXRDb2xsZWN0aW9u
LT5hdXRob3JTdHlsZVNoZWV0cygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdHls
ZVNoZWV0cy5zaXplKCk7ICsraSkgewogICAgICAgICBTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0g
c3R5bGVTaGVldHNbaV0uZ2V0KCk7CiAgICAgICAgIGlmICghc3R5bGVTaGVldC0+aXNDU1NTdHls
ZVNoZWV0KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAJKHJldmlz
aW9uIDEyOTQyMikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50U3R5bGVTaGVldENv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVF
bGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zMSw4ICszMiw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAot
U3R5bGVTaGVldExpc3Q6OlN0eWxlU2hlZXRMaXN0KERvY3VtZW50KiBkb2MpCi0gICAgOiBtX2Rv
Yyhkb2MpCitTdHlsZVNoZWV0TGlzdDo6U3R5bGVTaGVldExpc3QoRG9jdW1lbnQqIGRvY3VtZW50
KQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKIHsKIH0KIApAQCAtNDAsMjQgKzQxLDMzIEBA
IFN0eWxlU2hlZXRMaXN0Ojp+U3R5bGVTaGVldExpc3QoKQogewogfQogCi12b2lkIFN0eWxlU2hl
ZXRMaXN0Ojpkb2N1bWVudERlc3Ryb3llZCgpCitpbmxpbmUgY29uc3QgVmVjdG9yPFJlZlB0cjxT
dHlsZVNoZWV0PiA+JiBTdHlsZVNoZWV0TGlzdDo6c3R5bGVTaGVldHMoKSBjb25zdAogewotICAg
IG1fZG9jID0gMDsKKyAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBtX2RldGFj
aGVkU3R5bGVTaGVldHM7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPnN0eWxlU2hlZXRDb2xsZWN0
aW9uKCktPmF1dGhvclN0eWxlU2hlZXRzKCk7Cit9CisKK3ZvaWQgU3R5bGVTaGVldExpc3Q6OmRl
dGFjaEZyb21Eb2N1bWVudCgpCit7CisgICAgbV9kZXRhY2hlZFN0eWxlU2hlZXRzID0gbV9kb2N1
bWVudC0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+YXV0aG9yU3R5bGVTaGVldHMoKTsKKyAgICBt
X2RvY3VtZW50ID0gMDsKIH0KIAogdW5zaWduZWQgU3R5bGVTaGVldExpc3Q6Omxlbmd0aCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fc2hlZXRzLnNpemUoKTsKKyAgICByZXR1cm4gc3R5bGVTaGVl
dHMoKS5zaXplKCk7CiB9CiAKIFN0eWxlU2hlZXQqIFN0eWxlU2hlZXRMaXN0OjppdGVtKHVuc2ln
bmVkIGluZGV4KQogewotICAgIHJldHVybiBpbmRleCA8IGxlbmd0aCgpID8gbV9zaGVldHNbaW5k
ZXhdLmdldCgpIDogMDsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mIHNo
ZWV0cyA9IHN0eWxlU2hlZXRzKCk7CisgICAgcmV0dXJuIGluZGV4IDwgc2hlZXRzLnNpemUoKSA/
IHNoZWV0c1tpbmRleF0uZ2V0KCkgOiAwOwogfQogCiBIVE1MU3R5bGVFbGVtZW50KiBTdHlsZVNo
ZWV0TGlzdDo6Z2V0TmFtZWRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKIHsKLSAgICBp
ZiAoIW1fZG9jKQorICAgIGlmICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICAvLyBJRSBhbHNvIHN1cHBvcnRzIHJldHJpZXZpbmcgYSBzdHlsZXNoZWV0IGJ5IG5hbWUsIHVz
aW5nIHRoZSBuYW1lL2lkIG9mIHRoZSA8c3R5bGU+IHRhZwpAQCAtNjUsOCArNzUsNyBAQCBIVE1M
U3R5bGVFbGVtZW50KiBTdHlsZVNoZWV0TGlzdDo6Z2V0TmFtCiAgICAgLy8gIyMjIEJhZCBpbXBs
ZW1lbnRhdGlvbiBiZWNhdXNlIHJldHVybnMgYSBzaW5nbGUgZWxlbWVudCAoYXJlIElEcyBhbHdh
eXMgdW5pcXVlPykKICAgICAvLyBhbmQgZG9lc24ndCBsb29rIGZvciBuYW1lIGF0dHJpYnV0ZS4K
ICAgICAvLyBCdXQgdW5pY2l0eSBvZiBzdHlsZXNoZWV0IGlkcyBpcyBnb29kIHByYWN0aWNlIGFu
eXdheSA7KQotCi0gICAgRWxlbWVudCogZWxlbWVudCA9IG1fZG9jLT5nZXRFbGVtZW50QnlJZChu
YW1lKTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9kb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQo
bmFtZSk7CiAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShzdHlsZVRhZykp
CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU3R5bGVFbGVtZW50Kj4oZWxlbWVudCk7
CiAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuaAkocmV2
aXNpb24gMTI5NDIyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDQwICszMiwyNiBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhU
TUxTdHlsZUVsZW1lbnQ7CiBjbGFzcyBTdHlsZVNoZWV0OwogCi10eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8U3R5bGVTaGVldD4gPiBTdHlsZVNoZWV0VmVjdG9yOwotCiBjbGFzcyBTdHlsZVNoZWV0TGlz
dCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlU2hlZXRMaXN0PiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3R5bGVTaGVldExpc3Q+IGNyZWF0ZShEb2N1bWVudCogZG9jKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgU3R5bGVTaGVldExpc3QoZG9jKSk7IH0KKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHlsZVNoZWV0TGlzdD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IFN0eWxlU2hlZXRMaXN0KGRvY3VtZW50KSk7IH0KICAgICB+U3R5bGVT
aGVldExpc3QoKTsKIAotICAgIHZvaWQgZG9jdW1lbnREZXN0cm95ZWQoKTsKLQogICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0OwogICAgIFN0eWxlU2hlZXQqIGl0ZW0odW5zaWduZWQgaW5kZXgp
OwogCiAgICAgSFRNTFN0eWxlRWxlbWVudCogZ2V0TmFtZWRJdGVtKGNvbnN0IFN0cmluZyYpIGNv
bnN0OwogCi0gICAgY29uc3QgU3R5bGVTaGVldFZlY3RvciYgdmVjdG9yKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX3NoZWV0czsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAoU3R5bGVT
aGVldFZlY3RvciYgc2hlZXRzKQotICAgIHsKLSAgICAgICAgbV9zaGVldHMuc3dhcChzaGVldHMp
OwotICAgIH0KLQotICAgIERvY3VtZW50KiBkb2N1bWVudCgpCi0gICAgewotICAgICAgICByZXR1
cm4gbV9kb2M7Ci0gICAgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9j
dW1lbnQ7IH0KKworICAgIHZvaWQgZGV0YWNoRnJvbURvY3VtZW50KCk7CiAKIHByaXZhdGU6CiAg
ICAgU3R5bGVTaGVldExpc3QoRG9jdW1lbnQqKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0
eWxlU2hlZXQ+ID4mIHN0eWxlU2hlZXRzKCkgY29uc3Q7CiAKLSAgICBEb2N1bWVudCogbV9kb2M7
Ci0gICAgU3R5bGVTaGVldFZlY3RvciBtX3NoZWV0czsKKyAgICBEb2N1bWVudCogbV9kb2N1bWVu
dDsKKyAgICBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4gbV9kZXRhY2hlZFN0eWxlU2hlZXRz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiAxMjk0MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MzAsNiArNjMwLDkgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgp
CiAKICAgICBtX2RlY29kZXIgPSAwOwogCisgICAgaWYgKG1fYXV0aG9yU3R5bGVTaGVldExpc3Qp
CisgICAgICAgIG1fYXV0aG9yU3R5bGVTaGVldExpc3QtPmRldGFjaEZyb21Eb2N1bWVudCgpOwor
CiAgICAgbV9zdHlsZVNoZWV0Q29sbGVjdGlvbi5jbGVhcigpOwogCiAgICAgaWYgKG1fbmFtZWRG
bG93cykKQEAgLTc3OCw3ICs3ODEsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRDb21wYXRpYmlsaXR5
TW9kZShDb21wCiB7CiAgICAgaWYgKG1fY29tcGF0aWJpbGl0eU1vZGVMb2NrZWQgfHwgbW9kZSA9
PSBtX2NvbXBhdGliaWxpdHlNb2RlKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKCFtX3N0
eWxlU2hlZXRDb2xsZWN0aW9uLT5hdXRob3JTdHlsZVNoZWV0cygpLT5sZW5ndGgoKSk7CisgICAg
QVNTRVJUKG1fc3R5bGVTaGVldENvbGxlY3Rpb24tPmF1dGhvclN0eWxlU2hlZXRzKCkuaXNFbXB0
eSgpKTsKICAgICBib29sIHdhc0luUXVpcmtzTW9kZSA9IGluUXVpcmtzTW9kZSgpOwogICAgIG1f
Y29tcGF0aWJpbGl0eU1vZGUgPSBtb2RlOwogICAgIHNlbGVjdG9yUXVlcnlDYWNoZSgpLT5pbnZh
bGlkYXRlKCk7CkBAIC0zMTkzLDcgKzMxOTYsOSBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50
OjpjbG9uZU5vZGUoYm9vCiAKIFN0eWxlU2hlZXRMaXN0KiBEb2N1bWVudDo6c3R5bGVTaGVldHMo
KQogewotICAgIHJldHVybiBtX3N0eWxlU2hlZXRDb2xsZWN0aW9uLT5hdXRob3JTdHlsZVNoZWV0
cygpOworICAgIGlmICghbV9hdXRob3JTdHlsZVNoZWV0TGlzdCkKKyAgICAgICAgbV9hdXRob3JT
dHlsZVNoZWV0TGlzdCA9IFN0eWxlU2hlZXRMaXN0OjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJu
IG1fYXV0aG9yU3R5bGVTaGVldExpc3QuZ2V0KCk7CiB9CiAKIFN0cmluZyBEb2N1bWVudDo6cHJl
ZmVycmVkU3R5bGVzaGVldFNldCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2
aXNpb24gMTI5NDIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMTksNiArMTMxOSw3IEBAIHByaXZhdGU6CiAKIAogICAgIE93blB0cjxEb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uPiBtX3N0eWxlU2hlZXRDb2xsZWN0aW9uOworICAgIFJl
ZlB0cjxTdHlsZVNoZWV0TGlzdD4gbV9hdXRob3JTdHlsZVNoZWV0TGlzdDsKIAogICAgIE93blB0
cjxGb3JtQ29udHJvbGxlcj4gbV9mb3JtQ29udHJvbGxlcjsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAkocmV2aXNp
b24gMTI5NDIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxl
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OkRvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChk
b2N1bWVudCkKLSAgICAsIG1fYXV0aG9yU3R5bGVTaGVldHMoU3R5bGVTaGVldExpc3Q6OmNyZWF0
ZShkb2N1bWVudCkpCiAgICAgLCBtX3BlbmRpbmdTdHlsZXNoZWV0cygwKQogICAgICwgbV9wYWdl
R3JvdXBVc2VyU2hlZXRDYWNoZVZhbGlkKGZhbHNlKQogICAgICwgbV9oYWRBY3RpdmVMb2FkaW5n
U3R5bGVzaGVldChmYWxzZSkKQEAgLTcwLDggKzY5LDYgQEAgRG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbjo6RG9jdW1lbnRTdAogCiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp+RG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbigpCiB7Ci0gICAgbV9hdXRob3JTdHlsZVNoZWV0cy0+
ZG9jdW1lbnREZXN0cm95ZWQoKTsKLQogICAgIGlmIChtX3BhZ2VVc2VyU2hlZXQpCiAgICAgICAg
IG1fcGFnZVVzZXJTaGVldC0+Y2xlYXJPd25lck5vZGUoKTsKICAgICBpZiAobV9wYWdlR3JvdXBV
c2VyU2hlZXRzKSB7CkBAIC00MDAsMTEgKzM5NywxMSBAQCB2b2lkIERvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb246OmFuYWx5CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFNlZSBpZiB3ZSBh
cmUganVzdCBhZGRpbmcgc3R5bGVzaGVldHMuCi0gICAgdW5zaWduZWQgb2xkU3R5bGVzaGVldENv
dW50ID0gbV9hdXRob3JTdHlsZVNoZWV0cy0+bGVuZ3RoKCk7CisgICAgdW5zaWduZWQgb2xkU3R5
bGVzaGVldENvdW50ID0gbV9hdXRob3JTdHlsZVNoZWV0cy5zaXplKCk7CiAgICAgaWYgKG5ld1N0
eWxlc2hlZXRDb3VudCA8IG9sZFN0eWxlc2hlZXRDb3VudCkKICAgICAgICAgcmV0dXJuOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvbGRTdHlsZXNoZWV0Q291bnQ7ICsraSkgewotICAg
ICAgICBpZiAobV9hdXRob3JTdHlsZVNoZWV0cy0+aXRlbShpKSAhPSBuZXdTdHlsZXNoZWV0c1tp
XSkKKyAgICAgICAgaWYgKG1fYXV0aG9yU3R5bGVTaGVldHNbaV0gIT0gbmV3U3R5bGVzaGVldHNb
aV0pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHJlcXVpcmVzU3R5bGVSZXNvbHZl
clJlc2V0ID0gZmFsc2U7CkBAIC00NDgsNyArNDQ1LDcgQEAgYm9vbCBEb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uOjp1cGRhdAogICAgIGlmICghbV9kb2N1bWVudC0+cmVuZGVyZXIoKSB8fCAh
bV9kb2N1bWVudC0+YXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3R5
bGVTaGVldFZlY3RvciBuZXdTdHlsZXNoZWV0czsKKyAgICBWZWN0b3I8UmVmUHRyPFN0eWxlU2hl
ZXQ+ID4gbmV3U3R5bGVzaGVldHM7CiAgICAgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKG5ld1N0
eWxlc2hlZXRzKTsKIAogICAgIGJvb2wgcmVxdWlyZXNTdHlsZVJlc29sdmVyUmVzZXQ7CkBAIC00
NTgsMTIgKzQ1NSwxMiBAQCBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0
CiAgICAgaWYgKHJlcXVpcmVzU3R5bGVSZXNvbHZlclJlc2V0KQogICAgICAgICBtX2RvY3VtZW50
LT5jbGVhclN0eWxlUmVzb2x2ZXIoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbV9kb2N1bWVudC0+
c3R5bGVSZXNvbHZlcigpLT5hcHBlbmRBdXRob3JTdHlsZXNoZWV0cyhtX2F1dGhvclN0eWxlU2hl
ZXRzLT5sZW5ndGgoKSwgbmV3U3R5bGVzaGVldHMpOworICAgICAgICBtX2RvY3VtZW50LT5zdHls
ZVJlc29sdmVyKCktPmFwcGVuZEF1dGhvclN0eWxlc2hlZXRzKG1fYXV0aG9yU3R5bGVTaGVldHMu
c2l6ZSgpLCBuZXdTdHlsZXNoZWV0cyk7CiAgICAgICAgIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7
CiAgICAgfQotICAgIG1fYXV0aG9yU3R5bGVTaGVldHMtPnN3YXAobmV3U3R5bGVzaGVldHMpOwor
ICAgIG1fYXV0aG9yU3R5bGVTaGVldHMuc3dhcChuZXdTdHlsZXNoZWV0cyk7CiAKLSAgICBtX3Vz
ZXNSZW1Vbml0cyA9IHN0eWxlU2hlZXRzVXNlUmVtVW5pdHMobV9hdXRob3JTdHlsZVNoZWV0cy0+
dmVjdG9yKCkpOworICAgIG1fdXNlc1JlbVVuaXRzID0gc3R5bGVTaGVldHNVc2VSZW1Vbml0cyht
X2F1dGhvclN0eWxlU2hlZXRzKTsKICAgICBtX25lZWRzVXBkYXRlQWN0aXZlU3R5bGVzaGVldHNP
blN0eWxlUmVjYWxjID0gZmFsc2U7CiAKICAgICBtX2RvY3VtZW50LT5ub3RpZnlTZWFtbGVzc0No
aWxkRG9jdW1lbnRzT2ZTdHlsZXNoZWV0VXBkYXRlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDEyOTQy
MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIERvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnQqKTsKICAgICB+RG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbigpOwogCi0gICAgU3R5bGVTaGVldExpc3QqIGF1dGhvclN0eWxlU2hlZXRzKCkgeyBy
ZXR1cm4gbV9hdXRob3JTdHlsZVNoZWV0cy5nZXQoKTsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3R5bGVTaGVldD4gPiYgYXV0aG9yU3R5bGVTaGVldHMoKSB7IHJldHVybiBtX2F1dGhvclN0
eWxlU2hlZXRzOyB9CiAKICAgICBDU1NTdHlsZVNoZWV0KiBwYWdlVXNlclNoZWV0KCk7CiAgICAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+KiBwYWdlR3JvdXBVc2VyU2hlZXRz
KCkgY29uc3Q7CkBAIC0xMDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKIAogICAgIERvY3VtZW50KiBt
X2RvY3VtZW50OwogCi0gICAgUmVmUHRyPFN0eWxlU2hlZXRMaXN0PiBtX2F1dGhvclN0eWxlU2hl
ZXRzOworICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiBtX2F1dGhvclN0eWxlU2hlZXRz
OwogCiAgICAgLy8gVHJhY2sgdGhlIG51bWJlciBvZiBjdXJyZW50bHkgbG9hZGluZyB0b3AtbGV2
ZWwgc3R5bGVzaGVldHMgbmVlZGVkIGZvciByZW5kZXJpbmcuCiAgICAgLy8gU2hlZXRzIGxvYWRl
ZCB1c2luZyB0aGUgQGltcG9ydCBkaXJlY3RpdmUgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGlzIGNv
dW50Lgo=
</data>
<flag name="review"
          id="177572"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>