<?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>78005</bug_id>
          
          <creation_ts>2012-02-07 11:27:47 -0800</creation_ts>
          <short_desc>[Qt] Control the lifetime of TiledBackingStores in WebGraphicsLayer.</short_desc>
          <delta_ts>2012-02-09 06:39:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Jocelyn Turcotte">jturcotte</reporter>
          <assigned_to name="Jocelyn Turcotte">jturcotte</assigned_to>
          <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>551163</commentid>
    <comment_count>0</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-07 11:27:47 -0800</bug_when>
    <thetext>[Qt] Control the lifetime of TiledBackingStores in WebGraphicsLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551177</commentid>
    <comment_count>1</comment_count>
      <attachid>125886</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-07 11:37:31 -0800</bug_when>
    <thetext>Created attachment 125886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551287</commentid>
    <comment_count>2</comment_count>
      <attachid>125886</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-07 13:16:24 -0800</bug_when>
    <thetext>Comment on attachment 125886
Patch

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

&gt; Source/WebKit2/ChangeLog:15
&gt; +        - Remove the unused updateTileBuffersRecursively

Should really be another patch

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:106
&gt; +    if (m_webGraphicsLayerClient) {
&gt; +        purgeBackingStores();
&gt;          m_webGraphicsLayerClient-&gt;releaseLayer(this);
&gt; +    }

I noticed today that going to google.com and then to pol.dk and scrolling sidewards would show old google.com contents below. Do yo know whether this patches fixes that?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:589
&gt; +    // This is the only place we (re)create the main tiled backing store, once we have a remote client and we are ready to send our data to the UI process.

Please split in two lines

&gt; Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.cpp:450
&gt; +    for (HashSet&lt;WebCore::WebGraphicsLayer*&gt;::iterator iter = m_registeredLayers.begin(); iter != end; ++iter)
&gt; +        (*iter)-&gt;purgeBackingStores();

Switch to &apos;it&apos; when you are at it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551471</commentid>
    <comment_count>3</comment_count>
      <attachid>125886</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-07 15:31:21 -0800</bug_when>
    <thetext>Comment on attachment 125886
Patch

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

Please fix/respond to comments from me and Kenneth :)

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:348
&gt; +
&gt; +    m_mainBackingStore.clear();
&gt; +    m_previousBackingStore.clear();
&gt; +

I think a layer can potentially have both regular contents and an image; so this wouldn&apos;t work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552040</commentid>
    <comment_count>4</comment_count>
      <attachid>126061</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-08 04:57:42 -0800</bug_when>
    <thetext>Created attachment 126061
Patch

- extract updateTileBuffersRecursively removal to a different patch
- split comment in two lines
- iter -&gt; it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552042</commentid>
    <comment_count>5</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-08 05:02:42 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I noticed today that going to google.com and then to pol.dk and scrolling sidewards would show old google.com contents below. Do yo know whether this patches fixes that?

From a broad guess I think that this is caused by the m_previousBackingStore that we used to clear as soon as the main backing store had enough content to fill the viewport. Now we don&apos;t clear it anymore (exept when we re-scale and replace it with another one).

(In reply to comment #3)
&gt; I think a layer can potentially have both regular contents and an image; so this wouldn&apos;t work.

I might be missing something, but the code I&apos;ve read around RenderLayerBacking::isDirectlyCompositedImage seems to suggest that we can assume that a layer won&apos;t have both.
So drawsContent() == true would mean that we either have containsPaintedContent() == true OR isDirectlyCompositedImage() == true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552065</commentid>
    <comment_count>6</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-08 06:08:58 -0800</bug_when>
    <thetext>
&gt; I might be missing something, but the code I&apos;ve read around RenderLayerBacking::isDirectlyCompositedImage seems to suggest that we can assume that a layer won&apos;t have both.
&gt; So drawsContent() == true would mean that we either have containsPaintedContent() == true OR isDirectlyCompositedImage() == true.

Right, but in that case drawsContent() would be changed and we&apos;d purge the backing-store anyway... so this is redundant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552074</commentid>
    <comment_count>7</comment_count>
      <attachid>126061</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-08 06:19:54 -0800</bug_when>
    <thetext>Comment on attachment 126061
Patch

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

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:347
&gt; +    m_mainBackingStore.clear();
&gt; +    m_previousBackingStore.clear();

I think we should do this as a result of setDrawsContent(false), rather than in setContentsToImage.
Even though RenderLayerBacking doesn&apos;t allow for layers with both an image and regular content, it does allow, for example, canvas and regular content. So this feels more like it&apos;s based on a current implementation choice, rather than an API contract.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552176</commentid>
    <comment_count>8</comment_count>
      <attachid>126094</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-08 09:00:47 -0800</bug_when>
    <thetext>Created attachment 126094
Patch

I thought that drawsContent() was also true when we had a directly composited image.
- Cleared the backing stores in setDrawsContent(false)
- Moved the early return for if not drawsContent under the image case in updateContentsBuffers
- Removed the check for drawsContent in tiledBackingStoreContentsRect since we won&apos;t have a backing store in that case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552181</commentid>
    <comment_count>9</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-08 09:02:23 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; I thought that drawsContent() was also true when we had a directly composited image.
But it&apos;s not the case, just to clarify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552493</commentid>
    <comment_count>10</comment_count>
      <attachid>126094</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-08 14:29:08 -0800</bug_when>
    <thetext>Comment on attachment 126094
Patch

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

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp:253
&gt;  void WebGraphicsLayer::setDrawsContent(bool b)
&gt;          return;
&gt;      GraphicsLayer::setDrawsContent(b);
&gt;  
&gt; -    if (b)
&gt; -        setNeedsDisplay();
&gt; +    if (!b) {
&gt; +        m_mainBackingStore.clear();
&gt; +        m_previousBackingStore.clear();
&gt; +    }
&gt; +    // The next call to updateContentBuffers will recreate the backing store if needed.
&gt;      notifyChange();
&gt;  }

Looking at this again, this shouldn&apos;t happen here, but rather in syncCompositingStateForThisLayer. 
That&apos;s because JS might change the drawsContent state of the layer back and forth and we don&apos;t want to be too eager about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553025</commentid>
    <comment_count>11</comment_count>
      <attachid>126274</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-09 03:37:45 -0800</bug_when>
    <thetext>Created attachment 126274
Patch

Sounds right, moved it to updateContentsBuffers, it fits better there too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553119</commentid>
    <comment_count>12</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-09 06:39:20 -0800</bug_when>
    <thetext>Committed r107236: &lt;http://trac.webkit.org/changeset/107236&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125886</attachid>
            <date>2012-02-07 11:37:31 -0800</date>
            <delta_ts>2012-02-08 04:57:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78005-20120207203253.patch</filename>
            <type>text/plain</type>
            <size>13606</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDE0NzMxNGY4ZWIyYTQ1
