<?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>101841</bug_id>
          
          <creation_ts>2012-11-10 10:04:14 -0800</creation_ts>
          <short_desc>Web Inspector: migrate text editor to mutation observers</short_desc>
          <delta_ts>2012-11-13 02:13:29 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>101939</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ossy</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>763670</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-10 10:04:14 -0800</bug_when>
    <thetext>Otherwise, we miss notifications on the removed lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763672</commentid>
    <comment_count>1</comment_count>
      <attachid>173456</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-10 10:07:56 -0800</bug_when>
    <thetext>Created attachment 173456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763793</commentid>
    <comment_count>2</comment_count>
      <attachid>173488</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-10 23:06:18 -0800</bug_when>
    <thetext>Created attachment 173488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763833</commentid>
    <comment_count>3</comment_count>
      <attachid>173501</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-11 05:52:09 -0800</bug_when>
    <thetext>Created attachment 173501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764233</commentid>
    <comment_count>4</comment_count>
      <attachid>173501</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-12 03:50:14 -0800</bug_when>
    <thetext>Comment on attachment 173501
Patch

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

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2080
&gt; +        if (false) // For paint debugging.

Maybe add a debug flag at the top of this file?

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2317
&gt; +        // console.log(this.element.innerText === this._textModel.text() + &quot;\n&quot;);

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764286</commentid>
    <comment_count>5</comment_count>
      <attachid>173626</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-12 05:03:50 -0800</bug_when>
    <thetext>Created attachment 173626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764289</commentid>
    <comment_count>6</comment_count>
      <attachid>173626</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-12 05:10:33 -0800</bug_when>
    <thetext>Comment on attachment 173626
Patch

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

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2147
&gt; +            if (mutation.addedNodes.length === 1 &amp;&amp; mutation.addedNodes[0].nodeName === &quot;BR&quot;)

remove br check?

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2211
&gt;              // Ensure that the newly inserted line row has no lineNumber.

Shouldn&apos;t it be assert?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764303</commentid>
    <comment_count>7</comment_count>
      <attachid>173626</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-11-12 05:27:35 -0800</bug_when>
    <thetext>Comment on attachment 173626
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2211
&gt;&gt;              // Ensure that the newly inserted line row has no lineNumber.
&gt; 
&gt; Shouldn&apos;t it be assert?

This is to remove the lineNumber property from a line row being detached from the DOM, as it may be (and will be) cached for a future reuse, and we don&apos;t ever want to reuse it with a wrong lineNumber attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764306</commentid>
    <comment_count>8</comment_count>
      <attachid>173626</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-11-12 05:31:38 -0800</bug_when>
    <thetext>Comment on attachment 173626
Patch

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

&gt;&gt;&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2211
&gt;&gt;&gt;              // Ensure that the newly inserted line row has no lineNumber.
&gt;&gt; 
&gt;&gt; Shouldn&apos;t it be assert?
&gt; 
&gt; This is to remove the lineNumber property from a line row being detached from the DOM, as it may be (and will be) cached for a future reuse, and we don&apos;t ever want to reuse it with a wrong lineNumber attribute.

ah we insert a line row here, I missed this... I guess we can get wrong lineNumbers after a drag&apos;n&apos;drop of a peace of code in the editor from one place to another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764309</commentid>
    <comment_count>9</comment_count>
      <attachid>173626</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-11-12 05:34:24 -0800</bug_when>
    <thetext>Comment on attachment 173626
Patch

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

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2080
&gt; +        if (false) // For paint debugging.

remove?

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2186
&gt; +        // Debug check for validating whether text model matches the DOM representation.

meant to leave this comment?

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2320
&gt;          // This is a &quot;foreign&quot; call outside of this class. Should be before we delete the dirty lines flag.

this comment is no longer valid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764355</commentid>
    <comment_count>10</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-12 06:35:29 -0800</bug_when>
    <thetext>Committed r134223: &lt;http://trac.webkit.org/changeset/134223&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764438</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 08:10:05 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 101939</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765345</commentid>
    <comment_count>12</comment_count>
      <attachid>173841</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-13 00:31:42 -0800</bug_when>
    <thetext>Created attachment 173841
[Patch] for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765349</commentid>
    <comment_count>13</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-13 00:35:08 -0800</bug_when>
    <thetext>Committed r134379: &lt;http://trac.webkit.org/changeset/134379&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765407</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-13 02:10:57 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Committed r134379: &lt;http://trac.webkit.org/changeset/134379&gt;

It broke zillion tests at least on Qt - http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Release/r134382%20%2845038%29/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765410</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-11-13 02:13:29 -0800</bug_when>
    <thetext>It seems the root of the problem is that mutation observers is disabled on Qt.
Is there a reason why is it disabled?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173456</attachid>
            <date>2012-11-10 10:07:56 -0800</date>
            <delta_ts>2012-11-10 23:06:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101841-20121110220601.patch</filename>
            <type>text/plain</type>
            <size>6478</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU1YzMwZjU2ZDcwOTEx
YjhmN2Q0ZGE4NDE1MTNlMDAyNTQ3YzVmMi4uOTljNmU2YjUwZmZmODZiNmJmOGZiMTI4OWY5MGZl
MmJjZWRjMTMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTExLTEwICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1pZ3JhdGUgdGV4dCBlZGl0b3IgdG8gbXV0YXRpb24gb2JzZXJ2ZXJzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE4NDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdGhlcndpc2UsIHdlIG1pc3Mg
bm90aWZpY2F0aW9ucyBvbiB0aGUgcmVtb3ZlZCBsaW5lcy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1h
aW5QYW5lbC5wcm90b3R5cGUuYmVnaW5Eb21VcGRhdGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5lbmREb21VcGRhdGVzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFuZGxlTXV0YXRp
b25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlw
ZS5faGFuZGxlTXV0YXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJu
cy5qczoKKyAgICAgICAgKFdlYktpdE11dGF0aW9uKToKKyAgICAgICAgKFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIucHJvdG90eXBlLm9ic2VydmUpOgorICAgICAgICAoV2ViS2l0TXV0YXRpb25PYnNl
cnZlci5wcm90b3R5cGUuZGlzY29ubmVjdCk6CisKIDIwMTItMTEtMDkgIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgbGlzdCBvZiB0cmFja3MgaW4gY2Fw
dGlvbiBtZWRpYSBjb250cm9scwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKaW5kZXggNWM2ODAxZThjZDVjZGYwZGY1
ZjA3NjYwZTE5ZWY5ZDdlYWM3MTUwYS4uNGE4NDM4ZGRhNGU3ZTQ3N2FhN2VjMTIxNDcyYmEzN2Vk
ZTBmZGIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZWZhdWx0VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCkBAIC0xMjY2LDEzICsxMjY2LDkgQEAgV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3JNYWluUGFuZWwgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgdGV4dE1vZGVsLCB1
cmwsIHN5bmNTY3JvbGwKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xs
IiwgdGhpcy5fc2Nyb2xsLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLmVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9oYW5kbGVFbGVtZW50Rm9jdXMuYmluZCh0aGlz
KSwgZmFsc2UpOwogCi0gICAgLy8gT1BUSU1JWkFUSU9OLiBJdCBpcyB2ZXJ5IGV4cGVuc2l2ZSB0
byBsaXN0ZW4gdG8gdGhlIERPTSBtdXRhdGlvbiBldmVudHMsIHRodXMgd2UgcmVtb3ZlIHRoZQot
ICAgIC8vIGxpc3RlbmVycyB3aGVuZXZlciB3ZSBkbyBhbnkgaW50ZXJuYWwgRE9NIG1hbmlwdWxh
dGlvbnMgKHN1Y2ggYXMgZXhwYW5kL2NvbGxhcHNlIGxpbmUgcm93cykKLSAgICAvLyBhbmQgc2V0
IHRoZSBsaXN0ZW5lcnMgYmFjayB3aGVuIHdlIGFyZSBmaW5pc2hlZC4KLSAgICB0aGlzLl9oYW5k
bGVET01VcGRhdGVzQ2FsbGJhY2sgPSB0aGlzLl9oYW5kbGVET01VcGRhdGVzLmJpbmQodGhpcyk7
Ci0gICAgdGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNoYXJhY3RlckRhdGFN
b2RpZmllZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywgZmFsc2UpOwotICAgIHRo
aXMuX2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlSW5zZXJ0ZWQiLCB0aGlzLl9o
YW5kbGVET01VcGRhdGVzQ2FsbGJhY2ssIGZhbHNlKTsKLSAgICB0aGlzLl9jb250YWluZXIuYWRk
RXZlbnRMaXN0ZW5lcigiRE9NU3VidHJlZU1vZGlmaWVkIiwgdGhpcy5faGFuZGxlRE9NVXBkYXRl
c0NhbGxiYWNrLCBmYWxzZSk7CisgICAgdGhpcy5fbXV0YXRpb25PYnNlcnZlciA9IG5ldyBXZWJL
aXRNdXRhdGlvbk9ic2VydmVyKHRoaXMuX2hhbmRsZU11dGF0aW9ucy5iaW5kKHRoaXMpKTsKKyAg
ICB0aGlzLl9tdXRhdGlvbk9ic2VydmVyLm9wdGlvbnMgPSB7IHN1YnRyZWU6IHRydWUsIGNoaWxk
TGlzdDogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9OworICAgIHRoaXMuX211dGF0aW9uT2Jz
ZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9jb250YWluZXIsIHRoaXMuX211dGF0aW9uT2JzZXJ2ZXIub3B0
aW9ucyk7CiAKICAgICB0aGlzLl9mcmVlQ2FjaGVkRWxlbWVudHMoKTsKICAgICB0aGlzLl9idWls
ZENodW5rcygpOwpAQCAtMTY2OCwyMiArMTY2NCwxNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBiZWdpbkRvbVVwZGF0ZXM6IGZ1bmN0aW9u
KCkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZG9tVXBkYXRlQ29hbGVzY2luZ0xldmVsKQor
ICAgICAgICAgICAgdGhpcy5fbXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnByb3RvdHlwZS5iZWdpbkRvbVVw
ZGF0ZXMuY2FsbCh0aGlzKTsKLSAgICAgICAgaWYgKHRoaXMuX2RvbVVwZGF0ZUNvYWxlc2NpbmdM
ZXZlbCA9PT0gMSkgewotICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLnJlbW92ZUV2ZW50TGlz
dGVuZXIoIkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0ZXND
YWxsYmFjaywgZmFsc2UpOwotICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLnJlbW92ZUV2ZW50
TGlzdGVuZXIoIkRPTU5vZGVJbnNlcnRlZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFj
aywgZmFsc2UpOwotICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoIkRPTVN1YnRyZWVNb2RpZmllZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywg
ZmFsc2UpOwotICAgICAgICB9CiAgICAgfSwKIAogICAgIGVuZERvbVVwZGF0ZXM6IGZ1bmN0aW9u
KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yQ2h1bmtlZFBhbmVsLnBy
b3RvdHlwZS5lbmREb21VcGRhdGVzLmNhbGwodGhpcyk7Ci0gICAgICAgIGlmICh0aGlzLl9kb21V
cGRhdGVDb2FsZXNjaW5nTGV2ZWwgPT09IDApIHsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5l
ci5hZGRFdmVudExpc3RlbmVyKCJET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiLCB0aGlzLl9oYW5k
bGVET01VcGRhdGVzQ2FsbGJhY2ssIGZhbHNlKTsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5l
ci5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlSW5zZXJ0ZWQiLCB0aGlzLl9oYW5kbGVET01VcGRh
dGVzQ2FsbGJhY2ssIGZhbHNlKTsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5hZGRFdmVu
dExpc3RlbmVyKCJET01TdWJ0cmVlTW9kaWZpZWQiLCB0aGlzLl9oYW5kbGVET01VcGRhdGVzQ2Fs
bGJhY2ssIGZhbHNlKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIXRoaXMuX2RvbVVwZGF0ZUNv
YWxlc2NpbmdMZXZlbCkKKyAgICAgICAgICAgIHRoaXMuX211dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2
ZSh0aGlzLl9jb250YWluZXIsIHRoaXMuX211dGF0aW9uT2JzZXJ2ZXIub3B0aW9ucyk7CiAgICAg
fSwKIAogICAgIF9idWlsZENodW5rczogZnVuY3Rpb24oKQpAQCAtMjE1MCwxNSArMjE0MCwyNCBA
QCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHJldHVybiBzcGFuOwogICAgIH0sCiAKLSAgICBfaGFuZGxlRE9NVXBkYXRlczogZnVuY3Rpb24o
ZSkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJLaXRNdXRhdGlvbj59IG11dGF0
aW9ucworICAgICAqLworICAgIF9oYW5kbGVNdXRhdGlvbnM6IGZ1bmN0aW9uKG11dGF0aW9ucykK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kb21VcGRhdGVDb2FsZXNjaW5nTGV2ZWwpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0OwotICAgICAg
ICBpZiAodGFyZ2V0ID09PSB0aGlzLl9jb250YWluZXIpCi0gICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXV0YXRpb25zLmxlbmd0aDsgKytpKQorICAgICAg
ICAgICAgdGhpcy5faGFuZGxlTXV0YXRpb24obXV0YXRpb25zW2ldKTsKKyAgICB9LAogCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtXZWJLaXRNdXRhdGlvbn0gbXV0YXRpb24KKyAgICAgKi8KKyAg
ICBfaGFuZGxlTXV0YXRpb246IGZ1bmN0aW9uKG11dGF0aW9uKQorICAgIHsKKyAgICAgICAgdmFy
IHRhcmdldCA9IG11dGF0aW9uLnRhcmdldDsKICAgICAgICAgdmFyIGxpbmVSb3cgPSB0aGlzLl9l
bmNsb3NpbmdMaW5lUm93T3JTZWxmKHRhcmdldCk7CiAgICAgICAgIGlmICghbGluZVJvdykKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTIxNzIsNyArMjE3MSw3IEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX3JlYWRPbmx5
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0YXJnZXQgPT09IGxpbmVSb3cg
JiYgZS50eXBlID09PSAiRE9NTm9kZUluc2VydGVkIikgeworICAgICAgICBpZiAodGFyZ2V0ID09
PSBsaW5lUm93ICYmIG11dGF0aW9uLnR5cGUgPT09ICJjaGlsZExpc3QiICYmIG11dGF0aW9uLmFk
ZGVkTm9kZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgbmV3bHkg
aW5zZXJ0ZWQgbGluZSByb3cgaGFzIG5vIGxpbmVOdW1iZXIuCiAgICAgICAgICAgICBkZWxldGUg
bGluZVJvdy5saW5lTnVtYmVyOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKaW5kZXggYTA2Y2U5ZTI2ZjczY2M0OWRmNGY5NmE0YzMw
MDRlMDdmNjYyYjc3OS4uNTYxMTkzOGE4OTNkMzRkZWVkN2IzZDlhYTVlNmE2YjhkYTRiNWQ5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcwpAQCAt
NjMsNiArNjMsMjkgQEAgd2luZG93LmdldENvbXB1dGVkU3R5bGUgPSBmdW5jdGlvbihlbGVtZW50
KSB7fQogZnVuY3Rpb24gcG9zdE1lc3NhZ2UobWVzc2FnZSkge30KIAogLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqLworZnVuY3Rpb24gV2ViS2l0TXV0YXRpb24oY2FsbGJhY2spCit7CisgICAgdGhp
cy50eXBlID0gIiI7CisgICAgLyoqIEB0eXBlIHtOb2RlfSAqLyB0aGlzLnRhcmdldCA9IG51bGw7
CisgICAgLyoqIEB0eXBlIHtBcnJheS48Tm9kZT59ICovIHRoaXMuYWRkZWROb2RlcyA9IFtdOwor
ICAgIC8qKiBAdHlwZSB7QXJyYXkuPE5vZGU+fSAqLyB0aGlzLnJlbW92ZWROb2RlcyA9IFtdOwor
fQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48V2Vi
S2l0TXV0YXRpb24+KX0gY2FsbGJhY2sKKyAqLworZnVuY3Rpb24gV2ViS2l0TXV0YXRpb25PYnNl
cnZlcihjYWxsYmFjaykge30KKy8qKiAKKyAqIEBwYXJhbSB7Tm9kZX0gY29udGFpbmVyCisgKiBA
cGFyYW0ge09iamVjdH0gb3B0aW9ucworICovCitXZWJLaXRNdXRhdGlvbk9ic2VydmVyLnByb3Rv
dHlwZS5vYnNlcnZlID0gZnVuY3Rpb24oY29udGFpbmVyLCBvcHRpb25zKSB7fQorV2ViS2l0TXV0
YXRpb25PYnNlcnZlci5wcm90b3R5cGUuZGlzY29ubmVjdCA9IGZ1bmN0aW9uKCkge30KKworLyoq
CiAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lCiAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBsaXN0
ZW5lcgogICogQHBhcmFtIHtib29sZWFuPX0gY2FwdHVyaW5nCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173488</attachid>
            <date>2012-11-10 23:06:18 -0800</date>
            <delta_ts>2012-11-11 05:52:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101841-20121111110419.patch</filename>
            <type>text/plain</type>
            <size>12823</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU1YzMwZjU2ZDcwOTEx