MGNiZmI4OGNlN2FhNmFkZTRmMDJmMDVlZC4uM2Y0ZjE3MGM1Zjc4ZTUyODM2MTAyMzE2ZGQxM2Vi
NzQ0NTQ2MGFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDEyLTAyLTA3ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0
XSBDb250cm9sIHRoZSBsaWZldGltZSBvZiBUaWxlZEJhY2tpbmdTdG9yZXMgaW4gV2ViR3JhcGhp
Y3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc4MDA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBtYWtlcyBzdXJlIHRoYXQgbm8gZW1wdHkgdGlsZXMgYXJlIGdlbmVyYXRlZCBmb3IgbGF5
ZXJzIHdpdGhvdXQgY29udGVudHMgYW5kIHRoYXQKKyAgICAgICAgbm8gaW50ZXJhY3Rpb24gaXMg
bWFkZSB3aXRoIHRoZSBUaWxlZEJhY2tpbmdTdG9yZSB1bnRpbCB3ZSBnb3QgYSBXZWJHcmFwaGlj
c0xheWVyQ2xpZW50LgorCisgICAgICAgIC0gQ3JlYXRlIHRoZSBtYWluIFRpbGVkQmFja2luZ1N0
b3JlIG9ubHkgd2hlbiB0aGUgbGF5ZXIgaGFzIGRyYXdzQ29udGVudCBhbmQgaGFzIG5vCisgICAg
ICAgICAgZGlyZWN0bHkgY29tcG9zaXRlZCBpbWFnZQorICAgICAgICAtIFJlbW92ZWQgcmVjcmVh
dGVCYWNraW5nU3RvcmVJZk5lZWRlZCBhbmQgZG8gdGhlIChyZSljcmVhdGlvbiBvZiB0aGUgYmFj
a2luZyBzdG9yZXMKKyAgICAgICAgICBpbiB1cGRhdGVDb250ZW50QnVmZmVycworICAgICAgICAt
IFJlbW92ZSB0aGUgdW51c2VkIHVwZGF0ZVRpbGVCdWZmZXJzUmVjdXJzaXZlbHkKKyAgICAgICAg
LSBDYWxsIHB1cmdlQmFja2luZ1N0b3JlcyBvbiByZWdpc3RlcmVkIGxheWVycyBpbnN0ZWFkIG9m
IHBhc3NpbmcgaXQgZG93biB0aGUgbGF5ZXIgdHJlZQorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdyYXBoaWNzTGF5ZXI6OldlYkdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllcjo6fldlYkdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdyYXBoaWNzTGF5ZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c2V0VmlzaWJsZUNvbnRlbnRS
ZWN0VHJhamVjdG9yeVZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVy
Ojp1cGRhdGVDb250ZW50QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xh
eWVyOjpwdXJnZUJhY2tpbmdTdG9yZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NM
YXllcjo6c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
cmFwaGljc0xheWVyOjpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChX
ZWJHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJU
cmVlSG9zdFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFF0OjpmbHVzaFBl
bmRpbmdMYXllckNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlSG9zdFF0OjpwdXJnZUJhY2tpbmdTdG9yZXMpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaDoKKyAgICAgICAgKExheWVyVHJlZUhvc3RR
dCk6CisKKzIwMTItMDItMDcgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5v
a2lhLmNvbT4KKwogICAgICAgICBbUXRdIFJlZ2lzdGVyIGluZGl2aWR1YWwgV2ViR3JhcGhpY3NM
YXllcnMgdG8gTGF5ZXJUcmVlSG9zdCBpbnN0ZWFkIG9mIGhhbmRsaW5nIHRoZSB0cmVlIGFzIGEg
d2hvbGUuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
Nzk3NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcAppbmRleCBjNzgyOWQ5OWRlNTFjYjBiZDU5
ZmMxZTIxOTliNjAxNzUzM2FjMzYyLi5kNmU1ODBhMjU1NzE4YWU4YzcwNTNhZTNhZGI1ZGIyZDJj
YzNiZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKQEAgLTg4LDExICs4OCw5IEBAIFdl
YkdyYXBoaWNzTGF5ZXI6OldlYkdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xp
ZW50KQogICAgICwgbV9pblVwZGF0ZU1vZGUoZmFsc2UpCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCiAgICAgLCBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQoMCkKLSAgICAsIG1fbWFpbkJh
Y2tpbmdTdG9yZShhZG9wdFB0cihuZXcgVGlsZWRCYWNraW5nU3RvcmUodGhpcywgVGlsZWRCYWNr
aW5nU3RvcmVSZW1vdGVUaWxlQmFja2VuZDo6Y3JlYXRlKHRoaXMpKSkpCiAgICAgLCBtX2NvbnRl
bnRzU2NhbGUoMS5mKQogI2VuZGlmCiB7Ci0gICAgbV9tYWluQmFja2luZ1N0b3JlLT5zZXRDb250
ZW50c1NjYWxlKDEuMCk7CiAgICAgc3RhdGljIFdlYkxheWVySUQgbmV4dExheWVySUQgPSAxOwog
ICAgIG1fbGF5ZXJJbmZvLmlkID0gbmV4dExheWVySUQrKzsKICAgICBsYXllckJ5SURNYXAoKS5h
ZGQoaWQoKSwgdGhpcyk7CkBAIC0xMDIsMTEgKzEwMCwxMCBAQCBXZWJHcmFwaGljc0xheWVyOjp+
V2ViR3JhcGhpY3NMYXllcigpCiB7CiAgICAgbGF5ZXJCeUlETWFwKCkucmVtb3ZlKGlkKCkpOwog
Ci0gICAgLy8gVGhpcyB3b3VsZCB0ZWxsIHRoZSBVSSBwcm9jZXNzIHRvIHJlbGVhc2UgdGhlIGJh
Y2tpbmcgc3RvcmUuCi0gICAgc2V0Q29udGVudHNUb0ltYWdlKDApOwotCi0gICAgaWYgKG1fd2Vi
R3JhcGhpY3NMYXllckNsaWVudCkKKyAgICBpZiAobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KSB7
CisgICAgICAgIHB1cmdlQmFja2luZ1N0b3JlcygpOwogICAgICAgICBtX3dlYkdyYXBoaWNzTGF5
ZXJDbGllbnQtPnJlbGVhc2VMYXllcih0aGlzKTsKKyAgICB9CiB9CiAKIGJvb2wgV2ViR3JhcGhp
Y3NMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRy
ZW4pCkBAIC0zNDUsNiArMzQyLDEwIEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q29udGVu
dHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UgPT0gbV9pbWFnZSkKICAg
ICAgICAgcmV0dXJuOworCisgICAgbV9tYWluQmFja2luZ1N0b3JlLmNsZWFyKCk7CisgICAgbV9w
cmV2aW91c0JhY2tpbmdTdG9yZS5jbGVhcigpOworCiAgICAgaW50NjRfdCBuZXdJRCA9IDA7CiAg
ICAgaWYgKG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCkgewogICAgICAgICAvLyBXZSBhZG9wdCBm
aXJzdCwgaW4gY2FzZSB0aGlzIGlzIHRoZSBzYW1lIGZyYW1lIC0gdGhhdCB3YXkgd2UgYXZvaWQg
ZGVzdHJveWluZyBhbmQgcmVjcmVhdGluZyB0aGUgaW1hZ2UuCkBAIC00MDMsOCArNDA0LDggQEAg
dm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXROZWVkc0Rpc3BsYXkoKQogCiB2b2lkIFdlYkdyYXBo
aWNzTGF5ZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
Ci0gICAgcmVjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwotICAgIG1fbWFpbkJhY2tpbmdT
dG9yZS0+aW52YWxpZGF0ZShJbnRSZWN0KHJlY3QpKTsKKyAgICBpZiAobV9tYWluQmFja2luZ1N0
b3JlKQorICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPmludmFsaWRhdGUoSW50UmVjdChyZWN0
KSk7CiAgICAgbm90aWZ5Q2hhbmdlKCk7CiB9CiAKQEAgLTQ2MiwxMCArNDYzLDYgQEAgdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7ICsraSkKICAgICAg
ICAgbV9sYXllckluZm8uY2hpbGRyZW4uYXBwZW5kKHRvV2ViTGF5ZXJJRChjaGlsZHJlbigpW2ld
KSk7CiAKLSAgICBBU1NFUlQobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KTsKLSAgICBpZiAobV9s
YXllckluZm8uaW1hZ2VJc1VwZGF0ZWQgJiYgbV9pbWFnZSAmJiAhbV9sYXllckluZm8uaW1hZ2VC
YWNraW5nU3RvcmVJRCkKLSAgICAgICAgbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCA9
IG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+YWRvcHRJbWFnZUJhY2tpbmdTdG9yZShtX2ltYWdl
LmdldCgpKTsKLQogICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+ZGlkU3luY0NvbXBvc2l0
aW5nU3RhdGVGb3JMYXllcihtX2xheWVySW5mbyk7CiAgICAgbV9tb2RpZmllZCA9IGZhbHNlOwog
ICAgIG1fbGF5ZXJJbmZvLmltYWdlSXNVcGRhdGVkID0gZmFsc2U7CkBAIC00ODgsNyArNDg1LDgg
QEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRSb290TGF5ZXIoYm9vbCBpc1Jvb3QpCiAKIHZv
aWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rv
cihjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQogewotICAgIG1fbWFpbkJhY2tp
bmdTdG9yZS0+c2V0VmlzaWJsZVJlY3RUcmFqZWN0b3J5VmVjdG9yKHRyYWplY3RvcnlWZWN0b3Ip
OworICAgIGlmIChtX21haW5CYWNraW5nU3RvcmUpCisgICAgICAgIG1fbWFpbkJhY2tpbmdTdG9y
ZS0+c2V0VmlzaWJsZVJlY3RUcmFqZWN0b3J5VmVjdG9yKHRyYWplY3RvcnlWZWN0b3IpOwogfQog
CiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKGNv
bnN0IEludFJlY3QmIHBhZ2VWaXNpYmxlUmVjdCwgZmxvYXQgc2NhbGUpCkBAIC01NzMsNjggKzU3
MSwzOSBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnJlbW92ZVRpbGUoaW50IHRpbGVJRCkKICAg
ICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPnJlbW92ZVRpbGUoaWQoKSwgdGlsZUlEKTsKIH0K
IAotdm9pZCBXZWJHcmFwaGljc0xheWVyOjp1cGRhdGVUaWxlQnVmZmVyc1JlY3Vyc2l2ZWx5KCkK
LXsKLSAgICBtX21haW5CYWNraW5nU3RvcmUtPnVwZGF0ZVRpbGVCdWZmZXJzKCk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFdl
YkdyYXBoaWNzTGF5ZXIqIGxheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPmNoaWxkcmVu
KClbaV0pOwotICAgICAgICBsYXllci0+dXBkYXRlVGlsZUJ1ZmZlcnNSZWN1cnNpdmVseSgpOwot
ICAgIH0KLQotICAgIGlmIChXZWJHcmFwaGljc0xheWVyKiBtYXNrID0gdG9XZWJHcmFwaGljc0xh
eWVyKG1hc2tMYXllcigpKSkKLSAgICAgICAgbWFzay0+dXBkYXRlVGlsZUJ1ZmZlcnNSZWN1cnNp
dmVseSgpOwotfQotCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJz
KCkKIHsKLSAgICAvLyBCYWNraW5nLXN0b3JlcyBmb3IgZGlyZWN0bHkgY29tcG9zaXRlZCBpbWFn
ZXMgaXMgaGFuZGxlZCBpbiBMYXllclRyZWVIb3N0LgotICAgIGlmIChtX2ltYWdlKQorICAgIGlm
ICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghZHJhd3NDb250
ZW50KCkpCisgICAgLy8gVGhlIHJlbW90ZSBpbWFnZSBtaWdodCBoYXZlIGJlZW4gcmVsZWFzZWQg
YnkgcHVyZ2VCYWNraW5nU3RvcmVzLgorICAgIGlmIChtX2ltYWdlKSB7CisgICAgICAgIGlmICgh
bV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCkgeworICAgICAgICAgICAgbV9sYXllcklu
Zm8uaW1hZ2VCYWNraW5nU3RvcmVJRCA9IG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+YWRvcHRJ
bWFnZUJhY2tpbmdTdG9yZShtX2ltYWdlLmdldCgpKTsKKyAgICAgICAgICAgIG1fbGF5ZXJJbmZv
LmltYWdlSXNVcGRhdGVkID0gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47CisgICAg
fQogCiAgICAgbV9pblVwZGF0ZU1vZGUgPSB0cnVlOworICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkg
cGxhY2Ugd2UgKHJlKWNyZWF0ZSB0aGUgbWFpbiB0aWxlZCBiYWNraW5nIHN0b3JlLCBvbmNlIHdl
IGhhdmUgYSByZW1vdGUgY2xpZW50IGFuZCB3ZSBhcmUgcmVhZHkgdG8gc2VuZCBvdXIgZGF0YSB0
byB0aGUgVUkgcHJvY2Vzcy4KKyAgICBpZiAoIW1fbWFpbkJhY2tpbmdTdG9yZSkgeworICAgICAg
ICBtX21haW5CYWNraW5nU3RvcmUgPSBhZG9wdFB0cihuZXcgVGlsZWRCYWNraW5nU3RvcmUodGhp
cywgVGlsZWRCYWNraW5nU3RvcmVSZW1vdGVUaWxlQmFja2VuZDo6Y3JlYXRlKHRoaXMpKSk7Cisg
ICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2Nh
bGUpOworICAgIH0KICAgICBtX21haW5CYWNraW5nU3RvcmUtPnVwZGF0ZVRpbGVCdWZmZXJzKCk7
CiAgICAgbV9pblVwZGF0ZU1vZGUgPSBmYWxzZTsKIH0KIAogdm9pZCBXZWJHcmFwaGljc0xheWVy
OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hp
bGRyZW4oKS5zaXplKCk7ICsraSkgewotICAgICAgICBXZWJHcmFwaGljc0xheWVyKiBsYXllciA9
IHRvV2ViR3JhcGhpY3NMYXllcih0aGlzLT5jaGlsZHJlbigpW2ldKTsKLSAgICAgICAgbGF5ZXIt
PnB1cmdlQmFja2luZ1N0b3JlcygpOwotICAgIH0KLQotICAgIGlmIChXZWJHcmFwaGljc0xheWVy
KiBtYXNrID0gdG9XZWJHcmFwaGljc0xheWVyKG1hc2tMYXllcigpKSkKLSAgICAgICAgbWFzay0+
cHVyZ2VCYWNraW5nU3RvcmVzKCk7CisgICAgbV9tYWluQmFja2luZ1N0b3JlLmNsZWFyKCk7Cisg
ICAgbV9wcmV2aW91c0JhY2tpbmdTdG9yZS5jbGVhcigpOwogCi0gICAgaWYgKG1fbWFpbkJhY2tp
bmdTdG9yZSkKLSAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLmNsZWFyKCk7Ci0KLSAgICBpZiAo
IW1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+cmVsZWFzZUltYWdlQmFja2luZ1N0b3JlKG1fbGF5
ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpOwotICAgIG1fbGF5ZXJJbmZvLmltYWdlQmFja2lu
Z1N0b3JlSUQgPSAwOwotfQotCi12b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnJlY3JlYXRlQmFja2lu
Z1N0b3JlSWZOZWVkZWQoKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4o
KS5zaXplKCk7ICsraSkgewotICAgICAgICBXZWJHcmFwaGljc0xheWVyKiBsYXllciA9IHRvV2Vi
R3JhcGhpY3NMYXllcih0aGlzLT5jaGlsZHJlbigpW2ldKTsKLSAgICAgICAgbGF5ZXItPnJlY3Jl
YXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKLSAgICB9Ci0gICAgaWYgKFdlYkdyYXBoaWNzTGF5
ZXIqIG1hc2sgPSB0b1dlYkdyYXBoaWNzTGF5ZXIobWFza0xheWVyKCkpKQotICAgICAgICBtYXNr
LT5yZWNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7Ci0KLSAgICBpZiAoIW1fbWFpbkJhY2tp
bmdTdG9yZSkgewotICAgICAgICBtX21haW5CYWNraW5nU3RvcmUgPSBhZG9wdFB0cihuZXcgVGls
ZWRCYWNraW5nU3RvcmUodGhpcywgVGlsZWRCYWNraW5nU3RvcmVSZW1vdGVUaWxlQmFja2VuZDo6
Y3JlYXRlKHRoaXMpKSk7Ci0gICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHNT
Y2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgIGlmIChtX2xheWVySW5mby5pbWFnZUJhY2tpbmdT
dG9yZUlEKSB7CisgICAgICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+cmVsZWFzZUltYWdl
QmFja2luZ1N0b3JlKG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpOworICAgICAgICBt
X2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEID0gMDsKICAgICB9Ci0KLSAgICBpZiAobV9p
bWFnZSkKLSAgICAgICAgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKTsKIH0KIAogdm9pZCBXZWJH
cmFwaGljc0xheWVyOjpzZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KFdlYktpdDo6V2ViR3JhcGhp
Y3NMYXllckNsaWVudCogY2xpZW50KQpAQCAtNjUxLDkgKzYyMCwxMSBAQCB2b2lkIFdlYkdyYXBo
aWNzTGF5ZXI6OnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQoV2ViS2l0OjpXZWJHcmFwaGljc0xh
eWVyQ2xpZW50KgogICAgICAgICBsYXllci0+c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChjbGll
bnQpOwogICAgIH0KIAotICAgIC8vIEhhdmUgdG8gZm9yY2UgZGV0YWNoIGZyb20gcmVtb3RlIGxh
eWVyIGhlcmUgaWYgbGF5ZXIgdGlsZSBjbGllbnQgY2hhbmdlcy4KLSAgICBpZiAobV93ZWJHcmFw
aGljc0xheWVyQ2xpZW50KQorICAgIC8vIFdlIGhhdmUgdG8gcmVsZWFzZSByZXNvdXJjZXMgb24g
dGhlIFVJIHByb2Nlc3MgaGVyZSBpZiB0aGUgcmVtb3RlIGNsaWVudCBoYXMgY2hhbmdlZCBvciBp
cyByZW1vdmVkLgorICAgIGlmIChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpIHsKKyAgICAgICAg
cHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+
cmVsZWFzZUxheWVyKHRoaXMpOworICAgIH0KICAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQg
PSBjbGllbnQ7CiAgICAgaWYgKGNsaWVudCkKICAgICAgICAgY2xpZW50LT5yZWdpc3RlckxheWVy
KHRoaXMpOwpAQCAtNjcwLDcgKzY0MSw4IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6Y29tcHV0
ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0Q2hpbGRy
ZW5UcmFuc2Zvcm0oY2hpbGRyZW5UcmFuc2Zvcm0oKSk7CiAgICAgbV9sYXllclRyYW5zZm9ybS5j
b21iaW5lVHJhbnNmb3JtcyhwYXJlbnQoKSA/IHRvV2ViR3JhcGhpY3NMYXllcihwYXJlbnQoKSkt
Pm1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWRGb3JDaGlsZHJlbigpIDogVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSk7CiAgICAgLy8gVGhlIGNvbWJpbmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4g
dGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVjdC4KLSAgICBtX21haW5CYWNraW5nU3RvcmUtPmFk
anVzdFZpc2libGVSZWN0KCk7CisgICAgaWYgKG1fbWFpbkJhY2tpbmdTdG9yZSkKKyAgICAgICAg
bV9tYWluQmFja2luZ1N0b3JlLT5hZGp1c3RWaXNpYmxlUmVjdCgpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3Jh
cGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHcmFwaGljc0xheWVyLmgKaW5kZXggYjdiYzgzN2I2ZWUyYjQ2ODU4MzdiYjU5NjMwOTI4Yjkw
ODY2N2NjNi4uNTQwMGM3NjhlMzNkMjUyZjFiNWQyMjRmNGIzM2JjNjRhODgwZjYzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGlj
c0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHcmFwaGljc0xheWVyLmgKQEAgLTEzOCwxMCArMTM4LDggQEAgcHVibGljOgogICAgIHZvaWQg
c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChXZWJLaXQ6OldlYkdyYXBoaWNzTGF5ZXJDbGllbnQq
KTsKIAogICAgIGJvb2wgaXNSZWFkeUZvclRpbGVCdWZmZXJTd2FwKCkgY29uc3Q7Ci0gICAgdm9p
ZCB1cGRhdGVUaWxlQnVmZmVyc1JlY3Vyc2l2ZWx5KCk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50
QnVmZmVycygpOwogICAgIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0gICAgdm9pZCByZWNy
ZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RR
dC5jcHAKaW5kZXggMTczYWM1OTg0ZWQ5MDdiZmE4ZGRkZWZkYjYyMjliY2E5YjllNDgwNy4uMzJm
YzhlOWUwNmQwZjI5MzQ3ODAxZTdmM2JhYzFmYTljNGViNDA5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAK
QEAgLTc0LDcgKzc0LDYgQEAgTGF5ZXJUcmVlSG9zdFF0OjpMYXllclRyZWVIb3N0UXQoV2ViUGFn
ZSogd2ViUGFnZSkKICAgICAsIG1fc2hvdWxkU3luY1Jvb3RMYXllcih0cnVlKQogICAgICwgbV9s
YXllckZsdXNoVGltZXIodGhpcywgJkxheWVyVHJlZUhvc3RRdDo6bGF5ZXJGbHVzaFRpbWVyRmly
ZWQpCiAgICAgLCBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCh0cnVlKQotICAgICwgbV9z
aG91bGRSZWNyZWF0ZUJhY2tpbmdTdG9yZShmYWxzZSkKIHsKICAgICAvLyBDcmVhdGUgYSByb290
IGxheWVyLgogICAgIG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMpOwpA
QCAtMjIxLDggKzIyMCw2IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpzZXRQYWdlT3ZlcmxheU5l
ZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogCiBib29sIExheWVyVHJl
ZUhvc3RRdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIHsKLSAgICByZWNyZWF0ZUJhY2tp
bmdTdG9yZUlmTmVlZGVkKCk7Ci0KICAgICBib29sIGRpZFN5bmMgPSBtX3dlYlBhZ2UtPmNvcmVQ
YWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnN5bmNDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5n
U3ViZnJhbWVzKCk7CiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zeW5jQ29tcG9z
aXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKICAgICBpZiAobV9wYWdlT3ZlcmxheUxheWVy
KQpAQCAtNDExLDYgKzQwOCw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFF0Ojp1cGRhdGVUaWxlKFdl
YkxheWVySUQgbGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgVXBkYXRlSW5mCiB7CiAgICAgbV93
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVIb3N0UHJveHk6OlVwZGF0ZVRpbGVGb3JM
YXllcihsYXllcklELCB0aWxlSUQsIHVwZGF0ZUluZm8pKTsKIH0KKwogdm9pZCBMYXllclRyZWVI
b3N0UXQ6OnJlbW92ZVRpbGUoV2ViTGF5ZXJJRCBsYXllcklELCBpbnQgdGlsZUlEKQogewogICAg
IG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlSG9zdFByb3h5OjpSZW1vdmVUaWxl
Rm9yTGF5ZXIobGF5ZXJJRCwgdGlsZUlEKSk7CkBAIC00NDcsMjIgKzQ0NSwxMiBAQCBib29sIExh
eWVyVHJlZUhvc3RRdDo6bGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QKIAogdm9p
ZCBMYXllclRyZWVIb3N0UXQ6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7Ci0gICAgbV9zaG91bGRS
ZWNyZWF0ZUJhY2tpbmdTdG9yZSA9IHRydWU7Ci0gICAgV2ViR3JhcGhpY3NMYXllciogd2ViUm9v
dExheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKG1fcm9vdExheWVyLmdldCgpKTsKLSAgICB3ZWJS
b290TGF5ZXItPnB1cmdlQmFja2luZ1N0b3JlcygpOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7
CisgICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3Ig
aXRlciA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQor
ICAgICAgICAoKml0ZXIpLT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsKIAogICAgIEFTU0VSVCghbV9k
aXJlY3RseUNvbXBvc2l0ZWRJbWFnZVJlZkNvdW50cy5zaXplKCkpOwogfQotCi12b2lkIExheWVy
VHJlZUhvc3RRdDo6cmVjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpCi17Ci0gICAgaWYgKCFt
X3Nob3VsZFJlY3JlYXRlQmFja2luZ1N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3No
b3VsZFJlY3JlYXRlQmFja2luZ1N0b3JlID0gZmFsc2U7Ci0gICAgV2ViR3JhcGhpY3NMYXllciog
d2ViUm9vdExheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKG1fcm9vdExheWVyLmdldCgpKTsKLSAg
ICB3ZWJSb290TGF5ZXItPnJlY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKLX0KICNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaAppbmRleCA2ZjQzYzBmNWFjNjIx
NzRmMmY3NTM5YmMwZDYyZjczODUyOTAzYTRiLi41OTYwNTljNDUyMzkwZDRmNWMxYzdiMjdjYzJj
NDdmZGU1MTBhNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oCkBAIC05Nyw3ICs5Nyw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpOwogICAgIHZvaWQgcGVyZm9ybVNjaGVk
dWxlZExheWVyRmx1c2goKTsKICAgICB2b2lkIHNlbmRMYXllcnNUb1VJKCk7Ci0gICAgdm9pZCBy
ZWNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7CiAKICAgICBPd25QdHI8V2ViQ29yZTo6R3Jh
cGhpY3NMYXllcj4gbV9yb290TGF5ZXI7CiAKQEAgLTEyNCw3ICsxMjMsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgbGF5ZXJGbHVzaFRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8TGF5ZXJUcmVlSG9z
dFF0PiopOwogICAgIFdlYkNvcmU6OlRpbWVyPExheWVyVHJlZUhvc3RRdD4gbV9sYXllckZsdXNo
VGltZXI7CiAgICAgYm9vbCBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZDsKLSAgICBib29s
IG1fc2hvdWxkUmVjcmVhdGVCYWNraW5nU3RvcmU7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126061</attachid>
            <date>2012-02-08 04:57:42 -0800</date>
            <delta_ts>2012-02-08 09:00:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78005-20120208135301.patch</filename>
            <type>text/plain</type>
            <size>12902</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzk0Yjk5MmY1MDM5ODBi