YjhmN2Q0ZGE4NDE1MTNlMDAyNTQ3YzVmMi4uOTljNmU2YjUwZmZmODZiNmJmOGZiMTI4OWY5MGZl
MmJjZWRjMTMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTExLTEwICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1pZ3JhdGUgdGV4dCBlZGl0b3IgdG8gbXV0YXRpb24gb2JzZXJ2ZXJzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE4NDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdGhlcndpc2UsIHdlIG1pc3Mg
bm90aWZpY2F0aW9ucyBvbiB0aGUgcmVtb3ZlZCBsaW5lcy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1h
aW5QYW5lbC5wcm90b3R5cGUuYmVnaW5Eb21VcGRhdGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5lbmREb21VcGRhdGVzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFuZGxlTXV0YXRp
b25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlw
ZS5faGFuZGxlTXV0YXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJu
cy5qczoKKyAgICAgICAgKFdlYktpdE11dGF0aW9uKToKKyAgICAgICAgKFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIucHJvdG90eXBlLm9ic2VydmUpOgorICAgICAgICAoV2ViS2l0TXV0YXRpb25PYnNl
cnZlci5wcm90b3R5cGUuZGlzY29ubmVjdCk6CisKIDIwMTItMTEtMDkgIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgbGlzdCBvZiB0cmFja3MgaW4gY2Fw
dGlvbiBtZWRpYSBjb250cm9scwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKaW5kZXggNWM2ODAxZThjZDVjZGYwZGY1
ZjA3NjYwZTE5ZWY5ZDdlYWM3MTUwYS4uZDc4YWY4YzA5ZThiYmVjMGQ5NzI3OGE3Nzk1NmQ2NjNi
ODU2ZTQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZWZhdWx0VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCkBAIC04NzcsNyArODc3LDcgQEAgV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgZGVs
ZXRlIHRoaXMuX3JlcGFpbnRBbGxUaW1lcjsKIAotICAgICAgICBpZiAodGhpcy5fcGFpbnRDb2Fs
ZXNjaW5nTGV2ZWwgfHwgdGhpcy5fZGlydHlMaW5lcykKKyAgICAgICAgaWYgKHRoaXMuX3BhaW50
Q29hbGVzY2luZ0xldmVsKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciB2aXNp
YmxlRnJvbSA9IHRoaXMuZWxlbWVudC5zY3JvbGxUb3A7CkBAIC0xMjY2LDEzICsxMjY2LDkgQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgdGV4
dE1vZGVsLCB1cmwsIHN5bmNTY3JvbGwKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigic2Nyb2xsIiwgdGhpcy5fc2Nyb2xsLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9oYW5kbGVFbGVtZW50Rm9jdXMu
YmluZCh0aGlzKSwgZmFsc2UpOwogCi0gICAgLy8gT1BUSU1JWkFUSU9OLiBJdCBpcyB2ZXJ5IGV4
cGVuc2l2ZSB0byBsaXN0ZW4gdG8gdGhlIERPTSBtdXRhdGlvbiBldmVudHMsIHRodXMgd2UgcmVt
b3ZlIHRoZQotICAgIC8vIGxpc3RlbmVycyB3aGVuZXZlciB3ZSBkbyBhbnkgaW50ZXJuYWwgRE9N
IG1hbmlwdWxhdGlvbnMgKHN1Y2ggYXMgZXhwYW5kL2NvbGxhcHNlIGxpbmUgcm93cykKLSAgICAv
LyBhbmQgc2V0IHRoZSBsaXN0ZW5lcnMgYmFjayB3aGVuIHdlIGFyZSBmaW5pc2hlZC4KLSAgICB0
aGlzLl9oYW5kbGVET01VcGRhdGVzQ2FsbGJhY2sgPSB0aGlzLl9oYW5kbGVET01VcGRhdGVzLmJp
bmQodGhpcyk7Ci0gICAgdGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNoYXJh
Y3RlckRhdGFNb2RpZmllZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywgZmFsc2Up
OwotICAgIHRoaXMuX2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlSW5zZXJ0ZWQi
LCB0aGlzLl9oYW5kbGVET01VcGRhdGVzQ2FsbGJhY2ssIGZhbHNlKTsKLSAgICB0aGlzLl9jb250
YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiRE9NU3VidHJlZU1vZGlmaWVkIiwgdGhpcy5faGFuZGxl
RE9NVXBkYXRlc0NhbGxiYWNrLCBmYWxzZSk7CisgICAgdGhpcy5fbXV0YXRpb25PYnNlcnZlciA9
IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKHRoaXMuX2hhbmRsZU11dGF0aW9ucy5iaW5kKHRo
aXMpKTsKKyAgICB0aGlzLl9tdXRhdGlvbk9ic2VydmVyLm9wdGlvbnMgPSB7IHN1YnRyZWU6IHRy
dWUsIGNoaWxkTGlzdDogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9OworICAgIHRoaXMuX211
dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9jb250YWluZXIsIHRoaXMuX211dGF0aW9uT2Jz
ZXJ2ZXIub3B0aW9ucyk7CiAKICAgICB0aGlzLl9mcmVlQ2FjaGVkRWxlbWVudHMoKTsKICAgICB0
aGlzLl9idWlsZENodW5rcygpOwpAQCAtMTQwMywxNiArMTM5OSwxMyBAQCBXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgbWFya2Vk
TGluZSA9IHRoaXMuX3JhbmdlVG9NYXJrLnN0YXJ0TGluZTsKICAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl9yYW5nZVRvTWFyazsKICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgbWFya2VkIHJlZ2lv
biBpbW1lZGlhdGVseS4KLSAgICAgICAgICAgIGlmICghdGhpcy5fZGlydHlMaW5lcykgewotICAg
ICAgICAgICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVzKCk7Ci0gICAgICAgICAgICAgICAgdmFy
IGNodW5rID0gdGhpcy5jaHVua0ZvckxpbmUobWFya2VkTGluZSk7Ci0gICAgICAgICAgICAgICAg
dmFyIHdhc0V4cGFuZGVkID0gY2h1bmsuZXhwYW5kZWQ7Ci0gICAgICAgICAgICAgICAgY2h1bmsu
ZXhwYW5kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBjaHVuay51cGRhdGVDb2xsYXBzZWRM
aW5lUm93KCk7Ci0gICAgICAgICAgICAgICAgY2h1bmsuZXhwYW5kZWQgPSB3YXNFeHBhbmRlZDsK
LSAgICAgICAgICAgICAgICB0aGlzLmVuZERvbVVwZGF0ZXMoKTsKLSAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIHRoaXMuX3BhaW50TGluZXMobWFya2VkTGluZSwgbWFya2VkTGlu
ZSArIDEpOworICAgICAgICAgICAgdGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKKyAgICAgICAgICAg
IHZhciBjaHVuayA9IHRoaXMuY2h1bmtGb3JMaW5lKG1hcmtlZExpbmUpOworICAgICAgICAgICAg
dmFyIHdhc0V4cGFuZGVkID0gY2h1bmsuZXhwYW5kZWQ7CisgICAgICAgICAgICBjaHVuay5leHBh
bmRlZCA9IGZhbHNlOworICAgICAgICAgICAgY2h1bmsudXBkYXRlQ29sbGFwc2VkTGluZVJvdygp
OworICAgICAgICAgICAgY2h1bmsuZXhwYW5kZWQgPSB3YXNFeHBhbmRlZDsKKyAgICAgICAgICAg
IHRoaXMuZW5kRG9tVXBkYXRlcygpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHJhbmdlKSB7
CkBAIC0xNDY0LDkgKzE0NTcsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHRoaXMuX2RpcnR5TGluZXMpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KICAgICAgICAgdGhpcy5iZWdpblVwZGF0ZXMoKTsKIAogICAgICAg
ICBmdW5jdGlvbiBiZWZvcmUoKQpAQCAtMTQ5OCw5ICsxNDg4LDYgQEAgV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5yZWFkT25s
eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICh0aGlzLl9kaXJ0
eUxpbmVzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgICAgIHZhciBzZWxlY3Rp
b24gPSB0aGlzLl9nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKCFzZWxlY3Rpb24pCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjA2LDkgKzE1OTMsNiBAQCBXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnJlYWRP
bmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHRoaXMuX2Rp
cnR5TGluZXMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAgICAgdmFyIHJhbmdl
ID0gdGhpcy5fZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgIGlmICghcmFuZ2UpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNjY4LDIyICsxNjUyLDE2IEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIGJlZ2luRG9tVXBkYXRlczogZnVu
Y3Rpb24oKQogICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9kb21VcGRhdGVDb2FsZXNjaW5nTGV2
ZWwpCisgICAgICAgICAgICB0aGlzLl9tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlLmJlZ2lu
RG9tVXBkYXRlcy5jYWxsKHRoaXMpOwotICAgICAgICBpZiAodGhpcy5fZG9tVXBkYXRlQ29hbGVz
Y2luZ0xldmVsID09PSAxKSB7Ci0gICAgICAgICAgICB0aGlzLl9jb250YWluZXIucmVtb3ZlRXZl
bnRMaXN0ZW5lcigiRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkIiwgdGhpcy5faGFuZGxlRE9NVXBk
YXRlc0NhbGxiYWNrLCBmYWxzZSk7Ci0gICAgICAgICAgICB0aGlzLl9jb250YWluZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgdGhpcy5faGFuZGxlRE9NVXBkYXRlc0Nh
bGxiYWNrLCBmYWxzZSk7Ci0gICAgICAgICAgICB0aGlzLl9jb250YWluZXIucmVtb3ZlRXZlbnRM
aXN0ZW5lcigiRE9NU3VidHJlZU1vZGlmaWVkIiwgdGhpcy5faGFuZGxlRE9NVXBkYXRlc0NhbGxi
YWNrLCBmYWxzZSk7Ci0gICAgICAgIH0KICAgICB9LAogCiAgICAgZW5kRG9tVXBkYXRlczogZnVu
Y3Rpb24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFu
ZWwucHJvdG90eXBlLmVuZERvbVVwZGF0ZXMuY2FsbCh0aGlzKTsKLSAgICAgICAgaWYgKHRoaXMu
X2RvbVVwZGF0ZUNvYWxlc2NpbmdMZXZlbCA9PT0gMCkgewotICAgICAgICAgICAgdGhpcy5fY29u
dGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZCIsIHRoaXMu
X2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywgZmFsc2UpOwotICAgICAgICAgICAgdGhpcy5fY29u
dGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVJbnNlcnRlZCIsIHRoaXMuX2hhbmRsZURP
TVVwZGF0ZXNDYWxsYmFjaywgZmFsc2UpOwotICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmFk
ZEV2ZW50TGlzdGVuZXIoIkRPTVN1YnRyZWVNb2RpZmllZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0
ZXNDYWxsYmFjaywgZmFsc2UpOwotICAgICAgICB9CisgICAgICAgIGlmICghdGhpcy5fZG9tVXBk
YXRlQ29hbGVzY2luZ0xldmVsKQorICAgICAgICAgICAgdGhpcy5fbXV0YXRpb25PYnNlcnZlci5v
YnNlcnZlKHRoaXMuX2NvbnRhaW5lciwgdGhpcy5fbXV0YXRpb25PYnNlcnZlci5vcHRpb25zKTsK
ICAgICB9LAogCiAgICAgX2J1aWxkQ2h1bmtzOiBmdW5jdGlvbigpCkBAIC0xNzc5LDcgKzE3NTcs
NyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gUmVzY2hlZHVsZSB0aGUgdGltZXIgaWYgd2Ug
Y2FuIG5vdCBwYWludCB0aGUgbGluZXMgeWV0LCBvciB0aGUgdXNlciBpcyBzY3JvbGxpbmcuCi0g
ICAgICAgIGlmICh0aGlzLl9kaXJ0eUxpbmVzIHx8IHRoaXMuX3JlcGFpbnRBbGxUaW1lcikgewor
ICAgICAgICBpZiAodGhpcy5fcmVwYWludEFsbFRpbWVyKSB7CiAgICAgICAgICAgICB0aGlzLl9w
YWludFNjaGVkdWxlZExpbmVzVGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuX3BhaW50U2NoZWR1bGVk
TGluZXMuYmluZCh0aGlzKSwgNTApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0xODM4LDcgKzE4MTYsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHZhciBpbnZpc2libGVMaW5lUm93cyA9IFtdOwogICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxpbmVDaHVua3MubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAg
IHZhciBsaW5lQ2h1bmsgPSBsaW5lQ2h1bmtzW2ldOwotICAgICAgICAgICAgaWYgKHRoaXMuX2Rp
cnR5TGluZXMgfHwgdGhpcy5fc2NoZWR1bGVkUGFpbnRMaW5lcykgeworICAgICAgICAgICAgaWYg
KHRoaXMuX3NjaGVkdWxlZFBhaW50TGluZXMpIHsKICAgICAgICAgICAgICAgICB0aGlzLl9zY2hl
ZHVsZVBhaW50TGluZXMobGluZUNodW5rLnN0YXJ0TGluZSwgbGluZUNodW5rLmVuZExpbmUpOwog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMTg3OCwxMCArMTg1
Niw2IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICBfcGFpbnRMaW5lOiBmdW5jdGlvbihsaW5lUm93KQogICAgIHsKICAgICAgICAgdmFyIGxpbmVO
dW1iZXIgPSBsaW5lUm93LmxpbmVOdW1iZXI7Ci0gICAgICAgIGlmICh0aGlzLl9kaXJ0eUxpbmVz
KSB7Ci0gICAgICAgICAgICB0aGlzLl9zY2hlZHVsZVBhaW50TGluZXMobGluZU51bWJlciwgbGlu
ZU51bWJlciArIDEpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKICAgICAgICAg
dGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKICAgICAgICAgdHJ5IHsKQEAgLTIxNTAsMjkgKzIxMjQs
NTcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICByZXR1cm4gc3BhbjsKICAgICB9LAogCi0gICAgX2hhbmRsZURPTVVwZGF0ZXM6IGZ1bmN0
aW9uKGUpCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48V2ViS2l0TXV0YXRpb24+fSBt
dXRhdGlvbnMKKyAgICAgKi8KKyAgICBfaGFuZGxlTXV0YXRpb25zOiBmdW5jdGlvbihtdXRhdGlv
bnMpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZG9tVXBkYXRlQ29hbGVzY2luZ0xldmVsKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDsKLSAg
ICAgICAgaWYgKHRhcmdldCA9PT0gdGhpcy5fY29udGFpbmVyKQorICAgICAgICBpZiAodGhpcy5f
cmVhZE9ubHkpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgdmFyIGRpcnR5TGluZXM7
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXV0YXRpb25zLmxlbmd0aDsgKytpKSB7Cisg
ICAgICAgICAgICB2YXIgbGluZXMgPSB0aGlzLl9jb2xsZWN0RGlydHlMaW5lcyhtdXRhdGlvbnNb
aV0pOworICAgICAgICAgICAgaWYgKCFsaW5lcykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGlmICghZGlydHlMaW5lcykgeworICAgICAgICAgICAgICAgIGRpcnR5TGlu
ZXMgPSBsaW5lczsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGRpcnR5TGluZXMuc3RhcnQgPSBNYXRoLm1pbihkaXJ0eUxpbmVzLnN0YXJ0LCBs
aW5lcy5zdGFydCk7CisgICAgICAgICAgICBkaXJ0eUxpbmVzLmVuZCA9IE1hdGgubWF4KGRpcnR5
TGluZXMuZW5kLCBsaW5lcy5lbmQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRpcnR5TGlu
ZXMpIHsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9yYW5nZVRvTWFyazsKKyAgICAgICAgICAg
IHRoaXMuX2FwcGx5RG9tVXBkYXRlcyhkaXJ0eUxpbmVzKTsKKyAgICAgICAgfQorICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYktpdE11dGF0aW9ufSBtdXRhdGlvbgorICAgICAq
IEByZXR1cm4gez9PYmplY3R9CisgICAgICovCisgICAgX2NvbGxlY3REaXJ0eUxpbmVzOiBmdW5j
dGlvbihtdXRhdGlvbikKKyAgICB7CisgICAgICAgIHZhciB0YXJnZXQgPSBtdXRhdGlvbi50YXJn
ZXQ7CiAgICAgICAgIHZhciBsaW5lUm93ID0gdGhpcy5fZW5jbG9zaW5nTGluZVJvd09yU2VsZih0
YXJnZXQpOwogICAgICAgICBpZiAoIWxpbmVSb3cpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICBpZiAobGluZVJvdy5kZWNvcmF0aW9uc0Vs
ZW1lbnQgJiYgbGluZVJvdy5kZWNvcmF0aW9uc0VsZW1lbnQuaXNTZWxmT3JBbmNlc3Rvcih0YXJn
ZXQpKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fc3luY0RlY29yYXRpb25zRm9yTGluZUxpc3Rl
bmVyKQogICAgICAgICAgICAgICAgIHRoaXMuX3N5bmNEZWNvcmF0aW9uc0ZvckxpbmVMaXN0ZW5l
cihsaW5lUm93LmxpbmVOdW1iZXIpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
cmV0dXJuIG51bGw7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGhpcy5fcmVhZE9ubHkpCi0g
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICBp
ZiAodGFyZ2V0ID09PSBsaW5lUm93ICYmIGUudHlwZSA9PT0gIkRPTU5vZGVJbnNlcnRlZCIpIHsK
KyAgICAgICAgaWYgKHRhcmdldCA9PT0gbGluZVJvdyAmJiBtdXRhdGlvbi50eXBlID09PSAiY2hp
bGRMaXN0IiAmJiBtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCkgewogICAgICAgICAgICAgLy8g
RW5zdXJlIHRoYXQgdGhlIG5ld2x5IGluc2VydGVkIGxpbmUgcm93IGhhcyBubyBsaW5lTnVtYmVy
LgogICAgICAgICAgICAgZGVsZXRlIGxpbmVSb3cubGluZU51bWJlcjsKICAgICAgICAgfQpAQCAt
MjE5MiwzMSArMjE5NCwxNCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLQotICAgICAgICBpZiAodGhpcy5fZGlydHlMaW5lcykgewotICAgICAgICAgICAgdGhpcy5f
ZGlydHlMaW5lcy5zdGFydCA9IE1hdGgubWluKHRoaXMuX2RpcnR5TGluZXMuc3RhcnQsIHN0YXJ0
TGluZSk7Ci0gICAgICAgICAgICB0aGlzLl9kaXJ0eUxpbmVzLmVuZCA9IE1hdGgubWF4KHRoaXMu
X2RpcnR5TGluZXMuZW5kLCBlbmRMaW5lKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHRoaXMuX2RpcnR5TGluZXMgPSB7IHN0YXJ0OiBzdGFydExpbmUsIGVuZDogZW5kTGluZSB9Owot
ICAgICAgICAgICAgc2V0VGltZW91dCh0aGlzLl9hcHBseURvbVVwZGF0ZXMuYmluZCh0aGlzKSwg
MCk7Ci0gICAgICAgICAgICAvLyBSZW1vdmUgbWFya2VkIHJhbmdlcywgaWYgYW55LgotICAgICAg
ICAgICAgdGhpcy5tYXJrQW5kUmV2ZWFsUmFuZ2UobnVsbCk7Ci0gICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHsgc3RhcnQ6IHN0YXJ0TGluZSwgZW5kOiBlbmRMaW5lIH07CiAgICAgfSwKIAotICAg
IF9hcHBseURvbVVwZGF0ZXM6IGZ1bmN0aW9uKCkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge09i
amVjdH0gZGlydHlMaW5lcworICAgICAqLworICAgIF9hcHBseURvbVVwZGF0ZXM6IGZ1bmN0aW9u
KGRpcnR5TGluZXMpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2RpcnR5TGluZXMpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGVkaXRvciBoYWQgYmVl
biBzZXQgcmVhZE9ubHkgYnkgdGhlIG1vbWVudCB3aGVuIHRoaXMgYXN5bmMgY2FsbGJhY2sgZ290
IGV4ZWN1dGVkLgotICAgICAgICBpZiAodGhpcy5fcmVhZE9ubHkpIHsKLSAgICAgICAgICAgIGRl
bGV0ZSB0aGlzLl9kaXJ0eUxpbmVzOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmFyIGRpcnR5TGluZXMgPSB0aGlzLl9kaXJ0eUxpbmVzOwotCiAgICAgICAgIHZh
ciBmaXJzdENodW5rTnVtYmVyID0gdGhpcy5fY2h1bmtOdW1iZXJGb3JMaW5lKGRpcnR5TGluZXMu
c3RhcnQpOwogICAgICAgICB2YXIgc3RhcnRMaW5lID0gdGhpcy5fdGV4dENodW5rc1tmaXJzdENo
dW5rTnVtYmVyXS5zdGFydExpbmU7CiAgICAgICAgIHZhciBlbmRMaW5lID0gdGhpcy5fdGV4dE1v
ZGVsLmxpbmVzQ291bnQ7CkBAIC0yMjk0LDE5ICsyMjc5LDE1IEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBvbGRSYW5nZSA9
IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExp
bmUgLSAxLCBlbmRDb2x1bW4pOwogCiAgICAgICAgIHZhciBuZXdDb250ZW50ID0gbGluZXMuam9p
bigiXG4iKTsKLSAgICAgICAgaWYgKHRoaXMuX3RleHRNb2RlbC5jb3B5UmFuZ2Uob2xkUmFuZ2Up
ID09PSBuZXdDb250ZW50KSB7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fZGlydHlMaW5lczsK
KyAgICAgICAgaWYgKHRoaXMuX3RleHRNb2RlbC5jb3B5UmFuZ2Uob2xkUmFuZ2UpID09PSBuZXdD
b250ZW50KQogICAgICAgICAgICAgcmV0dXJuOyAvLyBOb29wCi0gICAgICAgIH0KIAogICAgICAg
ICBpZiAobGluZXMubGVuZ3RoID09PSAxICYmIGxpbmVzWzBdID09PSAifSIgJiYgb2xkUmFuZ2Uu
aXNFbXB0eSgpICYmIHNlbGVjdGlvbi5pc0VtcHR5KCkgJiYgIXRoaXMuX3RleHRNb2RlbC5saW5l
KG9sZFJhbmdlLmVuZExpbmUpLnRyaW0oKSkKICAgICAgICAgICAgIHRoaXMuX3VuaW5kZW50QWZ0
ZXJCbG9jayhvbGRSYW5nZSwgc2VsZWN0aW9uKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gVGhp
cyBpcyBhICJmb3JlaWduIiBjYWxsIG91dHNpZGUgb2YgdGhpcyBjbGFzcy4gU2hvdWxkIGJlIGJl
Zm9yZSB3ZSBkZWxldGUgdGhlIGRpcnR5IGxpbmVzIGZsYWcuCiAgICAgICAgIHRoaXMuX2VudGVy
VGV4dENoYW5nZU1vZGUoKTsKIAotICAgICAgICBkZWxldGUgdGhpcy5fZGlydHlMaW5lczsKLQog
ICAgICAgICB2YXIgbmV3UmFuZ2UgPSB0aGlzLl9lZGl0UmFuZ2Uob2xkUmFuZ2UsIG5ld0NvbnRl
bnQpOwogCiAgICAgICAgIHRoaXMuX3BhaW50U2NoZWR1bGVkTGluZXModHJ1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKaW5kZXggYTA2Y2U5ZTI2
ZjczY2M0OWRmNGY5NmE0YzMwMDRlMDdmNjYyYjc3OS4uNTYxMTkzOGE4OTNkMzRkZWVkN2IzZDlh
YTVlNmE2YjhkYTRiNWQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9leHRlcm5zLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvZXh0ZXJucy5qcwpAQCAtNjMsNiArNjMsMjkgQEAgd2luZG93LmdldENvbXB1dGVkU3R5bGUg
PSBmdW5jdGlvbihlbGVtZW50KSB7fQogZnVuY3Rpb24gcG9zdE1lc3NhZ2UobWVzc2FnZSkge30K
IAogLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gV2ViS2l0TXV0YXRpb24oY2Fs
bGJhY2spCit7CisgICAgdGhpcy50eXBlID0gIiI7CisgICAgLyoqIEB0eXBlIHtOb2RlfSAqLyB0
aGlzLnRhcmdldCA9IG51bGw7CisgICAgLyoqIEB0eXBlIHtBcnJheS48Tm9kZT59ICovIHRoaXMu
YWRkZWROb2RlcyA9IFtdOworICAgIC8qKiBAdHlwZSB7QXJyYXkuPE5vZGU+fSAqLyB0aGlzLnJl
bW92ZWROb2RlcyA9IFtdOworfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtm
dW5jdGlvbihBcnJheS48V2ViS2l0TXV0YXRpb24+KX0gY2FsbGJhY2sKKyAqLworZnVuY3Rpb24g
V2ViS2l0TXV0YXRpb25PYnNlcnZlcihjYWxsYmFjaykge30KKy8qKiAKKyAqIEBwYXJhbSB7Tm9k
ZX0gY29udGFpbmVyCisgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucworICovCitXZWJLaXRNdXRh
dGlvbk9ic2VydmVyLnByb3RvdHlwZS5vYnNlcnZlID0gZnVuY3Rpb24oY29udGFpbmVyLCBvcHRp
b25zKSB7fQorV2ViS2l0TXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGUuZGlzY29ubmVjdCA9IGZ1
bmN0aW9uKCkge30KKworLyoqCiAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lCiAgKiBAcGFy
YW0ge0Z1bmN0aW9ufSBsaXN0ZW5lcgogICogQHBhcmFtIHtib29sZWFuPX0gY2FwdHVyaW5nCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173501</attachid>
            <date>2012-11-11 05:52:09 -0800</date>
            <delta_ts>2012-11-12 05:03:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101841-20121111175012.patch</filename>
            <type>text/plain</type>
            <size>15526</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU1YzMwZjU2ZDcwOTEx