NWU3MTAzODMxZTg4ZDMyNjNhZWU3MGNhZi4uZjhjODFkNjMxMmU5ZGYxMWVlYjc4YmMwODVmZTVk
MzEwNjdiY2RkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTAyLTA3ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0
XSBDb250cm9sIHRoZSBsaWZldGltZSBvZiBUaWxlZEJhY2tpbmdTdG9yZXMgaW4gV2ViR3JhcGhp
Y3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc4MDA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBtYWtlcyBzdXJlIHRoYXQgbm8gZW1wdHkgdGlsZXMgYXJlIGdlbmVyYXRlZCBmb3IgbGF5
ZXJzIHdpdGhvdXQgY29udGVudHMgYW5kIHRoYXQKKyAgICAgICAgbm8gaW50ZXJhY3Rpb24gaXMg
bWFkZSB3aXRoIHRoZSBUaWxlZEJhY2tpbmdTdG9yZSB1bnRpbCB3ZSBnb3QgYSBXZWJHcmFwaGlj
c0xheWVyQ2xpZW50LgorCisgICAgICAgIC0gQ3JlYXRlIHRoZSBtYWluIFRpbGVkQmFja2luZ1N0
b3JlIG9ubHkgd2hlbiB0aGUgbGF5ZXIgaGFzIGRyYXdzQ29udGVudCBhbmQgaGFzIG5vCisgICAg
ICAgICAgZGlyZWN0bHkgY29tcG9zaXRlZCBpbWFnZQorICAgICAgICAtIFJlbW92ZWQgcmVjcmVh
dGVCYWNraW5nU3RvcmVJZk5lZWRlZCBhbmQgZG8gdGhlIChyZSljcmVhdGlvbiBvZiB0aGUgYmFj
a2luZyBzdG9yZXMKKyAgICAgICAgICBpbiB1cGRhdGVDb250ZW50QnVmZmVycworICAgICAgICAt
IENhbGwgcHVyZ2VCYWNraW5nU3RvcmVzIG9uIHJlZ2lzdGVyZWQgbGF5ZXJzIGluc3RlYWQgb2Yg
cGFzc2luZyBpdCBkb3duIHRoZSBsYXllciB0cmVlCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllcjo6V2ViR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
cmFwaGljc0xheWVyOjp+V2ViR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
cmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdyYXBoaWNzTGF5ZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJl
Y3RUcmFqZWN0b3J5VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6
OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5
ZXI6OnB1cmdlQmFja2luZ1N0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xh
eWVyOjpzZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdy
YXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdl
YkdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRy
ZWVIb3N0UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UXQ6OmZsdXNoUGVu
ZGluZ0xheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVIb3N0UXQ6OnB1cmdlQmFja2luZ1N0b3Jlcyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oOgorICAgICAgICAoTGF5ZXJUcmVlSG9zdFF0
KToKKwogMjAxMi0wMi0wOCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9r
aWEuY29tPgogCiAgICAgICAgIFtRdF0gUmVnaXN0ZXIgaW5kaXZpZHVhbCBXZWJHcmFwaGljc0xh
eWVycyB0byBMYXllclRyZWVIb3N0IGluc3RlYWQgb2YgaGFuZGxpbmcgdGhlIHRyZWUgYXMgYSB3
aG9sZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGQwNDE1YTY2ZmRmMzg1YjUwZTE1
NDkyYjg4MmE3MTU2MTc3Mjc0MTMuLjBkMGVlODQ1MmQxMjVjMWExOWQ2ZTY4ZWQxMmYxZmU1MjFh
Mjk3NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcApAQCAtODgsMTEgKzg4LDkgQEAgV2Vi
R3JhcGhpY3NMYXllcjo6V2ViR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGll
bnQpCiAgICAgLCBtX2luVXBkYXRlTW9kZShmYWxzZSkKICNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKICAgICAsIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCgwKQotICAgICwgbV9tYWluQmFj
a2luZ1N0b3JlKGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9yZSh0aGlzLCBUaWxlZEJhY2tp
bmdTdG9yZVJlbW90ZVRpbGVCYWNrZW5kOjpjcmVhdGUodGhpcykpKSkKICAgICAsIG1fY29udGVu
dHNTY2FsZSgxLmYpCiAjZW5kaWYKIHsKLSAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldENvbnRl
bnRzU2NhbGUoMS4wKTsKICAgICBzdGF0aWMgV2ViTGF5ZXJJRCBuZXh0TGF5ZXJJRCA9IDE7CiAg
ICAgbV9sYXllckluZm8uaWQgPSBuZXh0TGF5ZXJJRCsrOwogICAgIGxheWVyQnlJRE1hcCgpLmFk
ZChpZCgpLCB0aGlzKTsKQEAgLTEwMiwxMSArMTAwLDEwIEBAIFdlYkdyYXBoaWNzTGF5ZXI6On5X
ZWJHcmFwaGljc0xheWVyKCkKIHsKICAgICBsYXllckJ5SURNYXAoKS5yZW1vdmUoaWQoKSk7CiAK
LSAgICAvLyBUaGlzIHdvdWxkIHRlbGwgdGhlIFVJIHByb2Nlc3MgdG8gcmVsZWFzZSB0aGUgYmFj
a2luZyBzdG9yZS4KLSAgICBzZXRDb250ZW50c1RvSW1hZ2UoMCk7Ci0KLSAgICBpZiAobV93ZWJH
cmFwaGljc0xheWVyQ2xpZW50KQorICAgIGlmIChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpIHsK
KyAgICAgICAgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgICAgIG1fd2ViR3JhcGhpY3NMYXll
ckNsaWVudC0+ZGV0YWNoTGF5ZXIodGhpcyk7CisgICAgfQogfQogCiBib29sIFdlYkdyYXBoaWNz
TGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkcmVu
KQpAQCAtMzQ1LDYgKzM0MiwxMCBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRz
VG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdlID09IG1faW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKKworICAgIG1fbWFpbkJhY2tpbmdTdG9yZS5jbGVhcigpOworICAgIG1fcHJl
dmlvdXNCYWNraW5nU3RvcmUuY2xlYXIoKTsKKwogICAgIGludDY0X3QgbmV3SUQgPSAwOwogICAg
IGlmIChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpIHsKICAgICAgICAgLy8gV2UgYWRvcHQgZmly
c3QsIGluIGNhc2UgdGhpcyBpcyB0aGUgc2FtZSBmcmFtZSAtIHRoYXQgd2F5IHdlIGF2b2lkIGRl
c3Ryb3lpbmcgYW5kIHJlY3JlYXRpbmcgdGhlIGltYWdlLgpAQCAtNDAzLDggKzQwNCw4IEBAIHZv
aWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0TmVlZHNEaXNwbGF5KCkKIAogdm9pZCBXZWJHcmFwaGlj
c0xheWVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewot
ICAgIHJlY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKLSAgICBtX21haW5CYWNraW5nU3Rv
cmUtPmludmFsaWRhdGUoSW50UmVjdChyZWN0KSk7CisgICAgaWYgKG1fbWFpbkJhY2tpbmdTdG9y
ZSkKKyAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5pbnZhbGlkYXRlKEludFJlY3QocmVjdCkp
OwogICAgIG5vdGlmeUNoYW5nZSgpOwogfQogCkBAIC00NjIsMTAgKzQ2Myw2IEBAIHZvaWQgV2Vi
R3JhcGhpY3NMYXllcjo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCiAgICAgICAg
IG1fbGF5ZXJJbmZvLmNoaWxkcmVuLmFwcGVuZCh0b1dlYkxheWVySUQoY2hpbGRyZW4oKVtpXSkp
OwogCi0gICAgQVNTRVJUKG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7Ci0gICAgaWYgKG1fbGF5
ZXJJbmZvLmltYWdlSXNVcGRhdGVkICYmIG1faW1hZ2UgJiYgIW1fbGF5ZXJJbmZvLmltYWdlQmFj
a2luZ1N0b3JlSUQpCi0gICAgICAgIG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQgPSBt
X3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPmFkb3B0SW1hZ2VCYWNraW5nU3RvcmUobV9pbWFnZS5n
ZXQoKSk7Ci0KICAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPmRpZFN5bmNDb21wb3NpdGlu
Z1N0YXRlRm9yTGF5ZXIobV9sYXllckluZm8pOwogICAgIG1fbW9kaWZpZWQgPSBmYWxzZTsKICAg
ICBtX2xheWVySW5mby5pbWFnZUlzVXBkYXRlZCA9IGZhbHNlOwpAQCAtNDg4LDcgKzQ4NSw4IEBA
IHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0Um9vdExheWVyKGJvb2wgaXNSb290KQogCiB2b2lk
IFdlYkdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3Io
Y29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKIHsKLSAgICBtX21haW5CYWNraW5n
U3RvcmUtPnNldFZpc2libGVSZWN0VHJhamVjdG9yeVZlY3Rvcih0cmFqZWN0b3J5VmVjdG9yKTsK
KyAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlKQorICAgICAgICBtX21haW5CYWNraW5nU3RvcmUt
PnNldFZpc2libGVSZWN0VHJhamVjdG9yeVZlY3Rvcih0cmFqZWN0b3J5VmVjdG9yKTsKIH0KIAog
dm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShjb25z
dCBJbnRSZWN0JiBwYWdlVmlzaWJsZVJlY3QsIGZsb2F0IHNjYWxlKQpAQCAtNTc1LDU0ICs1NzMs
MzggQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKGludCB0aWxlSUQpCiAKIHZv
aWQgV2ViR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogewotICAgIC8vIEJh
Y2tpbmctc3RvcmVzIGZvciBkaXJlY3RseSBjb21wb3NpdGVkIGltYWdlcyBpcyBoYW5kbGVkIGlu
IExheWVyVHJlZUhvc3QuCi0gICAgaWYgKG1faW1hZ2UpCisgICAgaWYgKCFkcmF3c0NvbnRlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKKyAgICAvLyBU
aGUgcmVtb3RlIGltYWdlIG1pZ2h0IGhhdmUgYmVlbiByZWxlYXNlZCBieSBwdXJnZUJhY2tpbmdT
dG9yZXMuCisgICAgaWYgKG1faW1hZ2UpIHsKKyAgICAgICAgaWYgKCFtX2xheWVySW5mby5pbWFn
ZUJhY2tpbmdTdG9yZUlEKSB7CisgICAgICAgICAgICBtX2xheWVySW5mby5pbWFnZUJhY2tpbmdT
dG9yZUlEID0gbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5hZG9wdEltYWdlQmFja2luZ1N0b3Jl
KG1faW1hZ2UuZ2V0KCkpOworICAgICAgICAgICAgbV9sYXllckluZm8uaW1hZ2VJc1VwZGF0ZWQg
PSB0cnVlOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX2luVXBk
YXRlTW9kZSA9IHRydWU7CisgICAgLy8gVGhpcyBpcyB0aGUgb25seSBwbGFjZSB3ZSAocmUpY3Jl
YXRlIHRoZSBtYWluIHRpbGVkIGJhY2tpbmcgc3RvcmUsCisgICAgLy8gb25jZSB3ZSBoYXZlIGEg
cmVtb3RlIGNsaWVudCBhbmQgd2UgYXJlIHJlYWR5IHRvIHNlbmQgb3VyIGRhdGEgdG8gdGhlIFVJ
IHByb2Nlc3MuCisgICAgaWYgKCFtX21haW5CYWNraW5nU3RvcmUpIHsKKyAgICAgICAgbV9tYWlu
QmFja2luZ1N0b3JlID0gYWRvcHRQdHIobmV3IFRpbGVkQmFja2luZ1N0b3JlKHRoaXMsIFRpbGVk
QmFja2luZ1N0b3JlUmVtb3RlVGlsZUJhY2tlbmQ6OmNyZWF0ZSh0aGlzKSkpOworICAgICAgICBt
X21haW5CYWNraW5nU3RvcmUtPnNldENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAg
ICB9CiAgICAgbV9tYWluQmFja2luZ1N0b3JlLT51cGRhdGVUaWxlQnVmZmVycygpOwogICAgIG1f
aW5VcGRhdGVNb2RlID0gZmFsc2U7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6cHVyZ2VC
YWNraW5nU3RvcmVzKCkKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCku
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgV2ViR3JhcGhpY3NMYXllciogbGF5ZXIgPSB0b1dlYkdy
YXBoaWNzTGF5ZXIodGhpcy0+Y2hpbGRyZW4oKVtpXSk7Ci0gICAgICAgIGxheWVyLT5wdXJnZUJh
Y2tpbmdTdG9yZXMoKTsKLSAgICB9Ci0KLSAgICBpZiAoV2ViR3JhcGhpY3NMYXllciogbWFzayA9
IHRvV2ViR3JhcGhpY3NMYXllcihtYXNrTGF5ZXIoKSkpCi0gICAgICAgIG1hc2stPnB1cmdlQmFj
a2luZ1N0b3JlcygpOwotCi0gICAgaWYgKG1fbWFpbkJhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9t
YWluQmFja2luZ1N0b3JlLmNsZWFyKCk7Ci0KLSAgICBpZiAoIW1fbGF5ZXJJbmZvLmltYWdlQmFj
a2luZ1N0b3JlSUQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd2ViR3JhcGhpY3NMYXllckNs
aWVudC0+cmVsZWFzZUltYWdlQmFja2luZ1N0b3JlKG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0
b3JlSUQpOwotICAgIG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQgPSAwOwotfQotCi12
b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnJlY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQotewot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7ICsraSkgewotICAg
ICAgICBXZWJHcmFwaGljc0xheWVyKiBsYXllciA9IHRvV2ViR3JhcGhpY3NMYXllcih0aGlzLT5j
aGlsZHJlbigpW2ldKTsKLSAgICAgICAgbGF5ZXItPnJlY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVk
ZWQoKTsKLSAgICB9Ci0gICAgaWYgKFdlYkdyYXBoaWNzTGF5ZXIqIG1hc2sgPSB0b1dlYkdyYXBo
aWNzTGF5ZXIobWFza0xheWVyKCkpKQotICAgICAgICBtYXNrLT5yZWNyZWF0ZUJhY2tpbmdTdG9y
ZUlmTmVlZGVkKCk7CisgICAgbV9tYWluQmFja2luZ1N0b3JlLmNsZWFyKCk7CisgICAgbV9wcmV2
aW91c0JhY2tpbmdTdG9yZS5jbGVhcigpOwogCi0gICAgaWYgKCFtX21haW5CYWNraW5nU3RvcmUp
IHsKLSAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlID0gYWRvcHRQdHIobmV3IFRpbGVkQmFja2lu
Z1N0b3JlKHRoaXMsIFRpbGVkQmFja2luZ1N0b3JlUmVtb3RlVGlsZUJhY2tlbmQ6OmNyZWF0ZSh0
aGlzKSkpOwotICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldENvbnRlbnRzU2NhbGUobV9j
b250ZW50c1NjYWxlKTsKKyAgICBpZiAobV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCkg
eworICAgICAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPnJlbGVhc2VJbWFnZUJhY2tpbmdT
dG9yZShtX2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEKTsKKyAgICAgICAgbV9sYXllcklu
Zm8uaW1hZ2VCYWNraW5nU3RvcmVJRCA9IDA7CiAgICAgfQotCi0gICAgaWYgKG1faW1hZ2UpCi0g
ICAgICAgIHNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCk7CiB9CiAKIHZvaWQgV2ViR3JhcGhpY3NM
YXllcjo6c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChXZWJLaXQ6OldlYkdyYXBoaWNzTGF5ZXJD
bGllbnQqIGNsaWVudCkKQEAgLTYzOSw5ICs2MjEsMTEgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVy
OjpzZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KFdlYktpdDo6V2ViR3JhcGhpY3NMYXllckNsaWVu
dCoKICAgICAgICAgbGF5ZXItPnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQoY2xpZW50KTsKICAg
ICB9CiAKLSAgICAvLyBIYXZlIHRvIGZvcmNlIGRldGFjaCBmcm9tIHJlbW90ZSBsYXllciBoZXJl
IGlmIGxheWVyIHRpbGUgY2xpZW50IGNoYW5nZXMuCi0gICAgaWYgKG1fd2ViR3JhcGhpY3NMYXll
ckNsaWVudCkKKyAgICAvLyBXZSBoYXZlIHRvIHJlbGVhc2UgcmVzb3VyY2VzIG9uIHRoZSBVSSBw
cm9jZXNzIGhlcmUgaWYgdGhlIHJlbW90ZSBjbGllbnQgaGFzIGNoYW5nZWQgb3IgaXMgcmVtb3Zl
ZC4KKyAgICBpZiAobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KSB7CisgICAgICAgIHB1cmdlQmFj
a2luZ1N0b3JlcygpOwogICAgICAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPmRldGFjaExh
eWVyKHRoaXMpOworICAgIH0KICAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQgPSBjbGllbnQ7
CiAgICAgaWYgKGNsaWVudCkKICAgICAgICAgY2xpZW50LT5hdHRhY2hMYXllcih0aGlzKTsKQEAg
LTY1OCw3ICs2NDIsOCBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1l
ZFZpc2libGVSZWN0KCkKICAgICBtX2xheWVyVHJhbnNmb3JtLnNldENoaWxkcmVuVHJhbnNmb3Jt
KGNoaWxkcmVuVHJhbnNmb3JtKCkpOwogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZVRyYW5z
Zm9ybXMocGFyZW50KCkgPyB0b1dlYkdyYXBoaWNzTGF5ZXIocGFyZW50KCkpLT5tX2xheWVyVHJh
bnNmb3JtLmNvbWJpbmVkRm9yQ2hpbGRyZW4oKSA6IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwog
ICAgIC8vIFRoZSBjb21iaW5lZCB0cmFuc2Zvcm0gd2lsbCBiZSB1c2VkIGluIHRpbGVkQmFja2lu
Z1N0b3JlVmlzaWJsZVJlY3QuCi0gICAgbV9tYWluQmFja2luZ1N0b3JlLT5hZGp1c3RWaXNpYmxl
UmVjdCgpOworICAgIGlmIChtX21haW5CYWNraW5nU3RvcmUpCisgICAgICAgIG1fbWFpbkJhY2tp
bmdTdG9yZS0+YWRqdXN0VmlzaWJsZVJlY3QoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NM
YXllci5oCmluZGV4IGUzYzFmY2ZlYTAxYjNkMGU5ZWZkYjk1ZmM3MTM1NTNmMDgzNzgwNjcuLjVl
MDJhNDk5ZjIxMmM5YzdhMDQ3MTczMzM0YTQzZDhmZjJlNTAyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NM
YXllci5oCkBAIC0xNDAsNyArMTQwLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNSZWFkeUZvclRp
bGVCdWZmZXJTd2FwKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50QnVmZmVycygpOwog
ICAgIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0gICAgdm9pZCByZWNyZWF0ZUJhY2tpbmdT
dG9yZUlmTmVlZGVkKCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAKaW5kZXgg
MDk4YWQ3MDQwNzdlNzdkN2Q0Yzk0MDI0ODNmMmE1ODlhOGNlYzI4Yy4uMDE3M2JiOGUxNWJkY2Ji
YzM0YmUzODU0YjdmYzYzZTU1YzZkZTUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAKQEAgLTc0LDcgKzc0
LDYgQEAgTGF5ZXJUcmVlSG9zdFF0OjpMYXllclRyZWVIb3N0UXQoV2ViUGFnZSogd2ViUGFnZSkK
ICAgICAsIG1fc2hvdWxkU3luY1Jvb3RMYXllcih0cnVlKQogICAgICwgbV9sYXllckZsdXNoVGlt
ZXIodGhpcywgJkxheWVyVHJlZUhvc3RRdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpCiAgICAgLCBt
X2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCh0cnVlKQotICAgICwgbV9zaG91bGRSZWNyZWF0
ZUJhY2tpbmdTdG9yZShmYWxzZSkKIHsKICAgICAvLyBDcmVhdGUgYSByb290IGxheWVyLgogICAg
IG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMpOwpAQCAtMjIxLDggKzIy
MCw2IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpzZXRQYWdlT3ZlcmxheU5lZWRzRGlzcGxheShj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogCiBib29sIExheWVyVHJlZUhvc3RRdDo6Zmx1
c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIHsKLSAgICByZWNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVl
ZGVkKCk7Ci0KICAgICBib29sIGRpZFN5bmMgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5G
cmFtZSgpLT52aWV3KCktPnN5bmNDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7
CiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZUZv
clRoaXNMYXllck9ubHkoKTsKICAgICBpZiAobV9wYWdlT3ZlcmxheUxheWVyKQpAQCAtNDExLDYg
KzQwOCw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFF0Ojp1cGRhdGVUaWxlKFdlYkxheWVySUQgbGF5
ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgVXBkYXRlSW5mCiB7CiAgICAgbV93ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpMYXllclRyZWVIb3N0UHJveHk6OlVwZGF0ZVRpbGVGb3JMYXllcihsYXllcklE
LCB0aWxlSUQsIHVwZGF0ZUluZm8pKTsKIH0KKwogdm9pZCBMYXllclRyZWVIb3N0UXQ6OnJlbW92
ZVRpbGUoV2ViTGF5ZXJJRCBsYXllcklELCBpbnQgdGlsZUlEKQogewogICAgIG1fd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlSG9zdFByb3h5OjpSZW1vdmVUaWxlRm9yTGF5ZXIobGF5
ZXJJRCwgdGlsZUlEKSk7CkBAIC00NDcsMjIgKzQ0NSwxMiBAQCBib29sIExheWVyVHJlZUhvc3RR
dDo6bGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QKIAogdm9pZCBMYXllclRyZWVI
b3N0UXQ6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7Ci0gICAgbV9zaG91bGRSZWNyZWF0ZUJhY2tp
bmdTdG9yZSA9IHRydWU7Ci0gICAgV2ViR3JhcGhpY3NMYXllciogd2ViUm9vdExheWVyID0gdG9X
ZWJHcmFwaGljc0xheWVyKG1fcm9vdExheWVyLmdldCgpKTsKLSAgICB3ZWJSb290TGF5ZXItPnB1
cmdlQmFja2luZ1N0b3JlcygpOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6V2ViR3JhcGhpY3NMYXll
cio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7CisgICAgZm9yIChI
YXNoU2V0PFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lz
dGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0KS0+cHVy
Z2VCYWNraW5nU3RvcmVzKCk7CiAKICAgICBBU1NFUlQoIW1fZGlyZWN0bHlDb21wb3NpdGVkSW1h
Z2VSZWZDb3VudHMuc2l6ZSgpKTsKIH0KLQotdm9pZCBMYXllclRyZWVIb3N0UXQ6OnJlY3JlYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQoKQotewotICAgIGlmICghbV9zaG91bGRSZWNyZWF0ZUJhY2tp
bmdTdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zaG91bGRSZWNyZWF0ZUJhY2tpbmdT
dG9yZSA9IGZhbHNlOwotICAgIFdlYkdyYXBoaWNzTGF5ZXIqIHdlYlJvb3RMYXllciA9IHRvV2Vi
R3JhcGhpY3NMYXllcihtX3Jvb3RMYXllci5nZXQoKSk7Ci0gICAgd2ViUm9vdExheWVyLT5yZWNy
ZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7Ci19CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQv
TGF5ZXJUcmVlSG9zdFF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQv
TGF5ZXJUcmVlSG9zdFF0LmgKaW5kZXggZTE4MTFjYzI1MmYzZWQ3OTMyNDIwOTBlZWI1MDg5NTcx
MjQ3M2EyNC4uMzEzNTU5OWYyOTI2OWFhMmFmMzI5MDQ4NzEyMjUwMWE1MzcwZjY5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RR
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVI
b3N0UXQuaApAQCAtOTcsNyArOTcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FuY2VsUGVuZGlu
Z0xheWVyRmx1c2goKTsKICAgICB2b2lkIHBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7CiAg
ICAgdm9pZCBzZW5kTGF5ZXJzVG9VSSgpOwotICAgIHZvaWQgcmVjcmVhdGVCYWNraW5nU3RvcmVJ
Zk5lZWRlZCgpOwogCiAgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcm9vdExh
eWVyOwogCkBAIC0xMjQsNyArMTIzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxheWVyRmx1c2hU
aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPExheWVyVHJlZUhvc3RRdD4qKTsKICAgICBXZWJDb3Jl
OjpUaW1lcjxMYXllclRyZWVIb3N0UXQ+IG1fbGF5ZXJGbHVzaFRpbWVyOwogICAgIGJvb2wgbV9s
YXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQ7Ci0gICAgYm9vbCBtX3Nob3VsZFJlY3JlYXRlQmFj
a2luZ1N0b3JlOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126094</attachid>
            <date>2012-02-08 09:00:47 -0800</date>
            <delta_ts>2012-02-09 03:37:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78005-20120208175605.patch</filename>
            <type>text/plain</type>
            <size>13642</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzljODRkYzIwMGMwODZj
Yzk2ZDJjM2I3YjkwNTMxZGI1OTdkYzUxNS4uNTE3OTYxNWMwOWY0N2NlZThjYTk1Yzg3ZTViMWVi
OWM5YWVkYTEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0IEBACiAyMDEyLTAyLTA4ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0
XSBDb250cm9sIHRoZSBsaWZldGltZSBvZiBUaWxlZEJhY2tpbmdTdG9yZXMgaW4gV2ViR3JhcGhp
Y3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc4MDA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBtYWtlcyBzdXJlIHRoYXQgbm8gZW1wdHkgdGlsZXMgYXJlIGdlbmVyYXRlZCBmb3IgbGF5
ZXJzIHdpdGhvdXQgY29udGVudHMgYW5kIHRoYXQKKyAgICAgICAgbm8gaW50ZXJhY3Rpb24gaXMg
bWFkZSB3aXRoIHRoZSBUaWxlZEJhY2tpbmdTdG9yZSB1bnRpbCB3ZSBnb3QgYSBXZWJHcmFwaGlj
c0xheWVyQ2xpZW50LgorCisgICAgICAgIC0gQ3JlYXRlIHRoZSBtYWluIFRpbGVkQmFja2luZ1N0
b3JlIG9ubHkgd2hlbiB0aGUgbGF5ZXIgaGFzIGRyYXdzQ29udGVudCBhbmQgaGFzIG5vCisgICAg
ICAgICAgZGlyZWN0bHkgY29tcG9zaXRlZCBpbWFnZQorICAgICAgICAtIFJlbW92ZWQgcmVjcmVh
dGVCYWNraW5nU3RvcmVJZk5lZWRlZCBhbmQgZG8gdGhlIChyZSljcmVhdGlvbiBvZiB0aGUgYmFj
a2luZyBzdG9yZXMKKyAgICAgICAgICBpbiB1cGRhdGVDb250ZW50QnVmZmVycworICAgICAgICAt
IENhbGwgcHVyZ2VCYWNraW5nU3RvcmVzIG9uIHJlZ2lzdGVyZWQgbGF5ZXJzIGluc3RlYWQgb2Yg
cGFzc2luZyBpdCBkb3duIHRoZSBsYXllciB0cmVlCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllcjo6V2ViR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
cmFwaGljc0xheWVyOjp+V2ViR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
cmFwaGljc0xheWVyOjpzZXREcmF3c0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3Jh
cGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdy
YXBoaWNzTGF5ZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0
VHJhamVjdG9yeVZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjp0
aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHcmFw
aGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
cmFwaGljc0xheWVyOjpwdXJnZUJhY2tpbmdTdG9yZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllcjo6c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHcmFwaGljc0xheWVyOjpjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmg6Cisg
ICAgICAgIChXZWJHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
cXQvTGF5ZXJUcmVlSG9zdFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFF0
OjpMYXllclRyZWVIb3N0UXQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UXQ6OmZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0UXQ6OnB1cmdlQmFja2luZ1N0b3Jlcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oOgorICAgICAgICAoTGF5ZXJUcmVl
SG9zdFF0KToKKworMjAxMi0wMi0wOCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290
dGVAbm9raWEuY29tPgorCiAgICAgICAgIFtRdF0gUmVtb3ZlIFdlYkdyYXBoaWNzTGF5ZXI6OnVw
ZGF0ZVRpbGVCdWZmZXJzUmVjdXJzaXZlbHkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc4MTA1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4
IGQwNDE1YTY2ZmRmMzg1YjUwZTE1NDkyYjg4MmE3MTU2MTc3Mjc0MTMuLjg2YWUzNzUwNGFkNWIz
ODg4YjA5MDE0YzY3YjcyMzlhZDRjM2IxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcApA
QCAtODgsMTEgKzg4LDkgQEAgV2ViR3JhcGhpY3NMYXllcjo6V2ViR3JhcGhpY3NMYXllcihHcmFw
aGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2luVXBkYXRlTW9kZShmYWxzZSkKICNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICAsIG1fd2ViR3JhcGhpY3NMYXllckNsaWVu
dCgwKQotICAgICwgbV9tYWluQmFja2luZ1N0b3JlKGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdT
dG9yZSh0aGlzLCBUaWxlZEJhY2tpbmdTdG9yZVJlbW90ZVRpbGVCYWNrZW5kOjpjcmVhdGUodGhp
cykpKSkKICAgICAsIG1fY29udGVudHNTY2FsZSgxLmYpCiAjZW5kaWYKIHsKLSAgICBtX21haW5C
YWNraW5nU3RvcmUtPnNldENvbnRlbnRzU2NhbGUoMS4wKTsKICAgICBzdGF0aWMgV2ViTGF5ZXJJ
RCBuZXh0TGF5ZXJJRCA9IDE7CiAgICAgbV9sYXllckluZm8uaWQgPSBuZXh0TGF5ZXJJRCsrOwog
ICAgIGxheWVyQnlJRE1hcCgpLmFkZChpZCgpLCB0aGlzKTsKQEAgLTEwMiwxMSArMTAwLDEwIEBA
IFdlYkdyYXBoaWNzTGF5ZXI6On5XZWJHcmFwaGljc0xheWVyKCkKIHsKICAgICBsYXllckJ5SURN
YXAoKS5yZW1vdmUoaWQoKSk7CiAKLSAgICAvLyBUaGlzIHdvdWxkIHRlbGwgdGhlIFVJIHByb2Nl
c3MgdG8gcmVsZWFzZSB0aGUgYmFja2luZyBzdG9yZS4KLSAgICBzZXRDb250ZW50c1RvSW1hZ2Uo
MCk7Ci0KLSAgICBpZiAobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KQorICAgIGlmIChtX3dlYkdy
YXBoaWNzTGF5ZXJDbGllbnQpIHsKKyAgICAgICAgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAg
ICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+ZGV0YWNoTGF5ZXIodGhpcyk7CisgICAgfQog
fQogCiBib29sIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFw
aGljc0xheWVyKj4mIGNoaWxkcmVuKQpAQCAtMjQ3LDggKzI0NCwxMSBAQCB2b2lkIFdlYkdyYXBo
aWNzTGF5ZXI6OnNldERyYXdzQ29udGVudChib29sIGIpCiAgICAgICAgIHJldHVybjsKICAgICBH
cmFwaGljc0xheWVyOjpzZXREcmF3c0NvbnRlbnQoYik7CiAKLSAgICBpZiAoYikKLSAgICAgICAg
c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgaWYgKCFiKSB7CisgICAgICAgIG1fbWFpbkJhY2tpbmdT
dG9yZS5jbGVhcigpOworICAgICAgICBtX3ByZXZpb3VzQmFja2luZ1N0b3JlLmNsZWFyKCk7Cisg
ICAgfQorICAgIC8vIFRoZSBuZXh0IGNhbGwgdG8gdXBkYXRlQ29udGVudEJ1ZmZlcnMgd2lsbCBy
ZWNyZWF0ZSB0aGUgYmFja2luZyBzdG9yZSBpZiBuZWVkZWQuCiAgICAgbm90aWZ5Q2hhbmdlKCk7
CiB9CiAKQEAgLTM0NSw2ICszNDUsNyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldENvbnRl
bnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdlID09IG1faW1hZ2UpCiAg
ICAgICAgIHJldHVybjsKKwogICAgIGludDY0X3QgbmV3SUQgPSAwOwogICAgIGlmIChtX3dlYkdy
YXBoaWNzTGF5ZXJDbGllbnQpIHsKICAgICAgICAgLy8gV2UgYWRvcHQgZmlyc3QsIGluIGNhc2Ug
dGhpcyBpcyB0aGUgc2FtZSBmcmFtZSAtIHRoYXQgd2F5IHdlIGF2b2lkIGRlc3Ryb3lpbmcgYW5k
IHJlY3JlYXRpbmcgdGhlIGltYWdlLgpAQCAtNDAzLDggKzQwNCw4IEBAIHZvaWQgV2ViR3JhcGhp
Y3NMYXllcjo6c2V0TmVlZHNEaXNwbGF5KCkKIAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRO
ZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIHJlY3JlYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKLSAgICBtX21haW5CYWNraW5nU3RvcmUtPmludmFsaWRh
dGUoSW50UmVjdChyZWN0KSk7CisgICAgaWYgKG1fbWFpbkJhY2tpbmdTdG9yZSkKKyAgICAgICAg
bV9tYWluQmFja2luZ1N0b3JlLT5pbnZhbGlkYXRlKEludFJlY3QocmVjdCkpOwogICAgIG5vdGlm
eUNoYW5nZSgpOwogfQogCkBAIC00NjIsMTAgKzQ2Myw2IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXll
cjo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fbGF5ZXJJbmZv
LmNoaWxkcmVuLmFwcGVuZCh0b1dlYkxheWVySUQoY2hpbGRyZW4oKVtpXSkpOwogCi0gICAgQVNT
RVJUKG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCk7Ci0gICAgaWYgKG1fbGF5ZXJJbmZvLmltYWdl
SXNVcGRhdGVkICYmIG1faW1hZ2UgJiYgIW1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQp
Ci0gICAgICAgIG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQgPSBtX3dlYkdyYXBoaWNz
TGF5ZXJDbGllbnQtPmFkb3B0SW1hZ2VCYWNraW5nU3RvcmUobV9pbWFnZS5nZXQoKSk7Ci0KICAg
ICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPmRpZFN5bmNDb21wb3NpdGluZ1N0YXRlRm9yTGF5
ZXIobV9sYXllckluZm8pOwogICAgIG1fbW9kaWZpZWQgPSBmYWxzZTsKICAgICBtX2xheWVySW5m
by5pbWFnZUlzVXBkYXRlZCA9IGZhbHNlOwpAQCAtNDg4LDcgKzQ4NSw4IEBAIHZvaWQgV2ViR3Jh
cGhpY3NMYXllcjo6c2V0Um9vdExheWVyKGJvb2wgaXNSb290KQogCiB2b2lkIFdlYkdyYXBoaWNz
TGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQ
b2ludCYgdHJhamVjdG9yeVZlY3RvcikKIHsKLSAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldFZp
c2libGVSZWN0VHJhamVjdG9yeVZlY3Rvcih0cmFqZWN0b3J5VmVjdG9yKTsKKyAgICBpZiAobV9t
YWluQmFja2luZ1N0b3JlKQorICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldFZpc2libGVS
ZWN0VHJhamVjdG9yeVZlY3Rvcih0cmFqZWN0b3J5VmVjdG9yKTsKIH0KIAogdm9pZCBXZWJHcmFw
aGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShjb25zdCBJbnRSZWN0JiBw
YWdlVmlzaWJsZVJlY3QsIGZsb2F0IHNjYWxlKQpAQCAtNTI4LDggKzUyNiw2IEBAIGJvb2wgV2Vi
R3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVVcGRhdGVzQWxsb3dlZCgpIGNvbnN0CiAK
IEludFJlY3QgV2ViR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3Qo
KQogewotICAgIGlmICghZHJhd3NDb250ZW50KCkpCi0gICAgICAgIHJldHVybiBJbnRSZWN0KCk7
CiAgICAgcmV0dXJuIEludFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQo
KSk7CiB9CiAKQEAgLTU3NSw1NCArNTcxLDM4IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6cmVt
b3ZlVGlsZShpbnQgdGlsZUlEKQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRl
bnRCdWZmZXJzKCkKIHsKLSAgICAvLyBCYWNraW5nLXN0b3JlcyBmb3IgZGlyZWN0bHkgY29tcG9z
aXRlZCBpbWFnZXMgaXMgaGFuZGxlZCBpbiBMYXllclRyZWVIb3N0LgotICAgIGlmIChtX2ltYWdl
KQorICAgIC8vIFRoZSByZW1vdGUgaW1hZ2UgbWlnaHQgaGF2ZSBiZWVuIHJlbGVhc2VkIGJ5IHB1
cmdlQmFja2luZ1N0b3Jlcy4KKyAgICBpZiAobV9pbWFnZSkgeworICAgICAgICBpZiAoIW1fbGF5
ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpIHsKKyAgICAgICAgICAgIG1fbGF5ZXJJbmZvLmlt
YWdlQmFja2luZ1N0b3JlSUQgPSBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPmFkb3B0SW1hZ2VC
YWNraW5nU3RvcmUobV9pbWFnZS5nZXQoKSk7CisgICAgICAgICAgICBtX2xheWVySW5mby5pbWFn
ZUlzVXBkYXRlZCA9IHRydWU7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOworICAgIH0KIAog
ICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faW5VcGRh
dGVNb2RlID0gdHJ1ZTsKKyAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHBsYWNlIHdlIChyZSljcmVh
dGUgdGhlIG1haW4gdGlsZWQgYmFja2luZyBzdG9yZSwKKyAgICAvLyBvbmNlIHdlIGhhdmUgYSBy
ZW1vdGUgY2xpZW50IGFuZCB3ZSBhcmUgcmVhZHkgdG8gc2VuZCBvdXIgZGF0YSB0byB0aGUgVUkg
cHJvY2Vzcy4KKyAgICBpZiAoIW1fbWFpbkJhY2tpbmdTdG9yZSkgeworICAgICAgICBtX21haW5C
YWNraW5nU3RvcmUgPSBhZG9wdFB0cihuZXcgVGlsZWRCYWNraW5nU3RvcmUodGhpcywgVGlsZWRC
YWNraW5nU3RvcmVSZW1vdGVUaWxlQmFja2VuZDo6Y3JlYXRlKHRoaXMpKSk7CisgICAgICAgIG1f
bWFpbkJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHNTY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAg
IH0KICAgICBtX21haW5CYWNraW5nU3RvcmUtPnVwZGF0ZVRpbGVCdWZmZXJzKCk7CiAgICAgbV9p
blVwZGF0ZU1vZGUgPSBmYWxzZTsKIH0KIAogdm9pZCBXZWJHcmFwaGljc0xheWVyOjpwdXJnZUJh
Y2tpbmdTdG9yZXMoKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4oKS5z
aXplKCk7ICsraSkgewotICAgICAgICBXZWJHcmFwaGljc0xheWVyKiBsYXllciA9IHRvV2ViR3Jh
cGhpY3NMYXllcih0aGlzLT5jaGlsZHJlbigpW2ldKTsKLSAgICAgICAgbGF5ZXItPnB1cmdlQmFj
a2luZ1N0b3JlcygpOwotICAgIH0KLQotICAgIGlmIChXZWJHcmFwaGljc0xheWVyKiBtYXNrID0g
dG9XZWJHcmFwaGljc0xheWVyKG1hc2tMYXllcigpKSkKLSAgICAgICAgbWFzay0+cHVyZ2VCYWNr
aW5nU3RvcmVzKCk7Ci0KLSAgICBpZiAobV9tYWluQmFja2luZ1N0b3JlKQotICAgICAgICBtX21h
aW5CYWNraW5nU3RvcmUuY2xlYXIoKTsKLQotICAgIGlmICghbV9sYXllckluZm8uaW1hZ2VCYWNr
aW5nU3RvcmVJRCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93ZWJHcmFwaGljc0xheWVyQ2xp
ZW50LT5yZWxlYXNlSW1hZ2VCYWNraW5nU3RvcmUobV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3Rv
cmVJRCk7Ci0gICAgbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCA9IDA7Ci19Ci0KLXZv
aWQgV2ViR3JhcGhpY3NMYXllcjo6cmVjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpCi17Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIFdlYkdyYXBoaWNzTGF5ZXIqIGxheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKHRoaXMtPmNo
aWxkcmVuKClbaV0pOwotICAgICAgICBsYXllci0+cmVjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRl
ZCgpOwotICAgIH0KLSAgICBpZiAoV2ViR3JhcGhpY3NMYXllciogbWFzayA9IHRvV2ViR3JhcGhp
Y3NMYXllcihtYXNrTGF5ZXIoKSkpCi0gICAgICAgIG1hc2stPnJlY3JlYXRlQmFja2luZ1N0b3Jl
SWZOZWVkZWQoKTsKKyAgICBtX21haW5CYWNraW5nU3RvcmUuY2xlYXIoKTsKKyAgICBtX3ByZXZp
b3VzQmFja2luZ1N0b3JlLmNsZWFyKCk7CiAKLSAgICBpZiAoIW1fbWFpbkJhY2tpbmdTdG9yZSkg
ewotICAgICAgICBtX21haW5CYWNraW5nU3RvcmUgPSBhZG9wdFB0cihuZXcgVGlsZWRCYWNraW5n
U3RvcmUodGhpcywgVGlsZWRCYWNraW5nU3RvcmVSZW1vdGVUaWxlQmFja2VuZDo6Y3JlYXRlKHRo
aXMpKSk7Ci0gICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+c2V0Q29udGVudHNTY2FsZShtX2Nv
bnRlbnRzU2NhbGUpOworICAgIGlmIChtX2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEKSB7
CisgICAgICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+cmVsZWFzZUltYWdlQmFja2luZ1N0
b3JlKG1fbGF5ZXJJbmZvLmltYWdlQmFja2luZ1N0b3JlSUQpOworICAgICAgICBtX2xheWVySW5m
by5pbWFnZUJhY2tpbmdTdG9yZUlEID0gMDsKICAgICB9Ci0KLSAgICBpZiAobV9pbWFnZSkKLSAg
ICAgICAgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKTsKIH0KIAogdm9pZCBXZWJHcmFwaGljc0xh
eWVyOjpzZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KFdlYktpdDo6V2ViR3JhcGhpY3NMYXllckNs
aWVudCogY2xpZW50KQpAQCAtNjM5LDkgKzYxOSwxMSBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OnNldFdlYkdyYXBoaWNzTGF5ZXJDbGllbnQoV2ViS2l0OjpXZWJHcmFwaGljc0xheWVyQ2xpZW50
KgogICAgICAgICBsYXllci0+c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChjbGllbnQpOwogICAg
IH0KIAotICAgIC8vIEhhdmUgdG8gZm9yY2UgZGV0YWNoIGZyb20gcmVtb3RlIGxheWVyIGhlcmUg
aWYgbGF5ZXIgdGlsZSBjbGllbnQgY2hhbmdlcy4KLSAgICBpZiAobV93ZWJHcmFwaGljc0xheWVy
Q2xpZW50KQorICAgIC8vIFdlIGhhdmUgdG8gcmVsZWFzZSByZXNvdXJjZXMgb24gdGhlIFVJIHBy
b2Nlc3MgaGVyZSBpZiB0aGUgcmVtb3RlIGNsaWVudCBoYXMgY2hhbmdlZCBvciBpcyByZW1vdmVk
LgorICAgIGlmIChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpIHsKKyAgICAgICAgcHVyZ2VCYWNr
aW5nU3RvcmVzKCk7CiAgICAgICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+ZGV0YWNoTGF5
ZXIodGhpcyk7CisgICAgfQogICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCA9IGNsaWVudDsK
ICAgICBpZiAoY2xpZW50KQogICAgICAgICBjbGllbnQtPmF0dGFjaExheWVyKHRoaXMpOwpAQCAt
NjU4LDcgKzY0MCw4IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVk
VmlzaWJsZVJlY3QoKQogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0Q2hpbGRyZW5UcmFuc2Zvcm0o
Y2hpbGRyZW5UcmFuc2Zvcm0oKSk7CiAgICAgbV9sYXllclRyYW5zZm9ybS5jb21iaW5lVHJhbnNm
b3JtcyhwYXJlbnQoKSA/IHRvV2ViR3JhcGhpY3NMYXllcihwYXJlbnQoKSktPm1fbGF5ZXJUcmFu
c2Zvcm0uY29tYmluZWRGb3JDaGlsZHJlbigpIDogVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAg
ICAgLy8gVGhlIGNvbWJpbmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGlsZWRCYWNraW5n
U3RvcmVWaXNpYmxlUmVjdC4KLSAgICBtX21haW5CYWNraW5nU3RvcmUtPmFkanVzdFZpc2libGVS
ZWN0KCk7CisgICAgaWYgKG1fbWFpbkJhY2tpbmdTdG9yZSkKKyAgICAgICAgbV9tYWluQmFja2lu
Z1N0b3JlLT5hZGp1c3RWaXNpYmxlUmVjdCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xh
eWVyLmgKaW5kZXggZTNjMWZjZmVhMDFiM2QwZTllZmRiOTVmYzcxMzU1M2YwODM3ODA2Ny4uNWUw
MmE0OTlmMjEyYzljN2EwNDcxNzMzMzRhNDNkOGZmMmU1MDI1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xh
eWVyLmgKQEAgLTE0MCw3ICsxNDAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlYWR5Rm9yVGls
ZUJ1ZmZlclN3YXAoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRCdWZmZXJzKCk7CiAg
ICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKLSAgICB2b2lkIHJlY3JlYXRlQmFja2luZ1N0
b3JlSWZOZWVkZWQoKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNwcAppbmRleCAw
OThhZDcwNDA3N2U3N2Q3ZDRjOTQwMjQ4M2YyYTU4OWE4Y2VjMjhjLi4wMTczYmI4ZTE1YmRjYmJj
MzRiZTM4NTRiN2ZjNjNlNTVjNmRlNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNwcApAQCAtNzQsNyArNzQs
NiBAQCBMYXllclRyZWVIb3N0UXQ6OkxheWVyVHJlZUhvc3RRdChXZWJQYWdlKiB3ZWJQYWdlKQog
ICAgICwgbV9zaG91bGRTeW5jUm9vdExheWVyKHRydWUpCiAgICAgLCBtX2xheWVyRmx1c2hUaW1l
cih0aGlzLCAmTGF5ZXJUcmVlSG9zdFF0OjpsYXllckZsdXNoVGltZXJGaXJlZCkKICAgICAsIG1f
bGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRydWUpCi0gICAgLCBtX3Nob3VsZFJlY3JlYXRl
QmFja2luZ1N0b3JlKGZhbHNlKQogewogICAgIC8vIENyZWF0ZSBhIHJvb3QgbGF5ZXIuCiAgICAg
bV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUodGhpcyk7CkBAIC0yMjEsOCArMjIw
LDYgQEAgdm9pZCBMYXllclRyZWVIb3N0UXQ6OnNldFBhZ2VPdmVybGF5TmVlZHNEaXNwbGF5KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiAKIGJvb2wgTGF5ZXJUcmVlSG9zdFF0OjpmbHVz
aFBlbmRpbmdMYXllckNoYW5nZXMoKQogewotICAgIHJlY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVk
ZWQoKTsKLQogICAgIGJvb2wgZGlkU3luYyA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCktPnZpZXcoKS0+c3luY0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsK
ICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRlRm9y
VGhpc0xheWVyT25seSgpOwogICAgIGlmIChtX3BhZ2VPdmVybGF5TGF5ZXIpCkBAIC00MTEsNiAr
NDA4LDcgQEAgdm9pZCBMYXllclRyZWVIb3N0UXQ6OnVwZGF0ZVRpbGUoV2ViTGF5ZXJJRCBsYXll
cklELCBpbnQgdGlsZUlELCBjb25zdCBVcGRhdGVJbmYKIHsKICAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OkxheWVyVHJlZUhvc3RQcm94eTo6VXBkYXRlVGlsZUZvckxheWVyKGxheWVySUQs
IHRpbGVJRCwgdXBkYXRlSW5mbykpOwogfQorCiB2b2lkIExheWVyVHJlZUhvc3RRdDo6cmVtb3Zl
VGlsZShXZWJMYXllcklEIGxheWVySUQsIGludCB0aWxlSUQpCiB7CiAgICAgbV93ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVIb3N0UHJveHk6OlJlbW92ZVRpbGVGb3JMYXllcihsYXll
cklELCB0aWxlSUQpKTsKQEAgLTQ0NywyMiArNDQ1LDEyIEBAIGJvb2wgTGF5ZXJUcmVlSG9zdFF0
OjpsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdAogCiB2b2lkIExheWVyVHJlZUhv
c3RRdDo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKIHsKLSAgICBtX3Nob3VsZFJlY3JlYXRlQmFja2lu
Z1N0b3JlID0gdHJ1ZTsKLSAgICBXZWJHcmFwaGljc0xheWVyKiB3ZWJSb290TGF5ZXIgPSB0b1dl
YkdyYXBoaWNzTGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpOwotICAgIHdlYlJvb3RMYXllci0+cHVy
Z2VCYWNraW5nU3RvcmVzKCk7CisgICAgSGFzaFNldDxXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVy
Kj46Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKTsKKyAgICBmb3IgKEhh
c2hTZXQ8V2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBpdCA9IG1fcmVnaXN0
ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICgqaXQpLT5wdXJn
ZUJhY2tpbmdTdG9yZXMoKTsKIAogICAgIEFTU0VSVCghbV9kaXJlY3RseUNvbXBvc2l0ZWRJbWFn
ZVJlZkNvdW50cy5zaXplKCkpOwogfQotCi12b2lkIExheWVyVHJlZUhvc3RRdDo6cmVjcmVhdGVC
YWNraW5nU3RvcmVJZk5lZWRlZCgpCi17Ci0gICAgaWYgKCFtX3Nob3VsZFJlY3JlYXRlQmFja2lu
Z1N0b3JlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3Nob3VsZFJlY3JlYXRlQmFja2luZ1N0
b3JlID0gZmFsc2U7Ci0gICAgV2ViR3JhcGhpY3NMYXllciogd2ViUm9vdExheWVyID0gdG9XZWJH
cmFwaGljc0xheWVyKG1fcm9vdExheWVyLmdldCgpKTsKLSAgICB3ZWJSb290TGF5ZXItPnJlY3Jl
YXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKLX0KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9M
YXllclRyZWVIb3N0UXQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9M
YXllclRyZWVIb3N0UXQuaAppbmRleCBlMTgxMWNjMjUyZjNlZDc5MzI0MjA5MGVlYjUwODk1NzEy
NDczYTI0Li4zMTM1NTk5ZjI5MjY5YWEyYWYzMjkwNDg3MTIyNTAxYTUzNzBmNjk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhv
c3RRdC5oCkBAIC05Nyw3ICs5Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxQZW5kaW5n
TGF5ZXJGbHVzaCgpOwogICAgIHZvaWQgcGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKTsKICAg
ICB2b2lkIHNlbmRMYXllcnNUb1VJKCk7Ci0gICAgdm9pZCByZWNyZWF0ZUJhY2tpbmdTdG9yZUlm
TmVlZGVkKCk7CiAKICAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9yb290TGF5
ZXI7CiAKQEAgLTEyNCw3ICsxMjMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF5ZXJGbHVzaFRp
bWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8TGF5ZXJUcmVlSG9zdFF0PiopOwogICAgIFdlYkNvcmU6
OlRpbWVyPExheWVyVHJlZUhvc3RRdD4gbV9sYXllckZsdXNoVGltZXI7CiAgICAgYm9vbCBtX2xh
eWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZDsKLSAgICBib29sIG1fc2hvdWxkUmVjcmVhdGVCYWNr
aW5nU3RvcmU7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126274</attachid>
            <date>2012-02-09 03:37:45 -0800</date>
            <delta_ts>2012-02-09 06:04:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78005-20120209123300.patch</filename>
            <type>text/plain</type>
            <size>13148</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzljODRkYzIwMGMwODZj
Yzk2ZDJjM2I3YjkwNTMxZGI1OTdkYzUxNS4uZjZiY2IzNWQzNDIyNTg0MmNhNzMwNTQyNTk4ODc4
ODEwODUwMjRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAyLTA5ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0
XSBDb250cm9sIHRoZSBsaWZldGltZSBvZiBUaWxlZEJhY2tpbmdTdG9yZXMgaW4gV2ViR3JhcGhp
Y3NMYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc4MDA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBtYWtlcyBzdXJlIHRoYXQgbm8gZW1wdHkgdGlsZXMgYXJlIGdlbmVyYXRlZCBmb3IgbGF5
ZXJzIHdpdGhvdXQgY29udGVudHMgYW5kIHRoYXQKKyAgICAgICAgbm8gaW50ZXJhY3Rpb24gaXMg
bWFkZSB3aXRoIHRoZSBUaWxlZEJhY2tpbmdTdG9yZSB1bnRpbCB3ZSBnb3QgYSBXZWJHcmFwaGlj
c0xheWVyQ2xpZW50LgorCisgICAgICAgIC0gQ3JlYXRlIHRoZSBtYWluIFRpbGVkQmFja2luZ1N0
b3JlIG9ubHkgd2hlbiB0aGUgbGF5ZXIgaGFzIGRyYXdzQ29udGVudCBhbmQgaGFzIG5vCisgICAg
ICAgICAgZGlyZWN0bHkgY29tcG9zaXRlZCBpbWFnZQorICAgICAgICAtIFJlbW92ZWQgcmVjcmVh
dGVCYWNraW5nU3RvcmVJZk5lZWRlZCBhbmQgZG8gdGhlIChyZSljcmVhdGlvbiBvZiB0aGUgYmFj
a2luZyBzdG9yZXMKKyAgICAgICAgICBpbiB1cGRhdGVDb250ZW50QnVmZmVycworICAgICAgICAt
IENhbGwgcHVyZ2VCYWNraW5nU3RvcmVzIG9uIHJlZ2lzdGVyZWQgbGF5ZXJzIGluc3RlYWQgb2Yg
cGFzc2luZyBpdCBkb3duIHRoZSBsYXllciB0cmVlCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R3JhcGhpY3NMYXllcjo6V2ViR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
cmFwaGljc0xheWVyOjp+V2ViR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
cmFwaGljc0xheWVyOjpzZXREcmF3c0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3Jh
cGhpY3NMYXllcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdyYXBoaWNzTGF5ZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpzZXRWaXNpYmxlQ29udGVudFJlY3RU
cmFqZWN0b3J5VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXI6OnRp
bGVkQmFja2luZ1N0b3JlQ29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBo
aWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdy
YXBoaWNzTGF5ZXI6OnB1cmdlQmFja2luZ1N0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
cmFwaGljc0xheWVyOjpzZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaDoKKyAg
ICAgICAgKFdlYkdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9x
dC9MYXllclRyZWVIb3N0UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UXQ6
OkxheWVyVHJlZUhvc3RRdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RRdDo6Zmx1
c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUhvc3RRdDo6cHVyZ2VCYWNraW5nU3RvcmVzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0Lmg6CisgICAgICAgIChMYXllclRyZWVI
b3N0UXQpOgorCiAyMDEyLTAyLTA4ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0
ZUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBSZW1vdmUgV2ViR3JhcGhpY3NMYXllcjo6dXBk
YXRlVGlsZUJ1ZmZlcnNSZWN1cnNpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHAKaW5kZXgg
ZDA0MTVhNjZmZGYzODViNTBlMTU0OTJiODgyYTcxNTYxNzcyNzQxMy4uN2QwODJmYWFjMmM0YmIz
MjYzNjNhOGEyNzVjZTM3MjdjYzNmYjFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCkBA
IC04OCwxMSArODgsOSBAQCBXZWJHcmFwaGljc0xheWVyOjpXZWJHcmFwaGljc0xheWVyKEdyYXBo
aWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1faW5VcGRhdGVNb2RlKGZhbHNlKQogI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgICwgbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50
KDApCi0gICAgLCBtX21haW5CYWNraW5nU3RvcmUoYWRvcHRQdHIobmV3IFRpbGVkQmFja2luZ1N0
b3JlKHRoaXMsIFRpbGVkQmFja2luZ1N0b3JlUmVtb3RlVGlsZUJhY2tlbmQ6OmNyZWF0ZSh0aGlz
KSkpKQogICAgICwgbV9jb250ZW50c1NjYWxlKDEuZikKICNlbmRpZgogewotICAgIG1fbWFpbkJh
Y2tpbmdTdG9yZS0+c2V0Q29udGVudHNTY2FsZSgxLjApOwogICAgIHN0YXRpYyBXZWJMYXllcklE
IG5leHRMYXllcklEID0gMTsKICAgICBtX2xheWVySW5mby5pZCA9IG5leHRMYXllcklEKys7CiAg
ICAgbGF5ZXJCeUlETWFwKCkuYWRkKGlkKCksIHRoaXMpOwpAQCAtMTAyLDExICsxMDAsMTAgQEAg
V2ViR3JhcGhpY3NMYXllcjo6fldlYkdyYXBoaWNzTGF5ZXIoKQogewogICAgIGxheWVyQnlJRE1h
cCgpLnJlbW92ZShpZCgpKTsKIAotICAgIC8vIFRoaXMgd291bGQgdGVsbCB0aGUgVUkgcHJvY2Vz
cyB0byByZWxlYXNlIHRoZSBiYWNraW5nIHN0b3JlLgotICAgIHNldENvbnRlbnRzVG9JbWFnZSgw
KTsKLQotICAgIGlmIChtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQpCisgICAgaWYgKG1fd2ViR3Jh
cGhpY3NMYXllckNsaWVudCkgeworICAgICAgICBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKICAgICAg
ICAgbV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5kZXRhY2hMYXllcih0aGlzKTsKKyAgICB9CiB9
CiAKIGJvb2wgV2ViR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBo
aWNzTGF5ZXIqPiYgY2hpbGRyZW4pCkBAIC0yNDcsOCArMjQ0LDYgQEAgdm9pZCBXZWJHcmFwaGlj
c0xheWVyOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBiKQogICAgICAgICByZXR1cm47CiAgICAgR3Jh
cGhpY3NMYXllcjo6c2V0RHJhd3NDb250ZW50KGIpOwogCi0gICAgaWYgKGIpCi0gICAgICAgIHNl
dE5lZWRzRGlzcGxheSgpOwogICAgIG5vdGlmeUNoYW5nZSgpOwogfQogCkBAIC00MDMsOCArMzk4
LDggQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXROZWVkc0Rpc3BsYXkoKQogCiB2b2lkIFdl
YkdyYXBoaWNzTGF5ZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiB7Ci0gICAgcmVjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwotICAgIG1fbWFpbkJh
Y2tpbmdTdG9yZS0+aW52YWxpZGF0ZShJbnRSZWN0KHJlY3QpKTsKKyAgICBpZiAobV9tYWluQmFj
a2luZ1N0b3JlKQorICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPmludmFsaWRhdGUoSW50UmVj
dChyZWN0KSk7CiAgICAgbm90aWZ5Q2hhbmdlKCk7CiB9CiAKQEAgLTQ2MiwxMCArNDU3LDYgQEAg
dm9pZCBXZWJHcmFwaGljc0xheWVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9u
bHkoKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7ICsraSkK
ICAgICAgICAgbV9sYXllckluZm8uY2hpbGRyZW4uYXBwZW5kKHRvV2ViTGF5ZXJJRChjaGlsZHJl
bigpW2ldKSk7CiAKLSAgICBBU1NFUlQobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KTsKLSAgICBp
ZiAobV9sYXllckluZm8uaW1hZ2VJc1VwZGF0ZWQgJiYgbV9pbWFnZSAmJiAhbV9sYXllckluZm8u
aW1hZ2VCYWNraW5nU3RvcmVJRCkKLSAgICAgICAgbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3Rv
cmVJRCA9IG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+YWRvcHRJbWFnZUJhY2tpbmdTdG9yZSht
X2ltYWdlLmdldCgpKTsKLQogICAgIG1fd2ViR3JhcGhpY3NMYXllckNsaWVudC0+ZGlkU3luY0Nv
bXBvc2l0aW5nU3RhdGVGb3JMYXllcihtX2xheWVySW5mbyk7CiAgICAgbV9tb2RpZmllZCA9IGZh
bHNlOwogICAgIG1fbGF5ZXJJbmZvLmltYWdlSXNVcGRhdGVkID0gZmFsc2U7CkBAIC00ODgsNyAr
NDc5LDggQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjpzZXRSb290TGF5ZXIoYm9vbCBpc1Jvb3Qp
CiAKIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9y
eVZlY3Rvcihjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQogewotICAgIG1fbWFp
bkJhY2tpbmdTdG9yZS0+c2V0VmlzaWJsZVJlY3RUcmFqZWN0b3J5VmVjdG9yKHRyYWplY3RvcnlW
ZWN0b3IpOworICAgIGlmIChtX21haW5CYWNraW5nU3RvcmUpCisgICAgICAgIG1fbWFpbkJhY2tp
bmdTdG9yZS0+c2V0VmlzaWJsZVJlY3RUcmFqZWN0b3J5VmVjdG9yKHRyYWplY3RvcnlWZWN0b3Ip
OwogfQogCiB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnNldFZpc2libGVDb250ZW50UmVjdEFuZFNj
YWxlKGNvbnN0IEludFJlY3QmIHBhZ2VWaXNpYmxlUmVjdCwgZmxvYXQgc2NhbGUpCkBAIC01Mjgs
OCArNTIwLDYgQEAgYm9vbCBXZWJHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVVwZGF0
ZXNBbGxvd2VkKCkgY29uc3QKIAogSW50UmVjdCBXZWJHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tp
bmdTdG9yZUNvbnRlbnRzUmVjdCgpCiB7Ci0gICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKLSAgICAg
ICAgcmV0dXJuIEludFJlY3QoKTsKICAgICByZXR1cm4gSW50UmVjdCgwLCAwLCBzaXplKCkud2lk
dGgoKSwgc2l6ZSgpLmhlaWdodCgpKTsKIH0KIApAQCAtNTc1LDU0ICs1NjUsNDAgQEAgdm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpyZW1vdmVUaWxlKGludCB0aWxlSUQpCiAKIHZvaWQgV2ViR3JhcGhp
Y3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogewotICAgIC8vIEJhY2tpbmctc3RvcmVz
IGZvciBkaXJlY3RseSBjb21wb3NpdGVkIGltYWdlcyBpcyBoYW5kbGVkIGluIExheWVyVHJlZUhv
c3QuCi0gICAgaWYgKG1faW1hZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICAvLyBUaGUgcmVtb3Rl
IGltYWdlIG1pZ2h0IGhhdmUgYmVlbiByZWxlYXNlZCBieSBwdXJnZUJhY2tpbmdTdG9yZXMuCisg
ICAgaWYgKG1faW1hZ2UpIHsKKyAgICAgICAgaWYgKCFtX2xheWVySW5mby5pbWFnZUJhY2tpbmdT
dG9yZUlEKSB7CisgICAgICAgICAgICBtX2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEID0g
bV93ZWJHcmFwaGljc0xheWVyQ2xpZW50LT5hZG9wdEltYWdlQmFja2luZ1N0b3JlKG1faW1hZ2Uu
Z2V0KCkpOworICAgICAgICAgICAgbV9sYXllckluZm8uaW1hZ2VJc1VwZGF0ZWQgPSB0cnVlOwor
ICAgICAgICB9CisgICAgfQogCi0gICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKKyAgICBpZiAoIWRy
YXdzQ29udGVudCgpKSB7CisgICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZS5jbGVhcigpOworICAg
ICAgICBtX3ByZXZpb3VzQmFja2luZ1N0b3JlLmNsZWFyKCk7CiAgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKICAgICBtX2luVXBkYXRlTW9kZSA9IHRydWU7CisgICAgLy8gVGhpcyBpcyB0aGUgb25s
eSBwbGFjZSB3ZSAocmUpY3JlYXRlIHRoZSBtYWluIHRpbGVkIGJhY2tpbmcgc3RvcmUsCisgICAg
Ly8gb25jZSB3ZSBoYXZlIGEgcmVtb3RlIGNsaWVudCBhbmQgd2UgYXJlIHJlYWR5IHRvIHNlbmQg
b3VyIGRhdGEgdG8gdGhlIFVJIHByb2Nlc3MuCisgICAgaWYgKCFtX21haW5CYWNraW5nU3RvcmUp
IHsKKyAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlID0gYWRvcHRQdHIobmV3IFRpbGVkQmFja2lu
Z1N0b3JlKHRoaXMsIFRpbGVkQmFja2luZ1N0b3JlUmVtb3RlVGlsZUJhY2tlbmQ6OmNyZWF0ZSh0
aGlzKSkpOworICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPnNldENvbnRlbnRzU2NhbGUobV9j
b250ZW50c1NjYWxlKTsKKyAgICB9CiAgICAgbV9tYWluQmFja2luZ1N0b3JlLT51cGRhdGVUaWxl
QnVmZmVycygpOwogICAgIG1faW5VcGRhdGVNb2RlID0gZmFsc2U7CiB9CiAKIHZvaWQgV2ViR3Jh
cGhpY3NMYXllcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKIHsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgV2ViR3JhcGhpY3NMYXll
ciogbGF5ZXIgPSB0b1dlYkdyYXBoaWNzTGF5ZXIodGhpcy0+Y2hpbGRyZW4oKVtpXSk7Ci0gICAg
ICAgIGxheWVyLT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsKLSAgICB9CisgICAgbV9tYWluQmFja2lu
Z1N0b3JlLmNsZWFyKCk7CisgICAgbV9wcmV2aW91c0JhY2tpbmdTdG9yZS5jbGVhcigpOwogCi0g
ICAgaWYgKFdlYkdyYXBoaWNzTGF5ZXIqIG1hc2sgPSB0b1dlYkdyYXBoaWNzTGF5ZXIobWFza0xh
eWVyKCkpKQotICAgICAgICBtYXNrLT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsKLQotICAgIGlmICht
X21haW5CYWNraW5nU3RvcmUpCi0gICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZS5jbGVhcigpOwot
Ci0gICAgaWYgKCFtX2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPnJlbGVhc2VJbWFnZUJhY2tpbmdT
dG9yZShtX2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEKTsKLSAgICBtX2xheWVySW5mby5p
bWFnZUJhY2tpbmdTdG9yZUlEID0gMDsKLX0KLQotdm9pZCBXZWJHcmFwaGljc0xheWVyOjpyZWNy
ZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgV2ViR3JhcGhpY3NMYXllciogbGF5
ZXIgPSB0b1dlYkdyYXBoaWNzTGF5ZXIodGhpcy0+Y2hpbGRyZW4oKVtpXSk7Ci0gICAgICAgIGxh
eWVyLT5yZWNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7Ci0gICAgfQotICAgIGlmIChXZWJH
cmFwaGljc0xheWVyKiBtYXNrID0gdG9XZWJHcmFwaGljc0xheWVyKG1hc2tMYXllcigpKSkKLSAg
ICAgICAgbWFzay0+cmVjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwotCi0gICAgaWYgKCFt
X21haW5CYWNraW5nU3RvcmUpIHsKLSAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlID0gYWRvcHRQ
dHIobmV3IFRpbGVkQmFja2luZ1N0b3JlKHRoaXMsIFRpbGVkQmFja2luZ1N0b3JlUmVtb3RlVGls
ZUJhY2tlbmQ6OmNyZWF0ZSh0aGlzKSkpOwotICAgICAgICBtX21haW5CYWNraW5nU3RvcmUtPnNl
dENvbnRlbnRzU2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAgICBpZiAobV9sYXllckluZm8uaW1h
Z2VCYWNraW5nU3RvcmVJRCkgeworICAgICAgICBtX3dlYkdyYXBoaWNzTGF5ZXJDbGllbnQtPnJl
bGVhc2VJbWFnZUJhY2tpbmdTdG9yZShtX2xheWVySW5mby5pbWFnZUJhY2tpbmdTdG9yZUlEKTsK
KyAgICAgICAgbV9sYXllckluZm8uaW1hZ2VCYWNraW5nU3RvcmVJRCA9IDA7CiAgICAgfQotCi0g
ICAgaWYgKG1faW1hZ2UpCi0gICAgICAgIHNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCk7CiB9CiAK
IHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c2V0V2ViR3JhcGhpY3NMYXllckNsaWVudChXZWJLaXQ6
OldlYkdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKQEAgLTYzOSw5ICs2MTUsMTEgQEAgdm9p
ZCBXZWJHcmFwaGljc0xheWVyOjpzZXRXZWJHcmFwaGljc0xheWVyQ2xpZW50KFdlYktpdDo6V2Vi
R3JhcGhpY3NMYXllckNsaWVudCoKICAgICAgICAgbGF5ZXItPnNldFdlYkdyYXBoaWNzTGF5ZXJD
bGllbnQoY2xpZW50KTsKICAgICB9CiAKLSAgICAvLyBIYXZlIHRvIGZvcmNlIGRldGFjaCBmcm9t
IHJlbW90ZSBsYXllciBoZXJlIGlmIGxheWVyIHRpbGUgY2xpZW50IGNoYW5nZXMuCi0gICAgaWYg
KG1fd2ViR3JhcGhpY3NMYXllckNsaWVudCkKKyAgICAvLyBXZSBoYXZlIHRvIHJlbGVhc2UgcmVz
b3VyY2VzIG9uIHRoZSBVSSBwcm9jZXNzIGhlcmUgaWYgdGhlIHJlbW90ZSBjbGllbnQgaGFzIGNo
YW5nZWQgb3IgaXMgcmVtb3ZlZC4KKyAgICBpZiAobV93ZWJHcmFwaGljc0xheWVyQ2xpZW50KSB7
CisgICAgICAgIHB1cmdlQmFja2luZ1N0b3JlcygpOwogICAgICAgICBtX3dlYkdyYXBoaWNzTGF5
ZXJDbGllbnQtPmRldGFjaExheWVyKHRoaXMpOworICAgIH0KICAgICBtX3dlYkdyYXBoaWNzTGF5
ZXJDbGllbnQgPSBjbGllbnQ7CiAgICAgaWYgKGNsaWVudCkKICAgICAgICAgY2xpZW50LT5hdHRh
Y2hMYXllcih0aGlzKTsKQEAgLTY1OCw3ICs2MzYsOCBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6
OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAgICBtX2xheWVyVHJhbnNmb3JtLnNl
dENoaWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNmb3JtKCkpOwogICAgIG1fbGF5ZXJUcmFu
c2Zvcm0uY29tYmluZVRyYW5zZm9ybXMocGFyZW50KCkgPyB0b1dlYkdyYXBoaWNzTGF5ZXIocGFy
ZW50KCkpLT5tX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkRm9yQ2hpbGRyZW4oKSA6IFRyYW5zZm9y
bWF0aW9uTWF0cml4KCkpOwogICAgIC8vIFRoZSBjb21iaW5lZCB0cmFuc2Zvcm0gd2lsbCBiZSB1
c2VkIGluIHRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJlY3QuCi0gICAgbV9tYWluQmFja2luZ1N0
b3JlLT5hZGp1c3RWaXNpYmxlUmVjdCgpOworICAgIGlmIChtX21haW5CYWNraW5nU3RvcmUpCisg
ICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZS0+YWRqdXN0VmlzaWJsZVJlY3QoKTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oCmluZGV4IGUzYzFmY2ZlYTAxYjNkMGU5ZWZkYjk1ZmM3
MTM1NTNmMDgzNzgwNjcuLjVlMDJhNDk5ZjIxMmM5YzdhMDQ3MTczMzM0YTQzZDhmZjJlNTAyNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
R3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oCkBAIC0xNDAsNyArMTQwLDYgQEAgcHVibGljOgogICAg
IGJvb2wgaXNSZWFkeUZvclRpbGVCdWZmZXJTd2FwKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVD
b250ZW50QnVmZmVycygpOwogICAgIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0gICAgdm9p
ZCByZWNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVI
b3N0UXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJl
ZUhvc3RRdC5jcHAKaW5kZXggMDk4YWQ3MDQwNzdlNzdkN2Q0Yzk0MDI0ODNmMmE1ODlhOGNlYzI4
Yy4uMDE3M2JiOGUxNWJkY2JiYzM0YmUzODU0YjdmYzYzZTU1YzZkZTUxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RR
dC5jcHAKQEAgLTc0LDcgKzc0LDYgQEAgTGF5ZXJUcmVlSG9zdFF0OjpMYXllclRyZWVIb3N0UXQo
V2ViUGFnZSogd2ViUGFnZSkKICAgICAsIG1fc2hvdWxkU3luY1Jvb3RMYXllcih0cnVlKQogICAg
ICwgbV9sYXllckZsdXNoVGltZXIodGhpcywgJkxheWVyVHJlZUhvc3RRdDo6bGF5ZXJGbHVzaFRp
bWVyRmlyZWQpCiAgICAgLCBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCh0cnVlKQotICAg
ICwgbV9zaG91bGRSZWNyZWF0ZUJhY2tpbmdTdG9yZShmYWxzZSkKIHsKICAgICAvLyBDcmVhdGUg
YSByb290IGxheWVyLgogICAgIG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRo
aXMpOwpAQCAtMjIxLDggKzIyMCw2IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpzZXRQYWdlT3Zl
cmxheU5lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogCiBib29sIExh
eWVyVHJlZUhvc3RRdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIHsKLSAgICByZWNyZWF0
ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7Ci0KICAgICBib29sIGRpZFN5bmMgPSBtX3dlYlBhZ2Ut
PmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnN5bmNDb21wb3NpdGluZ1N0YXRlSW5j
bHVkaW5nU3ViZnJhbWVzKCk7CiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zeW5j
Q29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKICAgICBpZiAobV9wYWdlT3Zlcmxh
eUxheWVyKQpAQCAtNDExLDYgKzQwOCw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFF0Ojp1cGRhdGVU
aWxlKFdlYkxheWVySUQgbGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgVXBkYXRlSW5mCiB7CiAg
ICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVIb3N0UHJveHk6OlVwZGF0ZVRp
bGVGb3JMYXllcihsYXllcklELCB0aWxlSUQsIHVwZGF0ZUluZm8pKTsKIH0KKwogdm9pZCBMYXll
clRyZWVIb3N0UXQ6OnJlbW92ZVRpbGUoV2ViTGF5ZXJJRCBsYXllcklELCBpbnQgdGlsZUlEKQog
ewogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlSG9zdFByb3h5OjpSZW1v
dmVUaWxlRm9yTGF5ZXIobGF5ZXJJRCwgdGlsZUlEKSk7CkBAIC00NDcsMjIgKzQ0NSwxMiBAQCBi
b29sIExheWVyVHJlZUhvc3RRdDo6bGF5ZXJUcmVlVGlsZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3QK
IAogdm9pZCBMYXllclRyZWVIb3N0UXQ6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7Ci0gICAgbV9z
aG91bGRSZWNyZWF0ZUJhY2tpbmdTdG9yZSA9IHRydWU7Ci0gICAgV2ViR3JhcGhpY3NMYXllciog
d2ViUm9vdExheWVyID0gdG9XZWJHcmFwaGljc0xheWVyKG1fcm9vdExheWVyLmdldCgpKTsKLSAg
ICB3ZWJSb290TGF5ZXItPnB1cmdlQmFja2luZ1N0b3JlcygpOworICAgIEhhc2hTZXQ8V2ViQ29y
ZTo6V2ViR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMu
ZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6OldlYkdyYXBoaWNzTGF5ZXIqPjo6aXRl
cmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQor
ICAgICAgICAoKml0KS0+cHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAKICAgICBBU1NFUlQoIW1fZGly
ZWN0bHlDb21wb3NpdGVkSW1hZ2VSZWZDb3VudHMuc2l6ZSgpKTsKIH0KLQotdm9pZCBMYXllclRy
ZWVIb3N0UXQ6OnJlY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQotewotICAgIGlmICghbV9z
aG91bGRSZWNyZWF0ZUJhY2tpbmdTdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zaG91
bGRSZWNyZWF0ZUJhY2tpbmdTdG9yZSA9IGZhbHNlOwotICAgIFdlYkdyYXBoaWNzTGF5ZXIqIHdl
YlJvb3RMYXllciA9IHRvV2ViR3JhcGhpY3NMYXllcihtX3Jvb3RMYXllci5nZXQoKSk7Ci0gICAg
d2ViUm9vdExheWVyLT5yZWNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7Ci19CiAjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmgKaW5kZXggZTE4MTFjYzI1MmYzZWQ3
OTMyNDIwOTBlZWI1MDg5NTcxMjQ3M2EyNC4uMzEzNTU5OWYyOTI2OWFhMmFmMzI5MDQ4NzEyMjUw
MWE1MzcwZjY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L3F0L0xheWVyVHJlZUhvc3RRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9xdC9MYXllclRyZWVIb3N0UXQuaApAQCAtOTcsNyArOTcsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKICAgICB2b2lkIHBlcmZvcm1TY2hlZHVs
ZWRMYXllckZsdXNoKCk7CiAgICAgdm9pZCBzZW5kTGF5ZXJzVG9VSSgpOwotICAgIHZvaWQgcmVj
cmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwogCiAgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI+IG1fcm9vdExheWVyOwogCkBAIC0xMjQsNyArMTIzLDYgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGxheWVyRmx1c2hUaW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPExheWVyVHJlZUhvc3RR
dD4qKTsKICAgICBXZWJDb3JlOjpUaW1lcjxMYXllclRyZWVIb3N0UXQ+IG1fbGF5ZXJGbHVzaFRp
bWVyOwogICAgIGJvb2wgbV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQ7Ci0gICAgYm9vbCBt
X3Nob3VsZFJlY3JlYXRlQmFja2luZ1N0b3JlOwogfTsKIAogfQo=
</data>
<flag name="review"
          id="128045"
          type_id="1"
          status="+"
          setter="noam"
    />
          </attachment>
      

    </bug>

</bugzilla>