YjhmN2Q0ZGE4NDE1MTNlMDAyNTQ3YzVmMi4uOTljNmU2YjUwZmZmODZiNmJmOGZiMTI4OWY5MGZl
MmJjZWRjMTMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTExLTEwICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1pZ3JhdGUgdGV4dCBlZGl0b3IgdG8gbXV0YXRpb24gb2JzZXJ2ZXJzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE4NDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdGhlcndpc2UsIHdlIG1pc3Mg
bm90aWZpY2F0aW9ucyBvbiB0aGUgcmVtb3ZlZCBsaW5lcy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1h
aW5QYW5lbC5wcm90b3R5cGUuYmVnaW5Eb21VcGRhdGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5lbmREb21VcGRhdGVzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFuZGxlTXV0YXRp
b25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlw
ZS5faGFuZGxlTXV0YXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJu
cy5qczoKKyAgICAgICAgKFdlYktpdE11dGF0aW9uKToKKyAgICAgICAgKFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIucHJvdG90eXBlLm9ic2VydmUpOgorICAgICAgICAoV2ViS2l0TXV0YXRpb25PYnNl
cnZlci5wcm90b3R5cGUuZGlzY29ubmVjdCk6CisKIDIwMTItMTEtMDkgIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgbGlzdCBvZiB0cmFja3MgaW4gY2Fw
dGlvbiBtZWRpYSBjb250cm9scwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKaW5kZXggNWM2ODAxZThjZDVjZGYwZGY1
ZjA3NjYwZTE5ZWY5ZDdlYWM3MTUwYS4uOTYyYmU5NTY4MDQyYWI2NjAwZjUyMWJmYjg4Mjc5YmVj
YWFhNDllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZWZhdWx0VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCkBAIC04NzcsNyArODc3LDcgQEAgV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgZGVs
ZXRlIHRoaXMuX3JlcGFpbnRBbGxUaW1lcjsKIAotICAgICAgICBpZiAodGhpcy5fcGFpbnRDb2Fs
ZXNjaW5nTGV2ZWwgfHwgdGhpcy5fZGlydHlMaW5lcykKKyAgICAgICAgaWYgKHRoaXMuX3BhaW50
Q29hbGVzY2luZ0xldmVsKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciB2aXNp
YmxlRnJvbSA9IHRoaXMuZWxlbWVudC5zY3JvbGxUb3A7CkBAIC0xMjY2LDEzICsxMjY2LDkgQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgdGV4
dE1vZGVsLCB1cmwsIHN5bmNTY3JvbGwKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigic2Nyb2xsIiwgdGhpcy5fc2Nyb2xsLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9oYW5kbGVFbGVtZW50Rm9jdXMu
YmluZCh0aGlzKSwgZmFsc2UpOwogCi0gICAgLy8gT1BUSU1JWkFUSU9OLiBJdCBpcyB2ZXJ5IGV4
cGVuc2l2ZSB0byBsaXN0ZW4gdG8gdGhlIERPTSBtdXRhdGlvbiBldmVudHMsIHRodXMgd2UgcmVt
b3ZlIHRoZQotICAgIC8vIGxpc3RlbmVycyB3aGVuZXZlciB3ZSBkbyBhbnkgaW50ZXJuYWwgRE9N
IG1hbmlwdWxhdGlvbnMgKHN1Y2ggYXMgZXhwYW5kL2NvbGxhcHNlIGxpbmUgcm93cykKLSAgICAv
LyBhbmQgc2V0IHRoZSBsaXN0ZW5lcnMgYmFjayB3aGVuIHdlIGFyZSBmaW5pc2hlZC4KLSAgICB0
aGlzLl9oYW5kbGVET01VcGRhdGVzQ2FsbGJhY2sgPSB0aGlzLl9oYW5kbGVET01VcGRhdGVzLmJp
bmQodGhpcyk7Ci0gICAgdGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNoYXJh
Y3RlckRhdGFNb2RpZmllZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywgZmFsc2Up
OwotICAgIHRoaXMuX2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlSW5zZXJ0ZWQi
LCB0aGlzLl9oYW5kbGVET01VcGRhdGVzQ2FsbGJhY2ssIGZhbHNlKTsKLSAgICB0aGlzLl9jb250
YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiRE9NU3VidHJlZU1vZGlmaWVkIiwgdGhpcy5faGFuZGxl
RE9NVXBkYXRlc0NhbGxiYWNrLCBmYWxzZSk7CisgICAgdGhpcy5fbXV0YXRpb25PYnNlcnZlciA9
IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKHRoaXMuX2hhbmRsZU11dGF0aW9ucy5iaW5kKHRo
aXMpKTsKKyAgICB0aGlzLl9tdXRhdGlvbk9ic2VydmVyLm9wdGlvbnMgPSB7IHN1YnRyZWU6IHRy
dWUsIGNoaWxkTGlzdDogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9OworICAgIHRoaXMuX211
dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9jb250YWluZXIsIHRoaXMuX211dGF0aW9uT2Jz
ZXJ2ZXIub3B0aW9ucyk7CiAKICAgICB0aGlzLl9mcmVlQ2FjaGVkRWxlbWVudHMoKTsKICAgICB0
aGlzLl9idWlsZENodW5rcygpOwpAQCAtMTQwMywxNiArMTM5OSwxMyBAQCBXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgbWFya2Vk
TGluZSA9IHRoaXMuX3JhbmdlVG9NYXJrLnN0YXJ0TGluZTsKICAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl9yYW5nZVRvTWFyazsKICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgbWFya2VkIHJlZ2lv
biBpbW1lZGlhdGVseS4KLSAgICAgICAgICAgIGlmICghdGhpcy5fZGlydHlMaW5lcykgewotICAg
ICAgICAgICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVzKCk7Ci0gICAgICAgICAgICAgICAgdmFy
IGNodW5rID0gdGhpcy5jaHVua0ZvckxpbmUobWFya2VkTGluZSk7Ci0gICAgICAgICAgICAgICAg
dmFyIHdhc0V4cGFuZGVkID0gY2h1bmsuZXhwYW5kZWQ7Ci0gICAgICAgICAgICAgICAgY2h1bmsu
ZXhwYW5kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBjaHVuay51cGRhdGVDb2xsYXBzZWRM
aW5lUm93KCk7Ci0gICAgICAgICAgICAgICAgY2h1bmsuZXhwYW5kZWQgPSB3YXNFeHBhbmRlZDsK
LSAgICAgICAgICAgICAgICB0aGlzLmVuZERvbVVwZGF0ZXMoKTsKLSAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIHRoaXMuX3BhaW50TGluZXMobWFya2VkTGluZSwgbWFya2VkTGlu
ZSArIDEpOworICAgICAgICAgICAgdGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKKyAgICAgICAgICAg
IHZhciBjaHVuayA9IHRoaXMuY2h1bmtGb3JMaW5lKG1hcmtlZExpbmUpOworICAgICAgICAgICAg
dmFyIHdhc0V4cGFuZGVkID0gY2h1bmsuZXhwYW5kZWQ7CisgICAgICAgICAgICBjaHVuay5leHBh
bmRlZCA9IGZhbHNlOworICAgICAgICAgICAgY2h1bmsudXBkYXRlQ29sbGFwc2VkTGluZVJvdygp
OworICAgICAgICAgICAgY2h1bmsuZXhwYW5kZWQgPSB3YXNFeHBhbmRlZDsKKyAgICAgICAgICAg
IHRoaXMuZW5kRG9tVXBkYXRlcygpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHJhbmdlKSB7
CkBAIC0xNDY0LDkgKzE0NTcsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHRoaXMuX2RpcnR5TGluZXMpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KICAgICAgICAgdGhpcy5iZWdpblVwZGF0ZXMoKTsKIAogICAgICAg
ICBmdW5jdGlvbiBiZWZvcmUoKQpAQCAtMTQ5OCw5ICsxNDg4LDYgQEAgV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5yZWFkT25s
eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICh0aGlzLl9kaXJ0
eUxpbmVzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgICAgIHZhciBzZWxlY3Rp
b24gPSB0aGlzLl9nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKCFzZWxlY3Rpb24pCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjA2LDkgKzE1OTMsNiBAQCBXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnJlYWRP
bmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHRoaXMuX2Rp
cnR5TGluZXMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAgICAgdmFyIHJhbmdl
ID0gdGhpcy5fZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgIGlmICghcmFuZ2UpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNjY4LDIyICsxNjUyLDE2IEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIGJlZ2luRG9tVXBkYXRlczogZnVu
Y3Rpb24oKQogICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9kb21VcGRhdGVDb2FsZXNjaW5nTGV2
ZWwpCisgICAgICAgICAgICB0aGlzLl9tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlLmJlZ2lu
RG9tVXBkYXRlcy5jYWxsKHRoaXMpOwotICAgICAgICBpZiAodGhpcy5fZG9tVXBkYXRlQ29hbGVz
Y2luZ0xldmVsID09PSAxKSB7Ci0gICAgICAgICAgICB0aGlzLl9jb250YWluZXIucmVtb3ZlRXZl
bnRMaXN0ZW5lcigiRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkIiwgdGhpcy5faGFuZGxlRE9NVXBk
YXRlc0NhbGxiYWNrLCBmYWxzZSk7Ci0gICAgICAgICAgICB0aGlzLl9jb250YWluZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgdGhpcy5faGFuZGxlRE9NVXBkYXRlc0Nh
bGxiYWNrLCBmYWxzZSk7Ci0gICAgICAgICAgICB0aGlzLl9jb250YWluZXIucmVtb3ZlRXZlbnRM
aXN0ZW5lcigiRE9NU3VidHJlZU1vZGlmaWVkIiwgdGhpcy5faGFuZGxlRE9NVXBkYXRlc0NhbGxi
YWNrLCBmYWxzZSk7Ci0gICAgICAgIH0KICAgICB9LAogCiAgICAgZW5kRG9tVXBkYXRlczogZnVu
Y3Rpb24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFu
ZWwucHJvdG90eXBlLmVuZERvbVVwZGF0ZXMuY2FsbCh0aGlzKTsKLSAgICAgICAgaWYgKHRoaXMu
X2RvbVVwZGF0ZUNvYWxlc2NpbmdMZXZlbCA9PT0gMCkgewotICAgICAgICAgICAgdGhpcy5fY29u
dGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZCIsIHRoaXMu
X2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywgZmFsc2UpOwotICAgICAgICAgICAgdGhpcy5fY29u
dGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVJbnNlcnRlZCIsIHRoaXMuX2hhbmRsZURP
TVVwZGF0ZXNDYWxsYmFjaywgZmFsc2UpOwotICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmFk
ZEV2ZW50TGlzdGVuZXIoIkRPTVN1YnRyZWVNb2RpZmllZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0
ZXNDYWxsYmFjaywgZmFsc2UpOwotICAgICAgICB9CisgICAgICAgIGlmICghdGhpcy5fZG9tVXBk
YXRlQ29hbGVzY2luZ0xldmVsKQorICAgICAgICAgICAgdGhpcy5fbXV0YXRpb25PYnNlcnZlci5v
YnNlcnZlKHRoaXMuX2NvbnRhaW5lciwgdGhpcy5fbXV0YXRpb25PYnNlcnZlci5vcHRpb25zKTsK
ICAgICB9LAogCiAgICAgX2J1aWxkQ2h1bmtzOiBmdW5jdGlvbigpCkBAIC0xNzc5LDcgKzE3NTcs
NyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gUmVzY2hlZHVsZSB0aGUgdGltZXIgaWYgd2Ug
Y2FuIG5vdCBwYWludCB0aGUgbGluZXMgeWV0LCBvciB0aGUgdXNlciBpcyBzY3JvbGxpbmcuCi0g
ICAgICAgIGlmICh0aGlzLl9kaXJ0eUxpbmVzIHx8IHRoaXMuX3JlcGFpbnRBbGxUaW1lcikgewor
ICAgICAgICBpZiAodGhpcy5fcmVwYWludEFsbFRpbWVyKSB7CiAgICAgICAgICAgICB0aGlzLl9w
YWludFNjaGVkdWxlZExpbmVzVGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuX3BhaW50U2NoZWR1bGVk
TGluZXMuYmluZCh0aGlzKSwgNTApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0xODM4LDcgKzE4MTYsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHZhciBpbnZpc2libGVMaW5lUm93cyA9IFtdOwogICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxpbmVDaHVua3MubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAg
IHZhciBsaW5lQ2h1bmsgPSBsaW5lQ2h1bmtzW2ldOwotICAgICAgICAgICAgaWYgKHRoaXMuX2Rp
cnR5TGluZXMgfHwgdGhpcy5fc2NoZWR1bGVkUGFpbnRMaW5lcykgeworICAgICAgICAgICAgaWYg
KHRoaXMuX3NjaGVkdWxlZFBhaW50TGluZXMpIHsKICAgICAgICAgICAgICAgICB0aGlzLl9zY2hl
ZHVsZVBhaW50TGluZXMobGluZUNodW5rLnN0YXJ0TGluZSwgbGluZUNodW5rLmVuZExpbmUpOwog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMTg3OCwxMCArMTg1
Niw2IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICBfcGFpbnRMaW5lOiBmdW5jdGlvbihsaW5lUm93KQogICAgIHsKICAgICAgICAgdmFyIGxpbmVO
dW1iZXIgPSBsaW5lUm93LmxpbmVOdW1iZXI7Ci0gICAgICAgIGlmICh0aGlzLl9kaXJ0eUxpbmVz
KSB7Ci0gICAgICAgICAgICB0aGlzLl9zY2hlZHVsZVBhaW50TGluZXMobGluZU51bWJlciwgbGlu
ZU51bWJlciArIDEpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKICAgICAgICAg
dGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKICAgICAgICAgdHJ5IHsKQEAgLTIxMDMsNiArMjA3Nyw4
IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICB2YXIgc3BhbiA9IHRoaXMuX2NhY2hlZFNwYW5zLnBvcCgpIHx8IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSAid2Via2l0LSIgKyBj
bGFzc05hbWU7CisgICAgICAgIGlmIChmYWxzZSkgLy8gRm9yIHBhaW50IGRlYnVnZ2luZy4KKyAg
ICAgICAgICAgIHNwYW4uYWRkU3R5bGVDbGFzcygiZGVidWctZmFkZW91dCIpOwogICAgICAgICBz
cGFuLnRleHRDb250ZW50ID0gY29udGVudDsKICAgICAgICAgZWxlbWVudC5pbnNlcnRCZWZvcmUo
c3Bhbiwgb2xkQ2hpbGQpOwogICAgICAgICBpZiAoISgic3BhbnMiIGluIGVsZW1lbnQpKQpAQCAt
MjE1MCwyOSArMjEyNiw3NSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBzcGFuOwogICAgIH0sCiAKLSAgICBfaGFuZGxlRE9N
VXBkYXRlczogZnVuY3Rpb24oZSkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJL
aXRNdXRhdGlvbj59IG11dGF0aW9ucworICAgICAqLworICAgIF9oYW5kbGVNdXRhdGlvbnM6IGZ1
bmN0aW9uKG11dGF0aW9ucykKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kb21VcGRhdGVDb2Fs
ZXNjaW5nTGV2ZWwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIHRhcmdldCA9
IGUudGFyZ2V0OwotICAgICAgICBpZiAodGFyZ2V0ID09PSB0aGlzLl9jb250YWluZXIpCisgICAg
ICAgIGlmICh0aGlzLl9yZWFkT25seSkKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICAv
LyBBbm5paGlsYXRlIG5vb3AgQlIgYWRkaXRpb24gKyByZW1vdmFsIHRoYXQgdGFrZXMgcGxhY2Ug
dXBvbiBsaW5lIHJlbW92YWwuCisgICAgICAgIHZhciBmaWx0ZXJlZE11dGF0aW9ucyA9IG11dGF0
aW9ucy5zbGljZSgpOworICAgICAgICB2YXIgYWRkZWRCUnMgPSBuZXcgTWFwKCk7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbXV0YXRpb25zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICB2YXIgbXV0YXRpb24gPSBtdXRhdGlvbnNbaV07CisgICAgICAgICAgICBpZiAobXV0YXRpb24u
dHlwZSAhPT0gImNoaWxkTGlzdCIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICBpZiAobXV0YXRpb24uYWRkZWROb2Rlcy5sZW5ndGggPT09IDEgJiYgbXV0YXRpb24uYWRk
ZWROb2Rlc1swXS5ub2RlTmFtZSA9PT0gIkJSIikKKyAgICAgICAgICAgICAgICBhZGRlZEJScy5w
dXQobXV0YXRpb24uYWRkZWROb2Rlc1swXSwgbXV0YXRpb24pOworICAgICAgICAgICAgZWxzZSBp
ZiAobXV0YXRpb24ucmVtb3ZlZE5vZGVzLmxlbmd0aCA9PT0gMSAmJiBtdXRhdGlvbi5yZW1vdmVk
Tm9kZXNbMF0ubm9kZU5hbWUgPT09ICJCUiIpIHsKKyAgICAgICAgICAgICAgICB2YXIgbm9vcE11
dGF0aW9uID0gYWRkZWRCUnMuZ2V0KG11dGF0aW9uLnJlbW92ZWROb2Rlc1swXSk7CisgICAgICAg
ICAgICAgICAgaWYgKG5vb3BNdXRhdGlvbikgeworICAgICAgICAgICAgICAgICAgICBmaWx0ZXJl
ZE11dGF0aW9ucy5yZW1vdmUobXV0YXRpb24pOworICAgICAgICAgICAgICAgICAgICBmaWx0ZXJl
ZE11dGF0aW9ucy5yZW1vdmUobm9vcE11dGF0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIgZGlydHlMaW5lczsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJlZE11dGF0aW9ucy5sZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgdmFyIGxpbmVzID0gdGhpcy5fY29sbGVjdERpcnR5TGluZXMoZmlsdGVyZWRNdXRh
dGlvbnNbaV0pOworICAgICAgICAgICAgaWYgKCFsaW5lcykKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIGlmICghZGlydHlMaW5lcykgeworICAgICAgICAgICAgICAgIGRp
cnR5TGluZXMgPSBsaW5lczsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGRpcnR5TGluZXMuc3RhcnQgPSBNYXRoLm1pbihkaXJ0eUxpbmVzLnN0
YXJ0LCBsaW5lcy5zdGFydCk7CisgICAgICAgICAgICBkaXJ0eUxpbmVzLmVuZCA9IE1hdGgubWF4
KGRpcnR5TGluZXMuZW5kLCBsaW5lcy5lbmQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRp
cnR5TGluZXMpIHsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9yYW5nZVRvTWFyazsKKyAgICAg
ICAgICAgIHRoaXMuX2FwcGx5RG9tVXBkYXRlcyhkaXJ0eUxpbmVzKTsKKyAgICAgICAgfQorICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYktpdE11dGF0aW9ufSBtdXRhdGlvbgor
ICAgICAqIEByZXR1cm4gez9PYmplY3R9CisgICAgICovCisgICAgX2NvbGxlY3REaXJ0eUxpbmVz
OiBmdW5jdGlvbihtdXRhdGlvbikKKyAgICB7CisgICAgICAgIHZhciB0YXJnZXQgPSBtdXRhdGlv
bi50YXJnZXQ7CiAgICAgICAgIHZhciBsaW5lUm93ID0gdGhpcy5fZW5jbG9zaW5nTGluZVJvd09y
U2VsZih0YXJnZXQpOwogICAgICAgICBpZiAoIWxpbmVSb3cpCi0gICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICBpZiAobGluZVJvdy5kZWNvcmF0
aW9uc0VsZW1lbnQgJiYgbGluZVJvdy5kZWNvcmF0aW9uc0VsZW1lbnQuaXNTZWxmT3JBbmNlc3Rv
cih0YXJnZXQpKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fc3luY0RlY29yYXRpb25zRm9yTGlu
ZUxpc3RlbmVyKQogICAgICAgICAgICAgICAgIHRoaXMuX3N5bmNEZWNvcmF0aW9uc0ZvckxpbmVM
aXN0ZW5lcihsaW5lUm93LmxpbmVOdW1iZXIpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGhpcy5fcmVhZE9u
bHkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAg
ICAgICBpZiAodGFyZ2V0ID09PSBsaW5lUm93ICYmIGUudHlwZSA9PT0gIkRPTU5vZGVJbnNlcnRl
ZCIpIHsKKyAgICAgICAgaWYgKHRhcmdldCA9PT0gbGluZVJvdyAmJiBtdXRhdGlvbi50eXBlID09
PSAiY2hpbGRMaXN0IiAmJiBtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCkgewogICAgICAgICAg
ICAgLy8gRW5zdXJlIHRoYXQgdGhlIG5ld2x5IGluc2VydGVkIGxpbmUgcm93IGhhcyBubyBsaW5l
TnVtYmVyLgogICAgICAgICAgICAgZGVsZXRlIGxpbmVSb3cubGluZU51bWJlcjsKICAgICAgICAg
fQpAQCAtMjE5MiwzMSArMjIxNCwxNCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5fZGlydHlMaW5lcykgewotICAgICAgICAgICAg
dGhpcy5fZGlydHlMaW5lcy5zdGFydCA9IE1hdGgubWluKHRoaXMuX2RpcnR5TGluZXMuc3RhcnQs
IHN0YXJ0TGluZSk7Ci0gICAgICAgICAgICB0aGlzLl9kaXJ0eUxpbmVzLmVuZCA9IE1hdGgubWF4
KHRoaXMuX2RpcnR5TGluZXMuZW5kLCBlbmRMaW5lKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHRoaXMuX2RpcnR5TGluZXMgPSB7IHN0YXJ0OiBzdGFydExpbmUsIGVuZDogZW5kTGlu
ZSB9OwotICAgICAgICAgICAgc2V0VGltZW91dCh0aGlzLl9hcHBseURvbVVwZGF0ZXMuYmluZCh0
aGlzKSwgMCk7Ci0gICAgICAgICAgICAvLyBSZW1vdmUgbWFya2VkIHJhbmdlcywgaWYgYW55Lgot
ICAgICAgICAgICAgdGhpcy5tYXJrQW5kUmV2ZWFsUmFuZ2UobnVsbCk7Ci0gICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHsgc3RhcnQ6IHN0YXJ0TGluZSwgZW5kOiBlbmRMaW5lIH07CiAgICAgfSwK
IAotICAgIF9hcHBseURvbVVwZGF0ZXM6IGZ1bmN0aW9uKCkKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge09iamVjdH0gZGlydHlMaW5lcworICAgICAqLworICAgIF9hcHBseURvbVVwZGF0ZXM6IGZ1
bmN0aW9uKGRpcnR5TGluZXMpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2RpcnR5TGluZXMp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGVkaXRvciBo
YWQgYmVlbiBzZXQgcmVhZE9ubHkgYnkgdGhlIG1vbWVudCB3aGVuIHRoaXMgYXN5bmMgY2FsbGJh
Y2sgZ290IGV4ZWN1dGVkLgotICAgICAgICBpZiAodGhpcy5fcmVhZE9ubHkpIHsKLSAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzLl9kaXJ0eUxpbmVzOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdmFyIGRpcnR5TGluZXMgPSB0aGlzLl9kaXJ0eUxpbmVzOwotCiAgICAg
ICAgIHZhciBmaXJzdENodW5rTnVtYmVyID0gdGhpcy5fY2h1bmtOdW1iZXJGb3JMaW5lKGRpcnR5
TGluZXMuc3RhcnQpOwogICAgICAgICB2YXIgc3RhcnRMaW5lID0gdGhpcy5fdGV4dENodW5rc1tm
aXJzdENodW5rTnVtYmVyXS5zdGFydExpbmU7CiAgICAgICAgIHZhciBlbmRMaW5lID0gdGhpcy5f
dGV4dE1vZGVsLmxpbmVzQ291bnQ7CkBAIC0yMjg1LDcgKzIyOTAsNiBAQCBXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB2
YXIgc2VsZWN0aW9uID0gdGhpcy5fZ2V0U2VsZWN0aW9uKCk7Ci0KICAgICAgICAgaWYgKGxpbmVz
Lmxlbmd0aCA9PT0gMCAmJiBlbmRMaW5lIDwgdGhpcy5fdGV4dE1vZGVsLmxpbmVzQ291bnQpCiAg
ICAgICAgICAgICB2YXIgb2xkUmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShzdGFy
dExpbmUsIDAsIGVuZExpbmUsIDApOwogICAgICAgICBlbHNlIGlmIChsaW5lcy5sZW5ndGggPT09
IDAgJiYgc3RhcnRMaW5lID4gMCkKQEAgLTIyOTQsMjUgKzIyOTgsMjMgQEAgV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIG9sZFJh
bmdlID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uoc3RhcnRMaW5lLCBzdGFydENvbHVtbiwg
ZW5kTGluZSAtIDEsIGVuZENvbHVtbik7CiAKICAgICAgICAgdmFyIG5ld0NvbnRlbnQgPSBsaW5l
cy5qb2luKCJcbiIpOwotICAgICAgICBpZiAodGhpcy5fdGV4dE1vZGVsLmNvcHlSYW5nZShvbGRS
YW5nZSkgPT09IG5ld0NvbnRlbnQpIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9kaXJ0eUxp
bmVzOworICAgICAgICBpZiAodGhpcy5fdGV4dE1vZGVsLmNvcHlSYW5nZShvbGRSYW5nZSkgPT09
IG5ld0NvbnRlbnQpCiAgICAgICAgICAgICByZXR1cm47IC8vIE5vb3AKLSAgICAgICAgfQogCiAg
ICAgICAgIGlmIChsaW5lcy5sZW5ndGggPT09IDEgJiYgbGluZXNbMF0gPT09ICJ9IiAmJiBvbGRS
YW5nZS5pc0VtcHR5KCkgJiYgc2VsZWN0aW9uLmlzRW1wdHkoKSAmJiAhdGhpcy5fdGV4dE1vZGVs
LmxpbmUob2xkUmFuZ2UuZW5kTGluZSkudHJpbSgpKQogICAgICAgICAgICAgdGhpcy5fdW5pbmRl
bnRBZnRlckJsb2NrKG9sZFJhbmdlLCBzZWxlY3Rpb24pOwotICAgICAgICAKKwogICAgICAgICAv
LyBUaGlzIGlzIGEgImZvcmVpZ24iIGNhbGwgb3V0c2lkZSBvZiB0aGlzIGNsYXNzLiBTaG91bGQg
YmUgYmVmb3JlIHdlIGRlbGV0ZSB0aGUgZGlydHkgbGluZXMgZmxhZy4KICAgICAgICAgdGhpcy5f
ZW50ZXJUZXh0Q2hhbmdlTW9kZSgpOwogCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9kaXJ0eUxpbmVz
OwotCiAgICAgICAgIHZhciBuZXdSYW5nZSA9IHRoaXMuX2VkaXRSYW5nZShvbGRSYW5nZSwgbmV3
Q29udGVudCk7CiAKICAgICAgICAgdGhpcy5fcGFpbnRTY2hlZHVsZWRMaW5lcyh0cnVlKTsKICAg
ICAgICAgdGhpcy5fcmVzdG9yZVNlbGVjdGlvbihzZWxlY3Rpb24pOwogCiAgICAgICAgIHRoaXMu
X2V4aXRUZXh0Q2hhbmdlTW9kZShvbGRSYW5nZSwgbmV3UmFuZ2UpOworICAgICAgICAvLyBEZWJ1
ZyBjaGVjayBmb3IgdmFsaWRhdGluZyB3aGV0aGVyIHRleHQgbW9kZWwgbWF0Y2hlcyB0aGUgRE9N
IHJlcHJlc2VudGF0aW9uLgorICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmVsZW1lbnQuaW5u
ZXJUZXh0ID09PSB0aGlzLl90ZXh0TW9kZWwudGV4dCgpICsgIlxuIik7CiAgICAgfSwKIAogICAg
IC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRl
cm5zLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzCmlu
ZGV4IGEwNmNlOWUyNmY3M2NjNDlkZjRmOTZhNGMzMDA0ZTA3ZjY2MmI3NzkuLjU2MTE5MzhhODkz
ZDM0ZGVlZDdiM2Q5YWE1ZTZhNmI4ZGE0YjVkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKQEAgLTYzLDYgKzYzLDI5IEBAIHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlID0gZnVuY3Rpb24oZWxlbWVudCkge30KIGZ1bmN0aW9uIHBvc3RNZXNzYWdl
KG1lc3NhZ2UpIHt9CiAKIC8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIFdlYktp
dE11dGF0aW9uKGNhbGxiYWNrKQoreworICAgIHRoaXMudHlwZSA9ICIiOworICAgIC8qKiBAdHlw
ZSB7Tm9kZX0gKi8gdGhpcy50YXJnZXQgPSBudWxsOworICAgIC8qKiBAdHlwZSB7QXJyYXkuPE5v
ZGU+fSAqLyB0aGlzLmFkZGVkTm9kZXMgPSBbXTsKKyAgICAvKiogQHR5cGUge0FycmF5LjxOb2Rl
Pn0gKi8gdGhpcy5yZW1vdmVkTm9kZXMgPSBbXTsKK30KKworLyoqCisgKiBAY29uc3RydWN0b3IK
KyAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPFdlYktpdE11dGF0aW9uPil9IGNhbGxiYWNrCisg
Ki8KK2Z1bmN0aW9uIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spIHt9CisvKiogCisg
KiBAcGFyYW0ge05vZGV9IGNvbnRhaW5lcgorICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMKKyAq
LworV2ViS2l0TXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGUub2JzZXJ2ZSA9IGZ1bmN0aW9uKGNv
bnRhaW5lciwgb3B0aW9ucykge30KK1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLmRp
c2Nvbm5lY3QgPSBmdW5jdGlvbigpIHt9CisKKy8qKgogICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50
TmFtZQogICogQHBhcmFtIHtGdW5jdGlvbn0gbGlzdGVuZXIKICAqIEBwYXJhbSB7Ym9vbGVhbj19
IGNhcHR1cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC90ZXh0RWRpdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4
dEVkaXRvci5jc3MKaW5kZXggNWExNWYzYmU5N2MxZWIyZmMwZjRiZjA4NzFjZDgzNTJmYTg1OTBh
MS4uMmEyNTYyYjgzNjRjMjJlMjZmODQzZjVjM2FlNzA5Y2U2ODhmZDgwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9yLmNzcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzCkBAIC0xNzks
MyArMTc5LDE5IEBACiAgICAgZnJvbSB7YmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAx
MjApOyB9CiAgICAgdG8geyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfQogfQorCisuZGVidWct
ZmFkZW91dCB7CisgICAgLXdlYmtpdC1hbmltYXRpb246ICJkZWJ1Zy1mYWRlb3V0IiAxcyAwczsK
KyAgICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTsKK30KKworQC13ZWJraXQta2V5ZnJhbWVzIGRl
YnVnLWZhZGVvdXQgeworICAgIGZyb20geworICAgICAgICBib3JkZXItY29sb3I6IGJsYWNrOwor
ICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDEyMCk7CisgICAgfQorICAg
IHRvIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisgICAgICAgIGJvcmRlci1j
b2xvcjogd2hpdGUKKyAgICB9Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173626</attachid>
            <date>2012-11-12 05:03:50 -0800</date>
            <delta_ts>2012-11-13 00:31:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101841-20121112170152.patch</filename>
            <type>text/plain</type>
            <size>16034</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQyYmZiMzAyNWJlMGFm
MWE0YTAyZDQ2MGExZGQwMWM0YTgyZmJlZS4uMjc0ZjliYmUwMTgzZjJjYTM2ZjhlOWNhNjNiM2Fj
YzgzNTc3NjNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTExLTEyICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1pZ3JhdGUgdGV4dCBlZGl0b3IgdG8gbXV0YXRpb24gb2JzZXJ2ZXJzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE4NDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdGhlcndpc2UsIHdlIG1pc3Mg
bm90aWZpY2F0aW9ucyBvbiB0aGUgcmVtb3ZlZCBsaW5lcy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1h
aW5QYW5lbC5wcm90b3R5cGUuYmVnaW5Eb21VcGRhdGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5lbmREb21VcGRhdGVzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faGFuZGxlTXV0YXRp
b25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlw
ZS5faGFuZGxlTXV0YXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJu
cy5qczoKKyAgICAgICAgKFdlYktpdE11dGF0aW9uKToKKyAgICAgICAgKFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIucHJvdG90eXBlLm9ic2VydmUpOgorICAgICAgICAoV2ViS2l0TXV0YXRpb25PYnNl
cnZlci5wcm90b3R5cGUuZGlzY29ubmVjdCk6CisKIDIwMTItMTEtMTIgIE1pa2UgV2VzdCAgPG1r
d3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICAnZm9yICh4IGluIHkpJyByZXF1aXJlcyAndmFy
JyBkZWNsYXJhdGlvbiBpbiBDb25zb2xlTWVzc2FnZS5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKaW5kZXggNWM2
ODAxZThjZDVjZGYwZGY1ZjA3NjYwZTE5ZWY5ZDdlYWM3MTUwYS4uOGIwMjM3YWI5OTgwODY2Mjg2
Mzg0ZDU1YjU1NzEzOTEwOTU0NDJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCkBAIC04NzcsNyArODc3LDcg
QEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlID0gewogICAg
IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX3JlcGFpbnRBbGxUaW1lcjsKIAotICAgICAgICBpZiAo
dGhpcy5fcGFpbnRDb2FsZXNjaW5nTGV2ZWwgfHwgdGhpcy5fZGlydHlMaW5lcykKKyAgICAgICAg
aWYgKHRoaXMuX3BhaW50Q29hbGVzY2luZ0xldmVsKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIHZhciB2aXNpYmxlRnJvbSA9IHRoaXMuZWxlbWVudC5zY3JvbGxUb3A7CkBAIC0xMjY2
LDEzICsxMjY2LDkgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwgPSBmdW5jdGlv
bihkZWxlZ2F0ZSwgdGV4dE1vZGVsLCB1cmwsIHN5bmNTY3JvbGwKICAgICB0aGlzLmVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5fc2Nyb2xsLmJpbmQodGhpcyksIGZhbHNl
KTsKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9oYW5k
bGVFbGVtZW50Rm9jdXMuYmluZCh0aGlzKSwgZmFsc2UpOwogCi0gICAgLy8gT1BUSU1JWkFUSU9O
LiBJdCBpcyB2ZXJ5IGV4cGVuc2l2ZSB0byBsaXN0ZW4gdG8gdGhlIERPTSBtdXRhdGlvbiBldmVu
dHMsIHRodXMgd2UgcmVtb3ZlIHRoZQotICAgIC8vIGxpc3RlbmVycyB3aGVuZXZlciB3ZSBkbyBh
bnkgaW50ZXJuYWwgRE9NIG1hbmlwdWxhdGlvbnMgKHN1Y2ggYXMgZXhwYW5kL2NvbGxhcHNlIGxp
bmUgcm93cykKLSAgICAvLyBhbmQgc2V0IHRoZSBsaXN0ZW5lcnMgYmFjayB3aGVuIHdlIGFyZSBm
aW5pc2hlZC4KLSAgICB0aGlzLl9oYW5kbGVET01VcGRhdGVzQ2FsbGJhY2sgPSB0aGlzLl9oYW5k
bGVET01VcGRhdGVzLmJpbmQodGhpcyk7Ci0gICAgdGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlz
dGVuZXIoIkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0ZXND
YWxsYmFjaywgZmFsc2UpOwotICAgIHRoaXMuX2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJE
T01Ob2RlSW5zZXJ0ZWQiLCB0aGlzLl9oYW5kbGVET01VcGRhdGVzQ2FsbGJhY2ssIGZhbHNlKTsK
LSAgICB0aGlzLl9jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiRE9NU3VidHJlZU1vZGlmaWVk
IiwgdGhpcy5faGFuZGxlRE9NVXBkYXRlc0NhbGxiYWNrLCBmYWxzZSk7CisgICAgdGhpcy5fbXV0
YXRpb25PYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKHRoaXMuX2hhbmRsZU11
dGF0aW9ucy5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLl9tdXRhdGlvbk9ic2VydmVyLm9wdGlvbnMg
PSB7IHN1YnRyZWU6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9
OworICAgIHRoaXMuX211dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9jb250YWluZXIsIHRo
aXMuX211dGF0aW9uT2JzZXJ2ZXIub3B0aW9ucyk7CiAKICAgICB0aGlzLl9mcmVlQ2FjaGVkRWxl
bWVudHMoKTsKICAgICB0aGlzLl9idWlsZENodW5rcygpOwpAQCAtMTQwMywxNiArMTM5OSwxMyBA
QCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB2YXIgbWFya2VkTGluZSA9IHRoaXMuX3JhbmdlVG9NYXJrLnN0YXJ0TGluZTsKICAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9yYW5nZVRvTWFyazsKICAgICAgICAgICAgIC8vIFJlbW92ZSB0
aGUgbWFya2VkIHJlZ2lvbiBpbW1lZGlhdGVseS4KLSAgICAgICAgICAgIGlmICghdGhpcy5fZGly
dHlMaW5lcykgewotICAgICAgICAgICAgICAgIHRoaXMuYmVnaW5Eb21VcGRhdGVzKCk7Ci0gICAg
ICAgICAgICAgICAgdmFyIGNodW5rID0gdGhpcy5jaHVua0ZvckxpbmUobWFya2VkTGluZSk7Ci0g
ICAgICAgICAgICAgICAgdmFyIHdhc0V4cGFuZGVkID0gY2h1bmsuZXhwYW5kZWQ7Ci0gICAgICAg
ICAgICAgICAgY2h1bmsuZXhwYW5kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBjaHVuay51
cGRhdGVDb2xsYXBzZWRMaW5lUm93KCk7Ci0gICAgICAgICAgICAgICAgY2h1bmsuZXhwYW5kZWQg
PSB3YXNFeHBhbmRlZDsKLSAgICAgICAgICAgICAgICB0aGlzLmVuZERvbVVwZGF0ZXMoKTsKLSAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuX3BhaW50TGluZXMobWFya2Vk
TGluZSwgbWFya2VkTGluZSArIDEpOworICAgICAgICAgICAgdGhpcy5iZWdpbkRvbVVwZGF0ZXMo
KTsKKyAgICAgICAgICAgIHZhciBjaHVuayA9IHRoaXMuY2h1bmtGb3JMaW5lKG1hcmtlZExpbmUp
OworICAgICAgICAgICAgdmFyIHdhc0V4cGFuZGVkID0gY2h1bmsuZXhwYW5kZWQ7CisgICAgICAg
ICAgICBjaHVuay5leHBhbmRlZCA9IGZhbHNlOworICAgICAgICAgICAgY2h1bmsudXBkYXRlQ29s
bGFwc2VkTGluZVJvdygpOworICAgICAgICAgICAgY2h1bmsuZXhwYW5kZWQgPSB3YXNFeHBhbmRl
ZDsKKyAgICAgICAgICAgIHRoaXMuZW5kRG9tVXBkYXRlcygpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKHJhbmdlKSB7CkBAIC0xNDY0LDkgKzE0NTcsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHRoaXMuX2RpcnR5TGlu
ZXMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAgICAgdGhpcy5iZWdpblVwZGF0
ZXMoKTsKIAogICAgICAgICBmdW5jdGlvbiBiZWZvcmUoKQpAQCAtMTQ5OCw5ICsxNDg4LDYgQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAodGhpcy5yZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IGlmICh0aGlzLl9kaXJ0eUxpbmVzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAg
ICAgIHZhciBzZWxlY3Rpb24gPSB0aGlzLl9nZXRTZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKCFz
ZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjA2LDkgKzE1OTMsNiBA
QCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGlmICh0aGlzLnJlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgaWYgKHRoaXMuX2RpcnR5TGluZXMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAg
ICAgICAgdmFyIHJhbmdlID0gdGhpcy5fZ2V0U2VsZWN0aW9uKCk7CiAgICAgICAgIGlmICghcmFu
Z2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjY4LDIyICsxNjUyLDE2IEBAIFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIGJlZ2lu
RG9tVXBkYXRlczogZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9kb21VcGRh
dGVDb2FsZXNjaW5nTGV2ZWwpCisgICAgICAgICAgICB0aGlzLl9tdXRhdGlvbk9ic2VydmVyLmRp
c2Nvbm5lY3QoKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwu
cHJvdG90eXBlLmJlZ2luRG9tVXBkYXRlcy5jYWxsKHRoaXMpOwotICAgICAgICBpZiAodGhpcy5f
ZG9tVXBkYXRlQ29hbGVzY2luZ0xldmVsID09PSAxKSB7Ci0gICAgICAgICAgICB0aGlzLl9jb250
YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVkIiwgdGhp
cy5faGFuZGxlRE9NVXBkYXRlc0NhbGxiYWNrLCBmYWxzZSk7Ci0gICAgICAgICAgICB0aGlzLl9j
b250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgdGhpcy5faGFu
ZGxlRE9NVXBkYXRlc0NhbGxiYWNrLCBmYWxzZSk7Ci0gICAgICAgICAgICB0aGlzLl9jb250YWlu
ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NU3VidHJlZU1vZGlmaWVkIiwgdGhpcy5faGFuZGxl
RE9NVXBkYXRlc0NhbGxiYWNrLCBmYWxzZSk7Ci0gICAgICAgIH0KICAgICB9LAogCiAgICAgZW5k
RG9tVXBkYXRlczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlLmVuZERvbVVwZGF0ZXMuY2FsbCh0aGlzKTsKLSAg
ICAgICAgaWYgKHRoaXMuX2RvbVVwZGF0ZUNvYWxlc2NpbmdMZXZlbCA9PT0gMCkgewotICAgICAg
ICAgICAgdGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNoYXJhY3RlckRhdGFN
b2RpZmllZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywgZmFsc2UpOwotICAgICAg
ICAgICAgdGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVJbnNlcnRlZCIs
IHRoaXMuX2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywgZmFsc2UpOwotICAgICAgICAgICAgdGhp
cy5fY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTVN1YnRyZWVNb2RpZmllZCIsIHRoaXMu
X2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywgZmFsc2UpOwotICAgICAgICB9CisgICAgICAgIGlm
ICghdGhpcy5fZG9tVXBkYXRlQ29hbGVzY2luZ0xldmVsKQorICAgICAgICAgICAgdGhpcy5fbXV0
YXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMuX2NvbnRhaW5lciwgdGhpcy5fbXV0YXRpb25PYnNl
cnZlci5vcHRpb25zKTsKICAgICB9LAogCiAgICAgX2J1aWxkQ2h1bmtzOiBmdW5jdGlvbigpCkBA
IC0xNzc5LDcgKzE3NTcsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gUmVzY2hlZHVsZSB0
aGUgdGltZXIgaWYgd2UgY2FuIG5vdCBwYWludCB0aGUgbGluZXMgeWV0LCBvciB0aGUgdXNlciBp
cyBzY3JvbGxpbmcuCi0gICAgICAgIGlmICh0aGlzLl9kaXJ0eUxpbmVzIHx8IHRoaXMuX3JlcGFp
bnRBbGxUaW1lcikgeworICAgICAgICBpZiAodGhpcy5fcmVwYWludEFsbFRpbWVyKSB7CiAgICAg
ICAgICAgICB0aGlzLl9wYWludFNjaGVkdWxlZExpbmVzVGltZXIgPSBzZXRUaW1lb3V0KHRoaXMu
X3BhaW50U2NoZWR1bGVkTGluZXMuYmluZCh0aGlzKSwgNTApOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0xODM4LDcgKzE4MTYsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBpbnZpc2libGVMaW5lUm93cyA9
IFtdOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVDaHVua3MubGVuZ3RoOyArK2kp
IHsKICAgICAgICAgICAgIHZhciBsaW5lQ2h1bmsgPSBsaW5lQ2h1bmtzW2ldOwotICAgICAgICAg
ICAgaWYgKHRoaXMuX2RpcnR5TGluZXMgfHwgdGhpcy5fc2NoZWR1bGVkUGFpbnRMaW5lcykgewor
ICAgICAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZFBhaW50TGluZXMpIHsKICAgICAgICAgICAg
ICAgICB0aGlzLl9zY2hlZHVsZVBhaW50TGluZXMobGluZUNodW5rLnN0YXJ0TGluZSwgbGluZUNo
dW5rLmVuZExpbmUpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpA
QCAtMTg3OCwxMCArMTg1Niw2IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICBfcGFpbnRMaW5lOiBmdW5jdGlvbihsaW5lUm93KQogICAgIHsKICAg
ICAgICAgdmFyIGxpbmVOdW1iZXIgPSBsaW5lUm93LmxpbmVOdW1iZXI7Ci0gICAgICAgIGlmICh0
aGlzLl9kaXJ0eUxpbmVzKSB7Ci0gICAgICAgICAgICB0aGlzLl9zY2hlZHVsZVBhaW50TGluZXMo
bGluZU51bWJlciwgbGluZU51bWJlciArIDEpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CiAKICAgICAgICAgdGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKICAgICAgICAgdHJ5IHsKQEAg
LTIxMDMsNiArMjA3Nyw4IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICB2YXIgc3BhbiA9IHRoaXMuX2NhY2hlZFNwYW5zLnBvcCgpIHx8
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgc3Bhbi5jbGFzc05hbWUg
PSAid2Via2l0LSIgKyBjbGFzc05hbWU7CisgICAgICAgIGlmIChmYWxzZSkgLy8gRm9yIHBhaW50
IGRlYnVnZ2luZy4KKyAgICAgICAgICAgIHNwYW4uYWRkU3R5bGVDbGFzcygiZGVidWctZmFkZW91
dCIpOwogICAgICAgICBzcGFuLnRleHRDb250ZW50ID0gY29udGVudDsKICAgICAgICAgZWxlbWVu
dC5pbnNlcnRCZWZvcmUoc3Bhbiwgb2xkQ2hpbGQpOwogICAgICAgICBpZiAoISgic3BhbnMiIGlu
IGVsZW1lbnQpKQpAQCAtMjE1MCwyOSArMjEyNiw4OCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBzcGFuOwogICAgIH0sCiAK
LSAgICBfaGFuZGxlRE9NVXBkYXRlczogZnVuY3Rpb24oZSkKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge0FycmF5LjxXZWJLaXRNdXRhdGlvbj59IG11dGF0aW9ucworICAgICAqLworICAgIF9oYW5k
bGVNdXRhdGlvbnM6IGZ1bmN0aW9uKG11dGF0aW9ucykKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll9kb21VcGRhdGVDb2FsZXNjaW5nTGV2ZWwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0OwotICAgICAgICBpZiAodGFyZ2V0ID09PSB0aGlzLl9j
b250YWluZXIpCisgICAgICAgIGlmICh0aGlzLl9yZWFkT25seSkKICAgICAgICAgICAgIHJldHVy
bjsKIAorICAgICAgICAvLyBBbm5paGlsYXRlIG5vb3AgQlIgYWRkaXRpb24gKyByZW1vdmFsIHRo
YXQgdGFrZXMgcGxhY2UgdXBvbiBsaW5lIHJlbW92YWwuCisgICAgICAgIHZhciBmaWx0ZXJlZE11
dGF0aW9ucyA9IG11dGF0aW9ucy5zbGljZSgpOworICAgICAgICB2YXIgYWRkZWRCUnMgPSBuZXcg
TWFwKCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXV0YXRpb25zLmxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgICB2YXIgbXV0YXRpb24gPSBtdXRhdGlvbnNbaV07CisgICAgICAgICAg
ICBpZiAobXV0YXRpb24udHlwZSAhPT0gImNoaWxkTGlzdCIpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBpZiAobXV0YXRpb24uYWRkZWROb2Rlcy5sZW5ndGggPT09IDEg
JiYgbXV0YXRpb24uYWRkZWROb2Rlc1swXS5ub2RlTmFtZSA9PT0gIkJSIikKKyAgICAgICAgICAg
ICAgICBhZGRlZEJScy5wdXQobXV0YXRpb24uYWRkZWROb2Rlc1swXSwgbXV0YXRpb24pOworICAg
ICAgICAgICAgZWxzZSBpZiAobXV0YXRpb24ucmVtb3ZlZE5vZGVzLmxlbmd0aCA9PT0gMSAmJiBt
dXRhdGlvbi5yZW1vdmVkTm9kZXNbMF0ubm9kZU5hbWUgPT09ICJCUiIpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgbm9vcE11dGF0aW9uID0gYWRkZWRCUnMuZ2V0KG11dGF0aW9uLnJlbW92ZWROb2Rl
c1swXSk7CisgICAgICAgICAgICAgICAgaWYgKG5vb3BNdXRhdGlvbikgeworICAgICAgICAgICAg
ICAgICAgICBmaWx0ZXJlZE11dGF0aW9ucy5yZW1vdmUobXV0YXRpb24pOworICAgICAgICAgICAg
ICAgICAgICBmaWx0ZXJlZE11dGF0aW9ucy5yZW1vdmUobm9vcE11dGF0aW9uKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIgZGlydHlM
aW5lczsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJlZE11dGF0aW9ucy5sZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgdmFyIG11dGF0aW9uID0gZmlsdGVyZWRNdXRhdGlvbnNb
aV07CisgICAgICAgICAgICB2YXIgY2hhbmdlZE5vZGVzID0gW107CisgICAgICAgICAgICBpZiAo
bXV0YXRpb24udHlwZSA9PT0gImNoaWxkTGlzdCIgJiYgbXV0YXRpb24uYWRkZWROb2Rlcy5sZW5n
dGgpCisgICAgICAgICAgICAgICAgY2hhbmdlZE5vZGVzID0gQXJyYXkucHJvdG90eXBlLnNsaWNl
LmNhbGwobXV0YXRpb24uYWRkZWROb2Rlcyk7CisgICAgICAgICAgICBlbHNlIGlmIChtdXRhdGlv
bi50eXBlID09PSAiY2hpbGRMaXN0IiAmJiBtdXRhdGlvbi5yZW1vdmVkTm9kZXMubGVuZ3RoKQor
ICAgICAgICAgICAgICAgIGNoYW5nZWROb2RlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxs
KG11dGF0aW9uLnJlbW92ZWROb2Rlcyk7CisgICAgICAgICAgICBjaGFuZ2VkTm9kZXMucHVzaCht
dXRhdGlvbi50YXJnZXQpOworCisgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNoYW5n
ZWROb2Rlcy5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgIHZhciBsaW5lcyA9IHRoaXMu
X2NvbGxlY3REaXJ0eUxpbmVzKG11dGF0aW9uLCBjaGFuZ2VkTm9kZXNbal0pOworICAgICAgICAg
ICAgICAgIGlmICghbGluZXMpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIGlmICghZGlydHlMaW5lcykgeworICAgICAgICAgICAgICAgICAgICBkaXJ0eUxp
bmVzID0gbGluZXM7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBkaXJ0eUxpbmVzLnN0YXJ0ID0gTWF0aC5taW4oZGlydHlM
aW5lcy5zdGFydCwgbGluZXMuc3RhcnQpOworICAgICAgICAgICAgICAgIGRpcnR5TGluZXMuZW5k
ID0gTWF0aC5tYXgoZGlydHlMaW5lcy5lbmQsIGxpbmVzLmVuZCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoZGlydHlMaW5lcykgeworICAgICAgICAgICAgZGVsZXRl
IHRoaXMuX3JhbmdlVG9NYXJrOworICAgICAgICAgICAgdGhpcy5fYXBwbHlEb21VcGRhdGVzKGRp
cnR5TGluZXMpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRGVidWcgY2hlY2sgZm9yIHZhbGlk
YXRpbmcgd2hldGhlciB0ZXh0IG1vZGVsIG1hdGNoZXMgdGhlIERPTSByZXByZXNlbnRhdGlvbi4K
KyAgICAgICAgLy8gY29uc29sZS5hc3NlcnQodGhpcy5lbGVtZW50LmlubmVyVGV4dCA9PT0gdGhp
cy5fdGV4dE1vZGVsLnRleHQoKSArICJcbiIsICJET00gZG9lcyBub3QgbWF0Y2ggbW9kZWwuIik7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViS2l0TXV0YXRpb259IG11dGF0
aW9uCisgICAgICogQHBhcmFtIHtOb2RlfSB0YXJnZXQKKyAgICAgKiBAcmV0dXJuIHs/T2JqZWN0
fQorICAgICAqLworICAgIF9jb2xsZWN0RGlydHlMaW5lczogZnVuY3Rpb24obXV0YXRpb24sIHRh
cmdldCkKKyAgICB7CiAgICAgICAgIHZhciBsaW5lUm93ID0gdGhpcy5fZW5jbG9zaW5nTGluZVJv
d09yU2VsZih0YXJnZXQpOwogICAgICAgICBpZiAoIWxpbmVSb3cpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICBpZiAobGluZVJvdy5kZWNv
cmF0aW9uc0VsZW1lbnQgJiYgbGluZVJvdy5kZWNvcmF0aW9uc0VsZW1lbnQuaXNTZWxmT3JBbmNl
c3Rvcih0YXJnZXQpKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fc3luY0RlY29yYXRpb25zRm9y
TGluZUxpc3RlbmVyKQogICAgICAgICAgICAgICAgIHRoaXMuX3N5bmNEZWNvcmF0aW9uc0Zvckxp
bmVMaXN0ZW5lcihsaW5lUm93LmxpbmVOdW1iZXIpOwotICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGhpcy5fcmVh
ZE9ubHkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAot
ICAgICAgICBpZiAodGFyZ2V0ID09PSBsaW5lUm93ICYmIGUudHlwZSA9PT0gIkRPTU5vZGVJbnNl
cnRlZCIpIHsKKyAgICAgICAgaWYgKHRhcmdldCA9PT0gbGluZVJvdyAmJiBtdXRhdGlvbi50eXBl
ID09PSAiY2hpbGRMaXN0IiAmJiBtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCkgewogICAgICAg
ICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIG5ld2x5IGluc2VydGVkIGxpbmUgcm93IGhhcyBubyBs
aW5lTnVtYmVyLgogICAgICAgICAgICAgZGVsZXRlIGxpbmVSb3cubGluZU51bWJlcjsKICAgICAg
ICAgfQpAQCAtMjE5MiwzMSArMjIyNywxNCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5Q
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5fZGlydHlMaW5lcykgewotICAgICAgICAg
ICAgdGhpcy5fZGlydHlMaW5lcy5zdGFydCA9IE1hdGgubWluKHRoaXMuX2RpcnR5TGluZXMuc3Rh
cnQsIHN0YXJ0TGluZSk7Ci0gICAgICAgICAgICB0aGlzLl9kaXJ0eUxpbmVzLmVuZCA9IE1hdGgu
bWF4KHRoaXMuX2RpcnR5TGluZXMuZW5kLCBlbmRMaW5lKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHRoaXMuX2RpcnR5TGluZXMgPSB7IHN0YXJ0OiBzdGFydExpbmUsIGVuZDogZW5k
TGluZSB9OwotICAgICAgICAgICAgc2V0VGltZW91dCh0aGlzLl9hcHBseURvbVVwZGF0ZXMuYmlu
ZCh0aGlzKSwgMCk7Ci0gICAgICAgICAgICAvLyBSZW1vdmUgbWFya2VkIHJhbmdlcywgaWYgYW55
LgotICAgICAgICAgICAgdGhpcy5tYXJrQW5kUmV2ZWFsUmFuZ2UobnVsbCk7Ci0gICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHsgc3RhcnQ6IHN0YXJ0TGluZSwgZW5kOiBlbmRMaW5lIH07CiAgICAg
fSwKIAotICAgIF9hcHBseURvbVVwZGF0ZXM6IGZ1bmN0aW9uKCkKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge09iamVjdH0gZGlydHlMaW5lcworICAgICAqLworICAgIF9hcHBseURvbVVwZGF0ZXM6
IGZ1bmN0aW9uKGRpcnR5TGluZXMpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2RpcnR5TGlu
ZXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGVkaXRv
ciBoYWQgYmVlbiBzZXQgcmVhZE9ubHkgYnkgdGhlIG1vbWVudCB3aGVuIHRoaXMgYXN5bmMgY2Fs
bGJhY2sgZ290IGV4ZWN1dGVkLgotICAgICAgICBpZiAodGhpcy5fcmVhZE9ubHkpIHsKLSAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9kaXJ0eUxpbmVzOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdmFyIGRpcnR5TGluZXMgPSB0aGlzLl9kaXJ0eUxpbmVzOwotCiAg
ICAgICAgIHZhciBmaXJzdENodW5rTnVtYmVyID0gdGhpcy5fY2h1bmtOdW1iZXJGb3JMaW5lKGRp
cnR5TGluZXMuc3RhcnQpOwogICAgICAgICB2YXIgc3RhcnRMaW5lID0gdGhpcy5fdGV4dENodW5r
c1tmaXJzdENodW5rTnVtYmVyXS5zdGFydExpbmU7CiAgICAgICAgIHZhciBlbmRMaW5lID0gdGhp
cy5fdGV4dE1vZGVsLmxpbmVzQ291bnQ7CkBAIC0yMjg1LDcgKzIzMDMsNiBAQCBXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAg
ICB2YXIgc2VsZWN0aW9uID0gdGhpcy5fZ2V0U2VsZWN0aW9uKCk7Ci0KICAgICAgICAgaWYgKGxp
bmVzLmxlbmd0aCA9PT0gMCAmJiBlbmRMaW5lIDwgdGhpcy5fdGV4dE1vZGVsLmxpbmVzQ291bnQp
CiAgICAgICAgICAgICB2YXIgb2xkUmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZShz
dGFydExpbmUsIDAsIGVuZExpbmUsIDApOwogICAgICAgICBlbHNlIGlmIChsaW5lcy5sZW5ndGgg
PT09IDAgJiYgc3RhcnRMaW5lID4gMCkKQEAgLTIyOTQsMTkgKzIzMTEsMTUgQEAgV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIG9s
ZFJhbmdlID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uoc3RhcnRMaW5lLCBzdGFydENvbHVt
biwgZW5kTGluZSAtIDEsIGVuZENvbHVtbik7CiAKICAgICAgICAgdmFyIG5ld0NvbnRlbnQgPSBs
aW5lcy5qb2luKCJcbiIpOwotICAgICAgICBpZiAodGhpcy5fdGV4dE1vZGVsLmNvcHlSYW5nZShv
bGRSYW5nZSkgPT09IG5ld0NvbnRlbnQpIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9kaXJ0
eUxpbmVzOworICAgICAgICBpZiAodGhpcy5fdGV4dE1vZGVsLmNvcHlSYW5nZShvbGRSYW5nZSkg
PT09IG5ld0NvbnRlbnQpCiAgICAgICAgICAgICByZXR1cm47IC8vIE5vb3AKLSAgICAgICAgfQog
CiAgICAgICAgIGlmIChsaW5lcy5sZW5ndGggPT09IDEgJiYgbGluZXNbMF0gPT09ICJ9IiAmJiBv
bGRSYW5nZS5pc0VtcHR5KCkgJiYgc2VsZWN0aW9uLmlzRW1wdHkoKSAmJiAhdGhpcy5fdGV4dE1v
ZGVsLmxpbmUob2xkUmFuZ2UuZW5kTGluZSkudHJpbSgpKQogICAgICAgICAgICAgdGhpcy5fdW5p
bmRlbnRBZnRlckJsb2NrKG9sZFJhbmdlLCBzZWxlY3Rpb24pOwotICAgICAgICAKKwogICAgICAg
ICAvLyBUaGlzIGlzIGEgImZvcmVpZ24iIGNhbGwgb3V0c2lkZSBvZiB0aGlzIGNsYXNzLiBTaG91
bGQgYmUgYmVmb3JlIHdlIGRlbGV0ZSB0aGUgZGlydHkgbGluZXMgZmxhZy4KICAgICAgICAgdGhp
cy5fZW50ZXJUZXh0Q2hhbmdlTW9kZSgpOwogCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9kaXJ0eUxp
bmVzOwotCiAgICAgICAgIHZhciBuZXdSYW5nZSA9IHRoaXMuX2VkaXRSYW5nZShvbGRSYW5nZSwg
bmV3Q29udGVudCk7CiAKICAgICAgICAgdGhpcy5fcGFpbnRTY2hlZHVsZWRMaW5lcyh0cnVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcwppbmRleCBh
MDZjZTllMjZmNzNjYzQ5ZGY0Zjk2YTRjMzAwNGUwN2Y2NjJiNzc5Li41NjExOTM4YTg5M2QzNGRl
ZWQ3YjNkOWFhNWU2YTZiOGRhNGI1ZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9leHRlcm5zLmpzCkBAIC02Myw2ICs2MywyOSBAQCB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHt9CiBmdW5jdGlvbiBwb3N0TWVzc2FnZShtZXNz
YWdlKSB7fQogCiAvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBXZWJLaXRNdXRh
dGlvbihjYWxsYmFjaykKK3sKKyAgICB0aGlzLnR5cGUgPSAiIjsKKyAgICAvKiogQHR5cGUge05v
ZGV9ICovIHRoaXMudGFyZ2V0ID0gbnVsbDsKKyAgICAvKiogQHR5cGUge0FycmF5LjxOb2RlPn0g
Ki8gdGhpcy5hZGRlZE5vZGVzID0gW107CisgICAgLyoqIEB0eXBlIHtBcnJheS48Tm9kZT59ICov
IHRoaXMucmVtb3ZlZE5vZGVzID0gW107Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBA
cGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxXZWJLaXRNdXRhdGlvbj4pfSBjYWxsYmFjaworICovCitm
dW5jdGlvbiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKSB7fQorLyoqIAorICogQHBh
cmFtIHtOb2RlfSBjb250YWluZXIKKyAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zCisgKi8KK1dl
YktpdE11dGF0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLm9ic2VydmUgPSBmdW5jdGlvbihjb250YWlu
ZXIsIG9wdGlvbnMpIHt9CitXZWJLaXRNdXRhdGlvbk9ic2VydmVyLnByb3RvdHlwZS5kaXNjb25u
ZWN0ID0gZnVuY3Rpb24oKSB7fQorCisvKioKICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUK
ICAqIEBwYXJhbSB7RnVuY3Rpb259IGxpc3RlbmVyCiAgKiBAcGFyYW0ge2Jvb2xlYW49fSBjYXB0
dXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4
dEVkaXRvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0
b3IuY3NzCmluZGV4IDVhMTVmM2JlOTdjMWViMmZjMGY0YmYwODcxY2Q4MzUyZmE4NTkwYTEuLjJh
MjU2MmI4MzY0YzIyZTI2Zjg0M2Y1YzNhZTcwOWNlNjg4ZmQ4MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dEVkaXRvci5jc3MKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9yLmNzcwpAQCAtMTc5LDMgKzE3
OSwxOSBAQAogICAgIGZyb20ge2JhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMTIwKTsg
fQogICAgIHRvIHsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH0KIH0KKworLmRlYnVnLWZhZGVv
dXQgeworICAgIC13ZWJraXQtYW5pbWF0aW9uOiAiZGVidWctZmFkZW91dCIgMXMgMHM7CisgICAg
Ym9yZGVyOiAxcHggc29saWQgd2hpdGU7Cit9CisKK0Atd2Via2l0LWtleWZyYW1lcyBkZWJ1Zy1m
YWRlb3V0IHsKKyAgICBmcm9tIHsKKyAgICAgICAgYm9yZGVyLWNvbG9yOiBibGFjazsKKyAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAxMjApOworICAgIH0KKyAgICB0byB7
CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworICAgICAgICBib3JkZXItY29sb3I6
IHdoaXRlCisgICAgfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173841</attachid>
            <date>2012-11-13 00:31:42 -0800</date>
            <delta_ts>2012-11-13 00:34:00 -0800</delta_ts>
            <desc>[Patch] for landing</desc>
            <filename>bug-101841-20121113123131.patch</filename>
            <type>text/plain</type>
            <size>17994</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEzMzY5NjIwNmI1MzFk
Mjk1MThmNTE2YjQwOTA2MWM4YzZkZjdlOC4uNWJkZDM4ZjgyMDk3NTc3Y2MzMjBkZmUxYjE2MmFh
OGE0NTM5NzYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTExLTEzICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1pZ3JhdGUgdGV4dCBlZGl0b3IgdG8gbXV0YXRpb24gb2JzZXJ2ZXJzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE4NDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdGhlcndpc2UsIHdlIG1pc3Mg
bm90aWZpY2F0aW9ucyBvbiB0aGUgcmVtb3ZlZCBsaW5lcy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBlLndhc1Nob3duKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5cGUud2lsbEhpZGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlLl9yZXBhaW50QWxsKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fd2FzU2hvd24pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl93aWxsSGlk
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUu
bWFya0FuZFJldmVhbFJhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFp
blBhbmVsLnByb3RvdHlwZS5iZWdpbkRvbVVwZGF0ZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLmVuZERvbVVwZGF0ZXMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9wYWludFNjaGVkdWxl
ZExpbmVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3Rv
dHlwZS5fcGFpbnRMaW5lQ2h1bmtzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9y
TWFpblBhbmVsLnByb3RvdHlwZS5fcGFpbnRMaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5faW5zZXJ0U3BhbkJlZm9yZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2hhbmRsZU11dGF0
aW9ucy5lbHNlLmdldCBpZik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5Q
YW5lbC5wcm90b3R5cGUuX2hhbmRsZU11dGF0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2NvbGxlY3REaXJ0eUxpbmVzKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fYXBwbHlEb21V
cGRhdGVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanM6CisgICAg
ICAgIChXZWJLaXRNdXRhdGlvbik6CisgICAgICAgIChXZWJLaXRNdXRhdGlvbk9ic2VydmVyLnBy
b3RvdHlwZS5vYnNlcnZlKToKKyAgICAgICAgKFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIucHJvdG90
eXBlLmRpc2Nvbm5lY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdGV4dEVkaXRv
ci5jc3M6CisgICAgICAgICguZGVidWctZmFkZW91dCk6CisgICAgICAgIChALXdlYmtpdC1rZXlm
cmFtZXMgZGVidWctZmFkZW91dCk6CisgICAgICAgICh0byk6CisKIDIwMTItMTEtMTIgIEpvZSBN
YXNvbiAgPGptYXNvbkByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBOZXR3b3JrSm9i
IHNob3VsZCBub3QgY2hlY2sgaWYgZGF0YSBpcyByZWNlaXZlZCB3aXRoIEhFQUQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3Iu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9y
LmpzCmluZGV4IDVjNjgwMWU4Y2Q1Y2RmMGRmNWYwNzY2MGUxOWVmOWQ3ZWFjNzE1MGEuLmNjNjc1
NDYzYjc5YmRhOTU4ZDgyMzdhYmFhNTJlMTFmYzUxNDE5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwpAQCAt
NTgxLDYgKzU4MSw3IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgdGhpcy5fYm91bmRTZWxlY3Rpb25DaGFuZ2VMaXN0ZW5lciA9IHRoaXMu
X2hhbmRsZVNlbGVjdGlvbkNoYW5nZS5iaW5kKHRoaXMpOwogICAgICAgICBkb2N1bWVudC5hZGRF
dmVudExpc3RlbmVyKCJzZWxlY3Rpb25jaGFuZ2UiLCB0aGlzLl9ib3VuZFNlbGVjdGlvbkNoYW5n
ZUxpc3RlbmVyLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX21haW5QYW5lbC5fYXR0YWNoTXV0YXRp
b25PYnNlcnZlcigpOwogICAgIH0sCiAKICAgICBfaGFuZGxlRm9jdXNlZDogZnVuY3Rpb24oKQpA
QCAtNTkxLDYgKzU5Miw3IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5
cGUgPSB7CiAKICAgICB3aWxsSGlkZTogZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAgdGhpcy5f
bWFpblBhbmVsLl9kZXRhY2hNdXRhdGlvbk9ic2VydmVyKCk7CiAgICAgICAgIGRvY3VtZW50LnJl
bW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsIHRoaXMuX2JvdW5kU2VsZWN0aW9u
Q2hhbmdlTGlzdGVuZXIsIGZhbHNlKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2JvdW5kU2VsZWN0
aW9uQ2hhbmdlTGlzdGVuZXI7CiAKQEAgLTg3Nyw3ICs4NzksNyBAQCBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvckNodW5rZWRQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBkZWxldGUg
dGhpcy5fcmVwYWludEFsbFRpbWVyOwogCi0gICAgICAgIGlmICh0aGlzLl9wYWludENvYWxlc2Np
bmdMZXZlbCB8fCB0aGlzLl9kaXJ0eUxpbmVzKQorICAgICAgICBpZiAodGhpcy5fcGFpbnRDb2Fs
ZXNjaW5nTGV2ZWwpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFyIHZpc2libGVG
cm9tID0gdGhpcy5lbGVtZW50LnNjcm9sbFRvcDsKQEAgLTEyNjYsMTkgKzEyNjgsMjcgQEAgV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgdGV4dE1v
ZGVsLCB1cmwsIHN5bmNTY3JvbGwKICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
c2Nyb2xsIiwgdGhpcy5fc2Nyb2xsLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9oYW5kbGVFbGVtZW50Rm9jdXMuYmlu
ZCh0aGlzKSwgZmFsc2UpOwogCi0gICAgLy8gT1BUSU1JWkFUSU9OLiBJdCBpcyB2ZXJ5IGV4cGVu
c2l2ZSB0byBsaXN0ZW4gdG8gdGhlIERPTSBtdXRhdGlvbiBldmVudHMsIHRodXMgd2UgcmVtb3Zl
IHRoZQotICAgIC8vIGxpc3RlbmVycyB3aGVuZXZlciB3ZSBkbyBhbnkgaW50ZXJuYWwgRE9NIG1h
bmlwdWxhdGlvbnMgKHN1Y2ggYXMgZXhwYW5kL2NvbGxhcHNlIGxpbmUgcm93cykKLSAgICAvLyBh
bmQgc2V0IHRoZSBsaXN0ZW5lcnMgYmFjayB3aGVuIHdlIGFyZSBmaW5pc2hlZC4KLSAgICB0aGlz
Ll9oYW5kbGVET01VcGRhdGVzQ2FsbGJhY2sgPSB0aGlzLl9oYW5kbGVET01VcGRhdGVzLmJpbmQo
dGhpcyk7Ci0gICAgdGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNoYXJhY3Rl
ckRhdGFNb2RpZmllZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywgZmFsc2UpOwot
ICAgIHRoaXMuX2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlSW5zZXJ0ZWQiLCB0
aGlzLl9oYW5kbGVET01VcGRhdGVzQ2FsbGJhY2ssIGZhbHNlKTsKLSAgICB0aGlzLl9jb250YWlu
ZXIuYWRkRXZlbnRMaXN0ZW5lcigiRE9NU3VidHJlZU1vZGlmaWVkIiwgdGhpcy5faGFuZGxlRE9N
VXBkYXRlc0NhbGxiYWNrLCBmYWxzZSk7Ci0KICAgICB0aGlzLl9mcmVlQ2FjaGVkRWxlbWVudHMo
KTsKICAgICB0aGlzLl9idWlsZENodW5rcygpOwogfQogCiBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CisgICAgX2F0dGFjaE11dGF0aW9uT2JzZXJ2ZXI6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9tdXRhdGlvbk9ic2VydmVyKQorICAg
ICAgICAgICAgdGhpcy5fbXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIHRo
aXMuX211dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcih0aGlzLl9o
YW5kbGVNdXRhdGlvbnMuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX211dGF0aW9uT2JzZXJ2
ZXIub2JzZXJ2ZSh0aGlzLl9jb250YWluZXIsIHsgc3VidHJlZTogdHJ1ZSwgY2hpbGRMaXN0OiB0
cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOworICAgIH0sCisKKyAgICBfZGV0YWNoTXV0YXRp
b25PYnNlcnZlcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX211dGF0aW9u
T2JzZXJ2ZXIpIHsKKyAgICAgICAgICAgIHRoaXMuX211dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVj
dCgpOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX211dGF0aW9uT2JzZXJ2ZXI7CisgICAgICAg
IH0KKyAgICB9LAorCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IG1pbWVUeXBlCiAg
ICAgICovCkBAIC0xNDAzLDE2ICsxNDEzLDEzIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFp
blBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBtYXJrZWRMaW5lID0gdGhpcy5f
cmFuZ2VUb01hcmsuc3RhcnRMaW5lOwogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3JhbmdlVG9N
YXJrOwogICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBtYXJrZWQgcmVnaW9uIGltbWVkaWF0ZWx5
LgotICAgICAgICAgICAgaWYgKCF0aGlzLl9kaXJ0eUxpbmVzKSB7Ci0gICAgICAgICAgICAgICAg
dGhpcy5iZWdpbkRvbVVwZGF0ZXMoKTsKLSAgICAgICAgICAgICAgICB2YXIgY2h1bmsgPSB0aGlz
LmNodW5rRm9yTGluZShtYXJrZWRMaW5lKTsKLSAgICAgICAgICAgICAgICB2YXIgd2FzRXhwYW5k
ZWQgPSBjaHVuay5leHBhbmRlZDsKLSAgICAgICAgICAgICAgICBjaHVuay5leHBhbmRlZCA9IGZh
bHNlOwotICAgICAgICAgICAgICAgIGNodW5rLnVwZGF0ZUNvbGxhcHNlZExpbmVSb3coKTsKLSAg
ICAgICAgICAgICAgICBjaHVuay5leHBhbmRlZCA9IHdhc0V4cGFuZGVkOwotICAgICAgICAgICAg
ICAgIHRoaXMuZW5kRG9tVXBkYXRlcygpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgdGhpcy5fcGFpbnRMaW5lcyhtYXJrZWRMaW5lLCBtYXJrZWRMaW5lICsgMSk7CisgICAg
ICAgICAgICB0aGlzLmJlZ2luRG9tVXBkYXRlcygpOworICAgICAgICAgICAgdmFyIGNodW5rID0g
dGhpcy5jaHVua0ZvckxpbmUobWFya2VkTGluZSk7CisgICAgICAgICAgICB2YXIgd2FzRXhwYW5k
ZWQgPSBjaHVuay5leHBhbmRlZDsKKyAgICAgICAgICAgIGNodW5rLmV4cGFuZGVkID0gZmFsc2U7
CisgICAgICAgICAgICBjaHVuay51cGRhdGVDb2xsYXBzZWRMaW5lUm93KCk7CisgICAgICAgICAg
ICBjaHVuay5leHBhbmRlZCA9IHdhc0V4cGFuZGVkOworICAgICAgICAgICAgdGhpcy5lbmREb21V
cGRhdGVzKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAocmFuZ2UpIHsKQEAgLTE0NjQsOSAr
MTQ3MSw2IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBpZiAodGhpcy5fZGlydHlMaW5lcykKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLQogICAgICAgICB0aGlzLmJlZ2luVXBkYXRlcygpOwogCiAgICAgICAgIGZ1bmN0aW9uIGJl
Zm9yZSgpCkBAIC0xNDk4LDkgKzE1MDIsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5Q
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHRoaXMuX2RpcnR5TGluZXMpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMuX2dl
dFNlbGVjdGlvbigpOwogICAgICAgICBpZiAoIXNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTE2MDYsOSArMTYwNyw2IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFp
blBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAodGhpcy5fZGlydHlMaW5lcykKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLl9nZXRT
ZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTE2NjgsMjIgKzE2NjYsMTYgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgYmVnaW5Eb21VcGRhdGVzOiBmdW5jdGlvbigpCiAgICAg
eworICAgICAgICBpZiAoIXRoaXMuX2RvbVVwZGF0ZUNvYWxlc2NpbmdMZXZlbCkKKyAgICAgICAg
ICAgIHRoaXMuX2RldGFjaE11dGF0aW9uT2JzZXJ2ZXIoKTsKICAgICAgICAgV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlLmJlZ2luRG9tVXBkYXRlcy5jYWxsKHRo
aXMpOwotICAgICAgICBpZiAodGhpcy5fZG9tVXBkYXRlQ29hbGVzY2luZ0xldmVsID09PSAxKSB7
Ci0gICAgICAgICAgICB0aGlzLl9jb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ2hh
cmFjdGVyRGF0YU1vZGlmaWVkIiwgdGhpcy5faGFuZGxlRE9NVXBkYXRlc0NhbGxiYWNrLCBmYWxz
ZSk7Ci0gICAgICAgICAgICB0aGlzLl9jb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9N
Tm9kZUluc2VydGVkIiwgdGhpcy5faGFuZGxlRE9NVXBkYXRlc0NhbGxiYWNrLCBmYWxzZSk7Ci0g
ICAgICAgICAgICB0aGlzLl9jb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NU3VidHJl
ZU1vZGlmaWVkIiwgdGhpcy5faGFuZGxlRE9NVXBkYXRlc0NhbGxiYWNrLCBmYWxzZSk7Ci0gICAg
ICAgIH0KICAgICB9LAogCiAgICAgZW5kRG9tVXBkYXRlczogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDaHVua2VkUGFuZWwucHJvdG90eXBlLmVuZERv
bVVwZGF0ZXMuY2FsbCh0aGlzKTsKLSAgICAgICAgaWYgKHRoaXMuX2RvbVVwZGF0ZUNvYWxlc2Np
bmdMZXZlbCA9PT0gMCkgewotICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlz
dGVuZXIoIkRPTUNoYXJhY3RlckRhdGFNb2RpZmllZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0ZXND
YWxsYmFjaywgZmFsc2UpOwotICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlz
dGVuZXIoIkRPTU5vZGVJbnNlcnRlZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywg
ZmFsc2UpOwotICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIkRP
TVN1YnRyZWVNb2RpZmllZCIsIHRoaXMuX2hhbmRsZURPTVVwZGF0ZXNDYWxsYmFjaywgZmFsc2Up
OwotICAgICAgICB9CisgICAgICAgIGlmICghdGhpcy5fZG9tVXBkYXRlQ29hbGVzY2luZ0xldmVs
KQorICAgICAgICAgICAgdGhpcy5fYXR0YWNoTXV0YXRpb25PYnNlcnZlcigpOwogICAgIH0sCiAK
ICAgICBfYnVpbGRDaHVua3M6IGZ1bmN0aW9uKCkKQEAgLTE3NzksNyArMTc3MSw3IEBAIFdlYklu
c3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICAvLyBSZXNjaGVkdWxlIHRoZSB0aW1lciBpZiB3ZSBjYW4gbm90IHBh
aW50IHRoZSBsaW5lcyB5ZXQsIG9yIHRoZSB1c2VyIGlzIHNjcm9sbGluZy4KLSAgICAgICAgaWYg
KHRoaXMuX2RpcnR5TGluZXMgfHwgdGhpcy5fcmVwYWludEFsbFRpbWVyKSB7CisgICAgICAgIGlm
ICh0aGlzLl9yZXBhaW50QWxsVGltZXIpIHsKICAgICAgICAgICAgIHRoaXMuX3BhaW50U2NoZWR1
bGVkTGluZXNUaW1lciA9IHNldFRpbWVvdXQodGhpcy5fcGFpbnRTY2hlZHVsZWRMaW5lcy5iaW5k
KHRoaXMpLCA1MCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE4MzgsNyAr
MTgzMCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdmFyIGludmlzaWJsZUxpbmVSb3dzID0gW107CiAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbGluZUNodW5rcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIGxpbmVD
aHVuayA9IGxpbmVDaHVua3NbaV07Ci0gICAgICAgICAgICBpZiAodGhpcy5fZGlydHlMaW5lcyB8
fCB0aGlzLl9zY2hlZHVsZWRQYWludExpbmVzKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fc2No
ZWR1bGVkUGFpbnRMaW5lcykgewogICAgICAgICAgICAgICAgIHRoaXMuX3NjaGVkdWxlUGFpbnRM
aW5lcyhsaW5lQ2h1bmsuc3RhcnRMaW5lLCBsaW5lQ2h1bmsuZW5kTGluZSk7CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC0xODc4LDEwICsxODcwLDYgQEAgV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgIF9wYWludExp
bmU6IGZ1bmN0aW9uKGxpbmVSb3cpCiAgICAgewogICAgICAgICB2YXIgbGluZU51bWJlciA9IGxp
bmVSb3cubGluZU51bWJlcjsKLSAgICAgICAgaWYgKHRoaXMuX2RpcnR5TGluZXMpIHsKLSAgICAg
ICAgICAgIHRoaXMuX3NjaGVkdWxlUGFpbnRMaW5lcyhsaW5lTnVtYmVyLCBsaW5lTnVtYmVyICsg
MSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAogICAgICAgICB0aGlzLmJlZ2lu
RG9tVXBkYXRlcygpOwogICAgICAgICB0cnkgewpAQCAtMjEwMyw2ICsyMDkxLDggQEAgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBz
cGFuID0gdGhpcy5fY2FjaGVkU3BhbnMucG9wKCkgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c3BhbiIpOwogICAgICAgICBzcGFuLmNsYXNzTmFtZSA9ICJ3ZWJraXQtIiArIGNsYXNzTmFtZTsK
KyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1Z0RlZmF1bHRUZXh0RWRpdG9yKSAvLyBGb3Ig
cGFpbnQgZGVidWdnaW5nLgorICAgICAgICAgICAgc3Bhbi5hZGRTdHlsZUNsYXNzKCJkZWJ1Zy1m
YWRlb3V0Iik7CiAgICAgICAgIHNwYW4udGV4dENvbnRlbnQgPSBjb250ZW50OwogICAgICAgICBl
bGVtZW50Lmluc2VydEJlZm9yZShzcGFuLCBvbGRDaGlsZCk7CiAgICAgICAgIGlmICghKCJzcGFu
cyIgaW4gZWxlbWVudCkpCkBAIC0yMTUwLDI5ICsyMTQwLDg4IEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHNwYW47CiAgICAg
fSwKIAotICAgIF9oYW5kbGVET01VcGRhdGVzOiBmdW5jdGlvbihlKQorICAgIC8qKgorICAgICAq
IEBwYXJhbSB7QXJyYXkuPFdlYktpdE11dGF0aW9uPn0gbXV0YXRpb25zCisgICAgICovCisgICAg
X2hhbmRsZU11dGF0aW9uczogZnVuY3Rpb24obXV0YXRpb25zKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX2RvbVVwZGF0ZUNvYWxlc2NpbmdMZXZlbCkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7Ci0gICAgICAgIGlmICh0YXJnZXQgPT09IHRo
aXMuX2NvbnRhaW5lcikKKyAgICAgICAgaWYgKHRoaXMuX3JlYWRPbmx5KQogICAgICAgICAgICAg
cmV0dXJuOwogCisgICAgICAgIC8vIEFubmloaWxhdGUgbm9vcCBCUiBhZGRpdGlvbiArIHJlbW92
YWwgdGhhdCB0YWtlcyBwbGFjZSB1cG9uIGxpbmUgcmVtb3ZhbC4KKyAgICAgICAgdmFyIGZpbHRl
cmVkTXV0YXRpb25zID0gbXV0YXRpb25zLnNsaWNlKCk7CisgICAgICAgIHZhciBhZGRlZEJScyA9
IG5ldyBNYXAoKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtdXRhdGlvbnMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgIHZhciBtdXRhdGlvbiA9IG11dGF0aW9uc1tpXTsKKyAgICAg
ICAgICAgIGlmIChtdXRhdGlvbi50eXBlICE9PSAiY2hpbGRMaXN0IikKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCA9
PT0gMSAmJiBtdXRhdGlvbi5hZGRlZE5vZGVzWzBdLm5vZGVOYW1lID09PSAiQlIiKQorICAgICAg
ICAgICAgICAgIGFkZGVkQlJzLnB1dChtdXRhdGlvbi5hZGRlZE5vZGVzWzBdLCBtdXRhdGlvbik7
CisgICAgICAgICAgICBlbHNlIGlmIChtdXRhdGlvbi5yZW1vdmVkTm9kZXMubGVuZ3RoID09PSAx
ICYmIG11dGF0aW9uLnJlbW92ZWROb2Rlc1swXS5ub2RlTmFtZSA9PT0gIkJSIikgeworICAgICAg
ICAgICAgICAgIHZhciBub29wTXV0YXRpb24gPSBhZGRlZEJScy5nZXQobXV0YXRpb24ucmVtb3Zl
ZE5vZGVzWzBdKTsKKyAgICAgICAgICAgICAgICBpZiAobm9vcE11dGF0aW9uKSB7CisgICAgICAg
ICAgICAgICAgICAgIGZpbHRlcmVkTXV0YXRpb25zLnJlbW92ZShtdXRhdGlvbik7CisgICAgICAg
ICAgICAgICAgICAgIGZpbHRlcmVkTXV0YXRpb25zLnJlbW92ZShub29wTXV0YXRpb24pOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZhciBk
aXJ0eUxpbmVzOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbHRlcmVkTXV0YXRpb25z
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgbXV0YXRpb24gPSBmaWx0ZXJlZE11dGF0
aW9uc1tpXTsKKyAgICAgICAgICAgIHZhciBjaGFuZ2VkTm9kZXMgPSBbXTsKKyAgICAgICAgICAg
IGlmIChtdXRhdGlvbi50eXBlID09PSAiY2hpbGRMaXN0IiAmJiBtdXRhdGlvbi5hZGRlZE5vZGVz
Lmxlbmd0aCkKKyAgICAgICAgICAgICAgICBjaGFuZ2VkTm9kZXMgPSBBcnJheS5wcm90b3R5cGUu
c2xpY2UuY2FsbChtdXRhdGlvbi5hZGRlZE5vZGVzKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG11
dGF0aW9uLnR5cGUgPT09ICJjaGlsZExpc3QiICYmIG11dGF0aW9uLnJlbW92ZWROb2Rlcy5sZW5n
dGgpCisgICAgICAgICAgICAgICAgY2hhbmdlZE5vZGVzID0gQXJyYXkucHJvdG90eXBlLnNsaWNl
LmNhbGwobXV0YXRpb24ucmVtb3ZlZE5vZGVzKTsKKyAgICAgICAgICAgIGNoYW5nZWROb2Rlcy5w
dXNoKG11dGF0aW9uLnRhcmdldCk7CisKKyAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwg
Y2hhbmdlZE5vZGVzLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICAgICAgdmFyIGxpbmVzID0g
dGhpcy5fY29sbGVjdERpcnR5TGluZXMobXV0YXRpb24sIGNoYW5nZWROb2Rlc1tqXSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFsaW5lcykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgaWYgKCFkaXJ0eUxpbmVzKSB7CisgICAgICAgICAgICAgICAgICAgIGRp
cnR5TGluZXMgPSBsaW5lczsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRpcnR5TGluZXMuc3RhcnQgPSBNYXRoLm1pbihk
aXJ0eUxpbmVzLnN0YXJ0LCBsaW5lcy5zdGFydCk7CisgICAgICAgICAgICAgICAgZGlydHlMaW5l
cy5lbmQgPSBNYXRoLm1heChkaXJ0eUxpbmVzLmVuZCwgbGluZXMuZW5kKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChkaXJ0eUxpbmVzKSB7CisgICAgICAgICAgICBk
ZWxldGUgdGhpcy5fcmFuZ2VUb01hcms7CisgICAgICAgICAgICB0aGlzLl9hcHBseURvbVVwZGF0
ZXMoZGlydHlMaW5lcyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRl
YnVnRGVmYXVsdFRleHRFZGl0b3IpCisgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWxl
bWVudC5pbm5lclRleHQgPT09IHRoaXMuX3RleHRNb2RlbC50ZXh0KCkgKyAiXG4iLCAiRE9NIGRv
ZXMgbm90IG1hdGNoIG1vZGVsLiIpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e1dlYktpdE11dGF0aW9ufSBtdXRhdGlvbgorICAgICAqIEBwYXJhbSB7Tm9kZX0gdGFyZ2V0Cisg
ICAgICogQHJldHVybiB7P09iamVjdH0KKyAgICAgKi8KKyAgICBfY29sbGVjdERpcnR5TGluZXM6
IGZ1bmN0aW9uKG11dGF0aW9uLCB0YXJnZXQpCisgICAgewogICAgICAgICB2YXIgbGluZVJvdyA9
IHRoaXMuX2VuY2xvc2luZ0xpbmVSb3dPclNlbGYodGFyZ2V0KTsKICAgICAgICAgaWYgKCFsaW5l
Um93KQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAg
ICAgICAgaWYgKGxpbmVSb3cuZGVjb3JhdGlvbnNFbGVtZW50ICYmIGxpbmVSb3cuZGVjb3JhdGlv
bnNFbGVtZW50LmlzU2VsZk9yQW5jZXN0b3IodGFyZ2V0KSkgewogICAgICAgICAgICAgaWYgKHRo
aXMuX3N5bmNEZWNvcmF0aW9uc0ZvckxpbmVMaXN0ZW5lcikKICAgICAgICAgICAgICAgICB0aGlz
Ll9zeW5jRGVjb3JhdGlvbnNGb3JMaW5lTGlzdGVuZXIobGluZVJvdy5saW5lTnVtYmVyKTsKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHRoaXMuX3JlYWRPbmx5KQotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CiAKLSAgICAgICAgaWYgKHRhcmdldCA9PT0gbGluZVJvdyAmJiBl
LnR5cGUgPT09ICJET01Ob2RlSW5zZXJ0ZWQiKSB7CisgICAgICAgIGlmICh0YXJnZXQgPT09IGxp
bmVSb3cgJiYgbXV0YXRpb24udHlwZSA9PT0gImNoaWxkTGlzdCIgJiYgbXV0YXRpb24uYWRkZWRO
b2Rlcy5sZW5ndGgpIHsKICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBuZXdseSBpbnNl
cnRlZCBsaW5lIHJvdyBoYXMgbm8gbGluZU51bWJlci4KICAgICAgICAgICAgIGRlbGV0ZSBsaW5l
Um93LmxpbmVOdW1iZXI7CiAgICAgICAgIH0KQEAgLTIxOTIsMzEgKzIyNDEsMTQgQEAgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX2Rp
cnR5TGluZXMpIHsKLSAgICAgICAgICAgIHRoaXMuX2RpcnR5TGluZXMuc3RhcnQgPSBNYXRoLm1p
bih0aGlzLl9kaXJ0eUxpbmVzLnN0YXJ0LCBzdGFydExpbmUpOwotICAgICAgICAgICAgdGhpcy5f
ZGlydHlMaW5lcy5lbmQgPSBNYXRoLm1heCh0aGlzLl9kaXJ0eUxpbmVzLmVuZCwgZW5kTGluZSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLl9kaXJ0eUxpbmVzID0geyBzdGFy
dDogc3RhcnRMaW5lLCBlbmQ6IGVuZExpbmUgfTsKLSAgICAgICAgICAgIHNldFRpbWVvdXQodGhp
cy5fYXBwbHlEb21VcGRhdGVzLmJpbmQodGhpcyksIDApOwotICAgICAgICAgICAgLy8gUmVtb3Zl
IG1hcmtlZCByYW5nZXMsIGlmIGFueS4KLSAgICAgICAgICAgIHRoaXMubWFya0FuZFJldmVhbFJh
bmdlKG51bGwpOwotICAgICAgICB9CisgICAgICAgIHJldHVybiB7IHN0YXJ0OiBzdGFydExpbmUs
IGVuZDogZW5kTGluZSB9OwogICAgIH0sCiAKLSAgICBfYXBwbHlEb21VcGRhdGVzOiBmdW5jdGlv
bigpCisgICAgLyoqCisgICAgICogQHBhcmFtIHtPYmplY3R9IGRpcnR5TGluZXMKKyAgICAgKi8K
KyAgICBfYXBwbHlEb21VcGRhdGVzOiBmdW5jdGlvbihkaXJ0eUxpbmVzKQogICAgIHsKLSAgICAg
ICAgaWYgKCF0aGlzLl9kaXJ0eUxpbmVzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IC8vIENoZWNrIGlmIHRoZSBlZGl0b3IgaGFkIGJlZW4gc2V0IHJlYWRPbmx5IGJ5IHRoZSBtb21l
bnQgd2hlbiB0aGlzIGFzeW5jIGNhbGxiYWNrIGdvdCBleGVjdXRlZC4KLSAgICAgICAgaWYgKHRo
aXMuX3JlYWRPbmx5KSB7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fZGlydHlMaW5lczsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBkaXJ0eUxpbmVzID0g
dGhpcy5fZGlydHlMaW5lczsKLQogICAgICAgICB2YXIgZmlyc3RDaHVua051bWJlciA9IHRoaXMu
X2NodW5rTnVtYmVyRm9yTGluZShkaXJ0eUxpbmVzLnN0YXJ0KTsKICAgICAgICAgdmFyIHN0YXJ0
TGluZSA9IHRoaXMuX3RleHRDaHVua3NbZmlyc3RDaHVua051bWJlcl0uc3RhcnRMaW5lOwogICAg
ICAgICB2YXIgZW5kTGluZSA9IHRoaXMuX3RleHRNb2RlbC5saW5lc0NvdW50OwpAQCAtMjI4NSw3
ICsyMzE3LDYgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMuX2dldFNlbGVjdGlv
bigpOwotCiAgICAgICAgIGlmIChsaW5lcy5sZW5ndGggPT09IDAgJiYgZW5kTGluZSA8IHRoaXMu
X3RleHRNb2RlbC5saW5lc0NvdW50KQogICAgICAgICAgICAgdmFyIG9sZFJhbmdlID0gbmV3IFdl
Ykluc3BlY3Rvci5UZXh0UmFuZ2Uoc3RhcnRMaW5lLCAwLCBlbmRMaW5lLCAwKTsKICAgICAgICAg
ZWxzZSBpZiAobGluZXMubGVuZ3RoID09PSAwICYmIHN0YXJ0TGluZSA+IDApCkBAIC0yMjk0LDE5
ICsyMzI1LDE1IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHZhciBvbGRSYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdl
KHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUgLSAxLCBlbmRDb2x1bW4pOwogCiAgICAg
ICAgIHZhciBuZXdDb250ZW50ID0gbGluZXMuam9pbigiXG4iKTsKLSAgICAgICAgaWYgKHRoaXMu
X3RleHRNb2RlbC5jb3B5UmFuZ2Uob2xkUmFuZ2UpID09PSBuZXdDb250ZW50KSB7Ci0gICAgICAg
ICAgICBkZWxldGUgdGhpcy5fZGlydHlMaW5lczsKKyAgICAgICAgaWYgKHRoaXMuX3RleHRNb2Rl
bC5jb3B5UmFuZ2Uob2xkUmFuZ2UpID09PSBuZXdDb250ZW50KQogICAgICAgICAgICAgcmV0dXJu
OyAvLyBOb29wCi0gICAgICAgIH0KIAogICAgICAgICBpZiAobGluZXMubGVuZ3RoID09PSAxICYm
IGxpbmVzWzBdID09PSAifSIgJiYgb2xkUmFuZ2UuaXNFbXB0eSgpICYmIHNlbGVjdGlvbi5pc0Vt
cHR5KCkgJiYgIXRoaXMuX3RleHRNb2RlbC5saW5lKG9sZFJhbmdlLmVuZExpbmUpLnRyaW0oKSkK
ICAgICAgICAgICAgIHRoaXMuX3VuaW5kZW50QWZ0ZXJCbG9jayhvbGRSYW5nZSwgc2VsZWN0aW9u
KTsKLSAgICAgICAgCisKICAgICAgICAgLy8gVGhpcyBpcyBhICJmb3JlaWduIiBjYWxsIG91dHNp
ZGUgb2YgdGhpcyBjbGFzcy4gU2hvdWxkIGJlIGJlZm9yZSB3ZSBkZWxldGUgdGhlIGRpcnR5IGxp
bmVzIGZsYWcuCiAgICAgICAgIHRoaXMuX2VudGVyVGV4dENoYW5nZU1vZGUoKTsKIAotICAgICAg
ICBkZWxldGUgdGhpcy5fZGlydHlMaW5lczsKLQogICAgICAgICB2YXIgbmV3UmFuZ2UgPSB0aGlz
Ll9lZGl0UmFuZ2Uob2xkUmFuZ2UsIG5ld0NvbnRlbnQpOwogCiAgICAgICAgIHRoaXMuX3BhaW50
U2NoZWR1bGVkTGluZXModHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2V4dGVybnMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2V4dGVybnMuanMKaW5kZXggYTA2Y2U5ZTI2ZjczY2M0OWRmNGY5NmE0YzMwMDRlMDdmNjYy
Yjc3OS4uNTYxMTkzOGE4OTNkMzRkZWVkN2IzZDlhYTVlNmE2YjhkYTRiNWQ5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcwpAQCAtNjMsNiArNjMs
MjkgQEAgd2luZG93LmdldENvbXB1dGVkU3R5bGUgPSBmdW5jdGlvbihlbGVtZW50KSB7fQogZnVu
Y3Rpb24gcG9zdE1lc3NhZ2UobWVzc2FnZSkge30KIAogLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
LworZnVuY3Rpb24gV2ViS2l0TXV0YXRpb24oY2FsbGJhY2spCit7CisgICAgdGhpcy50eXBlID0g
IiI7CisgICAgLyoqIEB0eXBlIHtOb2RlfSAqLyB0aGlzLnRhcmdldCA9IG51bGw7CisgICAgLyoq
IEB0eXBlIHtBcnJheS48Tm9kZT59ICovIHRoaXMuYWRkZWROb2RlcyA9IFtdOworICAgIC8qKiBA
dHlwZSB7QXJyYXkuPE5vZGU+fSAqLyB0aGlzLnJlbW92ZWROb2RlcyA9IFtdOworfQorCisvKioK
KyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48V2ViS2l0TXV0YXRp
b24+KX0gY2FsbGJhY2sKKyAqLworZnVuY3Rpb24gV2ViS2l0TXV0YXRpb25PYnNlcnZlcihjYWxs
YmFjaykge30KKy8qKiAKKyAqIEBwYXJhbSB7Tm9kZX0gY29udGFpbmVyCisgKiBAcGFyYW0ge09i
amVjdH0gb3B0aW9ucworICovCitXZWJLaXRNdXRhdGlvbk9ic2VydmVyLnByb3RvdHlwZS5vYnNl
cnZlID0gZnVuY3Rpb24oY29udGFpbmVyLCBvcHRpb25zKSB7fQorV2ViS2l0TXV0YXRpb25PYnNl
cnZlci5wcm90b3R5cGUuZGlzY29ubmVjdCA9IGZ1bmN0aW9uKCkge30KKworLyoqCiAgKiBAcGFy
YW0ge3N0cmluZ30gZXZlbnROYW1lCiAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBsaXN0ZW5lcgogICog
QHBhcmFtIHtib29sZWFuPX0gY2FwdHVyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC90ZXh0RWRpdG9yLmNzcwppbmRleCA1YTE1ZjNiZTk3YzFlYjJmYzBmNGJm
MDg3MWNkODM1MmZhODU5MGExLi4yYTI1NjJiODM2NGMyMmUyNmY4NDNmNWMzYWU3MDljZTY4OGZk
ODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRF
ZGl0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dEVk
aXRvci5jc3MKQEAgLTE3OSwzICsxNzksMTkgQEAKICAgICBmcm9tIHtiYWNrZ3JvdW5kLWNvbG9y
OiByZ2IoMjU1LCAyNTUsIDEyMCk7IH0KICAgICB0byB7IGJhY2tncm91bmQtY29sb3I6IHdoaXRl
OyB9CiB9CisKKy5kZWJ1Zy1mYWRlb3V0IHsKKyAgICAtd2Via2l0LWFuaW1hdGlvbjogImRlYnVn
LWZhZGVvdXQiIDFzIDBzOworICAgIGJvcmRlcjogMXB4IHNvbGlkIHdoaXRlOworfQorCitALXdl
YmtpdC1rZXlmcmFtZXMgZGVidWctZmFkZW91dCB7CisgICAgZnJvbSB7CisgICAgICAgIGJvcmRl
ci1jb2xvcjogYmxhY2s7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwg
MTIwKTsKKyAgICB9CisgICAgdG8geworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsK
KyAgICAgICAgYm9yZGVyLWNvbG9yOiB3aGl0ZQorICAgIH0KK30K
</data>
<flag name="review"
          id="188680"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>