<?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>106801</bug_id>
          
          <creation_ts>2013-01-14 09:32:08 -0800</creation_ts>
          <short_desc>Web Inspector: highlight regexp API for DefaultTextEditor</short_desc>
          <delta_ts>2013-01-16 02:44:19 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Lushnikov">lushnikov</reporter>
          <assigned_to name="Andrey Lushnikov">lushnikov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rniwa</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>806415</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-01-14 09:32:08 -0800</bug_when>
    <thetext>Add a highlight regexp API for TextEditor and DefaultTextEditor. This API should provide with the following capabilities:
- highlight all occurrences of regexp in text with some css class
- remove highlight for given regexp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806421</commentid>
    <comment_count>1</comment_count>
      <attachid>182592</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-01-14 09:41:42 -0800</bug_when>
    <thetext>Created attachment 182592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806430</commentid>
    <comment_count>2</comment_count>
      <attachid>182593</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-01-14 09:46:03 -0800</bug_when>
    <thetext>Created attachment 182593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806436</commentid>
    <comment_count>3</comment_count>
      <attachid>182593</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-14 09:56:52 -0800</bug_when>
    <thetext>Comment on attachment 182593
Patch

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

Please rename Regexp into Regex in method names.

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:116
&gt; +    highlightRegexp: function(regexp, cssClass)

highlightRegex

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:1961
&gt; +                offsetTop: spans[i].offsetTop,

nuke

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:1963
&gt; +                offsetHeight: spans[i].offsetHeight

nuke

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:1980
&gt; +            highlight.style.marginTop = (metrics[i].offsetTop - highlight.offsetTop) + &quot;px&quot;;

nuke

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:2054
&gt; +                if (!this._highlightRegexps.hasOwnProperty(key))

This is always false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807139</commentid>
    <comment_count>4</comment_count>
      <attachid>182725</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-01-15 02:22:50 -0800</bug_when>
    <thetext>Created attachment 182725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807161</commentid>
    <comment_count>5</comment_count>
      <attachid>182725</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-15 03:32:17 -0800</bug_when>
    <thetext>Comment on attachment 182725
Patch

Attachment 182725 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15845891

New failing tests:
inspector/editor/highlighter-basics.html
inspector/editor/text-editor-highlight-regexp.html
inspector/editor/highlighter-paste-in-comment.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807173</commentid>
    <comment_count>6</comment_count>
      <attachid>182725</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 04:02:35 -0800</bug_when>
    <thetext>Comment on attachment 182725
Patch

Attachment 182725 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15860912

New failing tests:
inspector/editor/highlighter-basics.html
inspector/editor/highlighter-paste-in-comment.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807237</commentid>
    <comment_count>7</comment_count>
      <attachid>182752</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-01-15 06:18:37 -0800</bug_when>
    <thetext>Created attachment 182752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807268</commentid>
    <comment_count>8</comment_count>
      <attachid>182752</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-15 07:21:14 -0800</bug_when>
    <thetext>Comment on attachment 182752
Patch

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

&gt; Source/WebCore/inspector/front-end/DefaultTextEditor.js:1977
&gt; +        var extraWidth = 1;

const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807270</commentid>
    <comment_count>9</comment_count>
      <attachid>182752</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 07:23:08 -0800</bug_when>
    <thetext>Comment on attachment 182752
Patch

Rejecting attachment 182752 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
ore/inspector/front-end/TextEditor.js
patching file Source/WebCore/inspector/front-end/textEditor.css
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/inspector/editor/text-editor-highlight-regexp-expected.txt
patching file LayoutTests/inspector/editor/text-editor-highlight-regexp.html

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, &apos;Pavel Feldman&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/15884591</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808109</commentid>
    <comment_count>10</comment_count>
      <attachid>182927</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-01-16 00:21:24 -0800</bug_when>
    <thetext>Created attachment 182927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808124</commentid>
    <comment_count>11</comment_count>
      <attachid>182927</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-16 00:50:22 -0800</bug_when>
    <thetext>Comment on attachment 182927
Patch

Clearing flags on attachment: 182927

Committed r139844: &lt;http://trac.webkit.org/changeset/139844&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808125</commentid>
    <comment_count>12</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-16 00:50:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808206</commentid>
    <comment_count>13</comment_count>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-01-16 02:42:18 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808207</commentid>
    <comment_count>14</comment_count>
      <attachid>182945</attachid>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-01-16 02:42:22 -0800</bug_when>
    <thetext>Created attachment 182945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808209</commentid>
    <comment_count>15</comment_count>
    <who name="Andrey Lushnikov">lushnikov</who>
    <bug_when>2013-01-16 02:44:19 -0800</bug_when>
    <thetext>Attached patch to a wrong bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182592</attachid>
            <date>2013-01-14 09:41:42 -0800</date>
            <delta_ts>2013-01-14 09:45:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106801-20130114213842.patch</filename>
            <type>text/plain</type>
            <size>19876</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGEzN2Q2ODU1MjA0NWI0
ZWZlZTllNTZkMWNkNzE2NWFlYjVmZDA3ZC4uMDIxMGZkYTA3ZDExZDYyMGFiNTdjYTg0ZjJmZGU4
NzdmNzliNzExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAxLTE0ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBoaWdobGlnaHQgcmVnZXhwIEFQSSBmb3IgRGVmYXVsdFRleHRFZGl0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjgwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBoaWdobGlnaHRS
ZWdleHAgYW5kIHJlbW92ZVJlZ2V4cEhpZ2hsaWdodCBtZXRob2RzIHRvIERlZmF1bHRUZXh0RWRp
dG9yIHRoYXQgaGlnaGxpZ2h0CisgICAgICAgIGFsbCBvY2N1cnJlbmNlcyBvZiBnaXZlbiByZWdl
eHAgaW4gdGV4dCB3aXRoIGdpdmVuIGNzcyBjbGFzcy4KKyAgICAgICAgSGlnaGxpZ2h0IGlzIGRv
bmUgdmlhIHNwYW5zIHBvc2l0aW9uZWQgYWJzb2x1dGVseSBvdmVyIHRoZSByZWdleHAgb2NjdXJl
bmNlcyBpbiB0ZXh0LgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0
b3ItaGlnaGxpZ2h0LXJlZ2V4cC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0RlZmF1bHRUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0
RWRpdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5
cGUuaGlnaGxpZ2h0UmVnZXhwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVk
aXRvci5wcm90b3R5cGUucmVtb3ZlUmVnZXhwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yTWFpblBhbmVsLnByb3RvdHlwZS5oaWdobGlnaHRSZWdleHApOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLnJlbW92ZVJlZ2V4cEhpZ2hsaWdo
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUu
X3JlcGFpbnRWaXNpYmxlQ2h1bmtzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9y
TWFpblBhbmVsLnByb3RvdHlwZS5fZmluZFJlZ2V4cE9jY3VycmVuY2VzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fbWVhc3VyZVJlZ2V4cCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2Fw
cGVuZE92ZXJsYXlIaWdobGlnaHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JN
YWluUGFuZWwucHJvdG90eXBlLl9yZW5kZXJSYW5nZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9wYWludExpbmUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9pbnNlcnRTcGFuQmVmb3Jl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5f
Y2xvc2luZ0Jsb2NrT2Zmc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRF
ZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUuaGln
aGxpZ2h0UmVnZXhwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlw
ZS5yZW1vdmVSZWdleHBIaWdobGlnaHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
VGV4dEVkaXRvckhpZ2hsaWdodGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3JIaWdobGlnaHRlci5wcm90b3R5cGUuX2hpZ2hsaWdodExpbmVzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzOgorICAgICAgICAoLnRleHQtZWRpdG9yLW92
ZXJsYXktaGlnaGxpZ2h0KToKKwogMjAxMy0wMS0xNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJs
c29uQGFwcGxlLmNvbT4KIAogICAgICAgICBEbyBub3QgcGFzcyBuaWwgd2hlbiBpbml0aWFsaXpp
bmcgbGVnaWJsZSBvdXRwdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCmluZGV4IGI3YzEwMjJhODk3MzgzNTEwMWJl
ZjQxZWZkYTgwOGRmOGQ1NzNmZjMuLmI0M2Q0OGQ0MTJhY2ZkMGQzNzc5YTUwN2YzMTIyYjkyNTY5
NjQ3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVm
YXVsdFRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9EZWZhdWx0VGV4dEVkaXRvci5qcwpAQCAtOTUsNiArOTUsNyBAQCBXZWJJbnNwZWN0b3IuRGVm
YXVsdFRleHRFZGl0b3IgPSBmdW5jdGlvbih1cmwsIGRlbGVnYXRlKQogICAgIHRoaXMuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2NvbnRleHRNZW51LmJpbmQo
dGhpcyksIHRydWUpOwogCiAgICAgdGhpcy5fcmVnaXN0ZXJTaG9ydGN1dHMoKTsKKwogfQogCiAv
KioKQEAgLTExMCw2ICsxMTEsMjQgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLkVk
aXRJbmZvID0gZnVuY3Rpb24ocmFuZ2UsIHRleHQpCiAKIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4
dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCisgICAgICogQHBhcmFtIHtSZWdFeHB9IHJl
Z2V4cAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjc3NDbGFzcworICAgICAqLworICAgIGhpZ2hs
aWdodFJlZ2V4cDogZnVuY3Rpb24ocmVnZXhwLCBjc3NDbGFzcykKKyAgICB7CisgICAgICAgIHRo
aXMuX21haW5QYW5lbC5oaWdobGlnaHRSZWdleHAocmVnZXhwLCBjc3NDbGFzcyk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7UmVnRXhwfSByZWdleHAKKyAgICAgKiBAcmV0dXJu
IHtib29sZWFufQorICAgICAqLworICAgIHJlbW92ZVJlZ2V4cEhpZ2hsaWdodDogZnVuY3Rpb24o
cmVnZXhwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21haW5QYW5lbC5yZW1vdmVSZWdl
eHBIaWdobGlnaHQocmVnZXhwKTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtz
dHJpbmd9IG1pbWVUeXBlCiAgICAgICovCiAgICAgc2V0IG1pbWVUeXBlKG1pbWVUeXBlKQpAQCAt
MTMzOCwxMSArMTM1Nyw0OSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbCA9IGZ1
bmN0aW9uKGRlbGVnYXRlLCB0ZXh0TW9kZWwsIHVybCwgc3luY1Njcm9sbAogCiAgICAgdGhpcy5f
Y29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5faGFuZGxlRm9jdXNlZC5i
aW5kKHRoaXMpLCBmYWxzZSk7CiAKKyAgICB0aGlzLl9oaWdobGlnaHRSZWdleHBzID0ge307CisK
ICAgICB0aGlzLl9mcmVlQ2FjaGVkRWxlbWVudHMoKTsKICAgICB0aGlzLmJ1aWxkQ2h1bmtzKCk7
CiB9CiAKIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXhwCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IGNzc0NsYXNzCisgICAgICovCisgICAgaGlnaGxpZ2h0UmVnZXhwOiBmdW5jdGlvbihyZWdl
eHAsIGNzc0NsYXNzKQorICAgIHsKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0UmVnZXhwc1tyZWdl
eHBdID0geworICAgICAgICAgICAgcmVnRXhwOiBuZXcgUmVnRXhwKHJlZ2V4cC5zb3VyY2UsICJn
IiArIChyZWdleHAuaWdub3JlQ2FzZSA/ICJpIiA6ICIiKSksCisgICAgICAgICAgICBjc3NDbGFz
czogY3NzQ2xhc3MKKyAgICAgICAgfTsKKyAgICAgICAgdGhpcy5fcmVwYWludFZpc2libGVDaHVu
a3MoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4cAor
ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgcmVtb3ZlUmVnZXhwSGlnaGxp
Z2h0OiBmdW5jdGlvbihyZWdleHApCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gZGVsZXRl
IHRoaXMuX2hpZ2hsaWdodFJlZ2V4cHNbcmVnZXhwXTsKKyAgICAgICAgdGhpcy5fcmVwYWludFZp
c2libGVDaHVua3MoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisgICAgX3Jl
cGFpbnRWaXNpYmxlQ2h1bmtzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgdmlzaWJs
ZUZyb20gPSB0aGlzLnNjcm9sbFRvcCgpOworICAgICAgICB2YXIgdmlzaWJsZVRvID0gdmlzaWJs
ZUZyb20gKyB0aGlzLmNsaWVudEhlaWdodCgpOworCisgICAgICAgIHZhciB2aXNpYmxlQ2h1bmtz
ID0gdGhpcy5maW5kVmlzaWJsZUNodW5rcyh2aXNpYmxlRnJvbSwgdmlzaWJsZVRvKTsKKyAgICAg
ICAgZm9yKHZhciBpID0gdmlzaWJsZUNodW5rcy5zdGFydDsgaSA8IHZpc2libGVDaHVua3MuZW5k
OyArK2kpIHsKKyAgICAgICAgICAgIHZhciBjaHVuayA9IHRoaXMuX3RleHRDaHVua3NbaV07Cisg
ICAgICAgICAgICB0aGlzLl9wYWludExpbmVzKGNodW5rLl9zdGFydExpbmUsIGNodW5rLl9zdGFy
dExpbmUgKyBjaHVuay5saW5lc0NvdW50KTsKKyAgICAgICAgfQorICAgIH0sCisKICAgICB3YXNT
aG93bjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fYm91bmRTZWxlY3Rpb25DaGFu
Z2VMaXN0ZW5lciA9IHRoaXMuX2hhbmRsZVNlbGVjdGlvbkNoYW5nZS5iaW5kKHRoaXMpOwpAQCAt
MTg2NCw2ICsxOTIxLDExNSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsaW5l
CisgICAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4CisgICAgICogQHJldHVybiB7QXJyYXkuPHtz
dGFydENvbHVtbjogbnVtYmVyLCBlbmRDb2x1bW46IG51bWJlcn0+fQorICAgICAqLworICAgIF9m
aW5kUmVnZXhwT2NjdXJyZW5jZXM6IGZ1bmN0aW9uKGxpbmUsIHJlZ2V4KQorICAgIHsKKyAgICAg
ICAgdmFyIHJhbmdlcyA9IFtdOworICAgICAgICB2YXIgcmVnZXhSZXN1bHQ7CisgICAgICAgIHdo
aWxlIChyZWdleFJlc3VsdCA9IHJlZ2V4LmV4ZWMobGluZSkpIHsKKyAgICAgICAgICAgIHJhbmdl
cy5wdXNoKHsKKyAgICAgICAgICAgICAgICBzdGFydENvbHVtbjogcmVnZXhSZXN1bHQuaW5kZXgs
CisgICAgICAgICAgICAgICAgZW5kQ29sdW1uOiByZWdleFJlc3VsdC5pbmRleCArIHJlZ2V4UmVz
dWx0WzBdLmxlbmd0aCAtIDEKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiByYW5nZXM7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RWxlbWVudH0g
bGluZVJvdworICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsaW5lCisgICAgICogQHBhcmFtIHtSZWdF
eHB9IHJlZ2V4CisgICAgICogQHJldHVybiB7QXJyYXkuPHtvZmZzZXRMZWZ0OiBudW1iZXIsIG9m
ZnNldFRvcDogbnVtYmVyLCBvZmZzZXRXaWR0aDogbnVtYmVyLCBvZmZzZXRIZWlnaHQ6IG51bWJl
cn0+fQorICAgICAqLworICAgIF9tZWFzdXJlUmVnZXhwOiBmdW5jdGlvbihsaW5lUm93LCBsaW5l
LCByZWdleCkKKyAgICB7CisgICAgICAgIHZhciByYW5nZXMgPSB0aGlzLl9maW5kUmVnZXhwT2Nj
dXJyZW5jZXMobGluZSwgcmVnZXgpOworICAgICAgICBpZiAocmFuZ2VzLmxlbmd0aCA9PT0gMCkK
KyAgICAgICAgICAgIHJldHVybiBbXTsKKworICAgICAgICB0aGlzLl9yZW5kZXJSYW5nZXMobGlu
ZVJvdywgbGluZSwgcmFuZ2VzKTsKKyAgICAgICAgdmFyIHNwYW5zID0gbGluZVJvdy5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgic3BhbiIpOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnRGVm
YXVsdFRleHRFZGl0b3IpCisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChzcGFucy5sZW5ndGgg
PT09IHJhbmdlcy5sZW5ndGgsICJSYW5nZXMgbnVtYmVyOiAiICsgcmFuZ2VzLmxlbmd0aCArICIg
IT09IHNwYW5zIG51bWJlcjogIiArIHNwYW5zLmxlbmd0aCk7CisKKyAgICAgICAgdmFyIG1ldHJp
Y3MgPSBbXTsKKyAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7ICsraSkK
KyAgICAgICAgICAgIG1ldHJpY3MucHVzaCh7CisgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdDog
c3BhbnNbaV0ub2Zmc2V0TGVmdCwKKyAgICAgICAgICAgICAgICBvZmZzZXRUb3A6IHNwYW5zW2ld
Lm9mZnNldFRvcCwKKyAgICAgICAgICAgICAgICBvZmZzZXRXaWR0aDogc3BhbnNbaV0ub2Zmc2V0
V2lkdGgsCisgICAgICAgICAgICAgICAgb2Zmc2V0SGVpZ2h0OiBzcGFuc1tpXS5vZmZzZXRIZWln
aHQKKyAgICAgICAgICAgIH0pOworICAgICAgICByZXR1cm4gbWV0cmljczsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtFbGVtZW50fSBsaW5lUm93CisgICAgICogQHBhcmFtIHtB
cnJheS48e29mZnNldExlZnQ6IG51bWJlciwgb2Zmc2V0VG9wOiBudW1iZXIsIG9mZnNldFdpZHRo
OiBudW1iZXIsIG9mZnNldEhlaWdodDogbnVtYmVyfT59IG1ldHJpY3MKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gY3NzQ2xhc3MKKyAgICAgKi8KKyAgICBfYXBwZW5kT3ZlcmxheUhpZ2hsaWdodDog
ZnVuY3Rpb24obGluZVJvdywgbWV0cmljcywgY3NzQ2xhc3MpCisgICAgeworICAgICAgICBmb3Io
dmFyIGkgPSAwOyBpIDwgbWV0cmljcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGhp
Z2hsaWdodCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgIGxp
bmVSb3cuYXBwZW5kQ2hpbGQoaGlnaGxpZ2h0KTsKKworICAgICAgICAgICAgaGlnaGxpZ2h0LnN0
eWxlLm1hcmdpbkxlZnQgPSAobWV0cmljc1tpXS5vZmZzZXRMZWZ0IC0gaGlnaGxpZ2h0Lm9mZnNl
dExlZnQpICsgInB4IjsKKyAgICAgICAgICAgIGhpZ2hsaWdodC5zdHlsZS5tYXJnaW5Ub3AgPSAo
bWV0cmljc1tpXS5vZmZzZXRUb3AgLSBoaWdobGlnaHQub2Zmc2V0VG9wKSArICJweCI7CisKKyAg
ICAgICAgICAgIGhpZ2hsaWdodC5hZGRTdHlsZUNsYXNzKGNzc0NsYXNzKTsKKyAgICAgICAgICAg
IGhpZ2hsaWdodC5hZGRTdHlsZUNsYXNzKCJ0ZXh0LWVkaXRvci1vdmVybGF5LWhpZ2hsaWdodCIp
OworICAgICAgICAgICAgaGlnaGxpZ2h0LnN0eWxlLndpZHRoID0gbWV0cmljc1tpXS5vZmZzZXRX
aWR0aCArICJweCI7CisgICAgICAgICAgICBoaWdobGlnaHQuc3R5bGUuaGVpZ2h0ID0gbWV0cmlj
c1tpXS5vZmZzZXRIZWlnaHQgKyAicHgiOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7RWxlbWVudH0gbGluZVJvdworICAgICAqIEBwYXJhbSB7c3RyaW5nfSBs
aW5lCisgICAgICogQHBhcmFtIHtBcnJheS48e3N0YXJ0Q29sdW1uOiBudW1iZXIsIGVuZENvbHVt
bjogbnVtYmVyLCBjc3NDbGFzczogc3RyaW5nfT59IHJhbmdlcworICAgICAqLworICAgIF9yZW5k
ZXJSYW5nZXM6IGZ1bmN0aW9uKGxpbmVSb3csIGxpbmUsIHJhbmdlcykKKyAgICB7CisgICAgICAg
IHZhciBkZWNvcmF0aW9uc0VsZW1lbnQgPSBsaW5lUm93LmRlY29yYXRpb25zRWxlbWVudDsKKyAg
ICAgICAgaWYgKCFkZWNvcmF0aW9uc0VsZW1lbnQpCisgICAgICAgICAgICBsaW5lUm93LnJlbW92
ZUNoaWxkcmVuKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBsaW5lUm93LmZpcnN0Q2hpbGQ7CisgICAgICAg
ICAgICAgICAgaWYgKCFjaGlsZCB8fCBjaGlsZCA9PT0gZGVjb3JhdGlvbnNFbGVtZW50KQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBsaW5lUm93LnJlbW92ZUNo
aWxkKGNoaWxkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghbGlu
ZSkKKyAgICAgICAgICAgIGxpbmVSb3cuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImJyIiksIGRlY29yYXRpb25zRWxlbWVudCk7CisKKyAgICAgICAgdmFyIHBsYWluVGV4dFN0
YXJ0ID0gMDsKKyAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykg
eworICAgICAgICAgICAgdmFyIHJhbmdlU3RhcnQgPSByYW5nZXNbaV0uc3RhcnRDb2x1bW47Cisg
ICAgICAgICAgICB2YXIgcmFuZ2VFbmQgPSByYW5nZXNbaV0uZW5kQ29sdW1uOworICAgICAgICAg
ICAgdmFyIGNzc0NsYXNzID0gcmFuZ2VzW2ldLmNzc0NsYXNzOworCisgICAgICAgICAgICBpZiAo
cGxhaW5UZXh0U3RhcnQgPCByYW5nZVN0YXJ0KSB7CisgICAgICAgICAgICAgICAgdGhpcy5faW5z
ZXJ0VGV4dE5vZGVCZWZvcmUobGluZVJvdywgZGVjb3JhdGlvbnNFbGVtZW50LCBsaW5lLnN1YnN0
cmluZyhwbGFpblRleHRTdGFydCwgcmFuZ2VTdGFydCkpOworICAgICAgICAgICAgICAgIC0tdGhp
cy5fcGFpbnRMaW5lc09wZXJhdGlvbnNDcmVkaXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB0aGlzLl9pbnNlcnRTcGFuQmVmb3JlKGxpbmVSb3csIGRlY29yYXRpb25zRWxlbWVudCwgbGlu
ZS5zdWJzdHJpbmcocmFuZ2VTdGFydCwgcmFuZ2VFbmQgKyAxKSwgY3NzQ2xhc3MpOworICAgICAg
ICAgICAgLS10aGlzLl9wYWludExpbmVzT3BlcmF0aW9uc0NyZWRpdDsKKyAgICAgICAgICAgIHBs
YWluVGV4dFN0YXJ0ID0gcmFuZ2VFbmQgKyAxOworICAgICAgICB9CisgICAgICAgIGlmIChwbGFp
blRleHRTdGFydCA8IGxpbmUubGVuZ3RoKSB7CisgICAgICAgICAgICB0aGlzLl9pbnNlcnRUZXh0
Tm9kZUJlZm9yZShsaW5lUm93LCBkZWNvcmF0aW9uc0VsZW1lbnQsIGxpbmUuc3Vic3RyaW5nKHBs
YWluVGV4dFN0YXJ0LCBsaW5lLmxlbmd0aCkpOworICAgICAgICAgICAgLS10aGlzLl9wYWludExp
bmVzT3BlcmF0aW9uc0NyZWRpdDsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKICAgICAg
KiBAcGFyYW0ge0VsZW1lbnR9IGxpbmVSb3cKICAgICAgKi8KICAgICBfcGFpbnRMaW5lOiBmdW5j
dGlvbihsaW5lUm93KQpAQCAtMTg4MSw0MiArMjA0NywyMyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAoIWhpZ2hsaWdodCkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHZhciBkZWNvcmF0aW9uc0Vs
ZW1lbnQgPSBsaW5lUm93LmRlY29yYXRpb25zRWxlbWVudDsKLSAgICAgICAgICAgIGlmICghZGVj
b3JhdGlvbnNFbGVtZW50KQotICAgICAgICAgICAgICAgIGxpbmVSb3cucmVtb3ZlQ2hpbGRyZW4o
KTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IGxpbmVSb3cuZmlyc3RDaGlsZDsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFjaGlsZCB8fCBjaGlsZCA9PT0gZGVjb3JhdGlvbnNFbGVtZW50
KQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGxp
bmVSb3cucmVtb3ZlQ2hpbGQoY2hpbGQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLQogICAgICAgICAgICAgdmFyIGxpbmUgPSB0aGlzLl90ZXh0TW9kZWwubGluZShsaW5lTnVt
YmVyKTsKLSAgICAgICAgICAgIHZhciByYW5nZXMgPSB0aGlzLl9oaWdobGlnaHRlci5vcmRlcmVk
UmFuZ2VzUGVyTGluZShsaW5lTnVtYmVyKTsKIAotICAgICAgICAgICAgaWYgKCFsaW5lKQotICAg
ICAgICAgICAgICAgIGxpbmVSb3cuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImJyIiksIGRlY29yYXRpb25zRWxlbWVudCk7CisgICAgICAgICAgICB2YXIgbWV0cmljcyA9IFtd
OworICAgICAgICAgICAgdmFyIGNzc0NsYXNzZXMgPSBbXTsKKyAgICAgICAgICAgIGZvcih2YXIg
a2V5IGluIHRoaXMuX2hpZ2hsaWdodFJlZ2V4cHMpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRo
aXMuX2hpZ2hsaWdodFJlZ2V4cHMuaGFzT3duUHJvcGVydHkoa2V5KSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5faGlnaGxp
Z2h0UmVnZXhwc1trZXldOworICAgICAgICAgICAgICAgIG1ldHJpY3MucHVzaCh0aGlzLl9tZWFz
dXJlUmVnZXhwKGxpbmVSb3csIGxpbmUsIHZhbHVlLnJlZ0V4cCkpOworICAgICAgICAgICAgICAg
IGNzc0NsYXNzZXMucHVzaCh2YWx1ZS5jc3NDbGFzcyk7CisgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIHZhciBwbGFpblRleHRTdGFydCA9IDA7Ci0gICAgICAgICAgICBmb3IodmFyIGkgPSAw
OyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJhbmdlU3Rh
cnQgPSByYW5nZXNbaV0uc3RhcnRDb2x1bW47Ci0gICAgICAgICAgICAgICAgdmFyIHJhbmdlRW5k
ID0gcmFuZ2VzW2ldLmVuZENvbHVtbjsKLSAgICAgICAgICAgICAgICB2YXIgcmFuZ2VUb2tlbiA9
IHJhbmdlc1tpXS50b2tlbjsKKyAgICAgICAgICAgIHZhciByYW5nZXMgPSB0aGlzLl9oaWdobGln
aHRlci5vcmRlcmVkUmFuZ2VzUGVyTGluZShsaW5lTnVtYmVyKTsKKyAgICAgICAgICAgIHRoaXMu
X3JlbmRlclJhbmdlcyhsaW5lUm93LCBsaW5lLCByYW5nZXMpOwogCi0gICAgICAgICAgICAgICAg
aWYgKHBsYWluVGV4dFN0YXJ0IDwgcmFuZ2VTdGFydCkgewotICAgICAgICAgICAgICAgICAgICB0
aGlzLl9pbnNlcnRUZXh0Tm9kZUJlZm9yZShsaW5lUm93LCBkZWNvcmF0aW9uc0VsZW1lbnQsIGxp
bmUuc3Vic3RyaW5nKHBsYWluVGV4dFN0YXJ0LCByYW5nZVN0YXJ0KSk7Ci0gICAgICAgICAgICAg
ICAgICAgIC0tdGhpcy5fcGFpbnRMaW5lc09wZXJhdGlvbnNDcmVkaXQ7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydFNwYW5CZWZvcmUobGluZVJvdywgZGVj
b3JhdGlvbnNFbGVtZW50LCBsaW5lLnN1YnN0cmluZyhyYW5nZVN0YXJ0LCByYW5nZUVuZCArIDEp
LCByYW5nZVRva2VuKTsKLSAgICAgICAgICAgICAgICAtLXRoaXMuX3BhaW50TGluZXNPcGVyYXRp
b25zQ3JlZGl0OwotICAgICAgICAgICAgICAgIHBsYWluVGV4dFN0YXJ0ID0gcmFuZ2VFbmQgKyAx
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHBsYWluVGV4dFN0YXJ0IDwgbGluZS5s
ZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9pbnNlcnRUZXh0Tm9kZUJlZm9yZShsaW5l
Um93LCBkZWNvcmF0aW9uc0VsZW1lbnQsIGxpbmUuc3Vic3RyaW5nKHBsYWluVGV4dFN0YXJ0LCBs
aW5lLmxlbmd0aCkpOwotICAgICAgICAgICAgICAgIC0tdGhpcy5fcGFpbnRMaW5lc09wZXJhdGlv
bnNDcmVkaXQ7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwg
bWV0cmljcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRPdmVybGF5
SGlnaGxpZ2h0KGxpbmVSb3csIG1ldHJpY3NbaV0sIGNzc0NsYXNzZXNbaV0pOwogICAgICAgICB9
IGZpbmFsbHkgewogICAgICAgICAgICAgaWYgKHRoaXMuX3JhbmdlVG9NYXJrICYmIHRoaXMuX3Jh
bmdlVG9NYXJrLnN0YXJ0TGluZSA9PT0gbGluZU51bWJlcikKICAgICAgICAgICAgICAgICB0aGlz
Ll9tYXJrZWRSYW5nZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuaGlnaGxpZ2h0U2VhcmNoUmVzdWx0
KGxpbmVSb3csIHRoaXMuX3JhbmdlVG9NYXJrLnN0YXJ0Q29sdW1uLCB0aGlzLl9yYW5nZVRvTWFy
ay5lbmRDb2x1bW4gLSB0aGlzLl9yYW5nZVRvTWFyay5zdGFydENvbHVtbik7CkBAIC0yMTIzLDcg
KzIyNzAsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgc3BhbiA9IHRoaXMuX2NhY2hlZFNwYW5zLnBvcCgp
IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgc3Bhbi5jbGFzc05h
bWUgPSAid2Via2l0LSIgKyBjbGFzc05hbWU7CisgICAgICAgIHNwYW4uY2xhc3NOYW1lID0gY2xh
c3NOYW1lOwogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkZBTFNFKSAvLyBGb3IgcGFpbnQgZGVi
dWdnaW5nLgogICAgICAgICAgICAgc3Bhbi5hZGRTdHlsZUNsYXNzKCJkZWJ1Zy1mYWRlb3V0Iik7
CiAgICAgICAgIHNwYW4udGV4dENvbnRlbnQgPSBjb250ZW50OwpAQCAtMjM5Niw3ICsyNTQzLDcg
QEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgdmFyIHJhbmdlcyA9IGF0dHJpYnV0ZS5y
YW5nZXM7CiAgICAgICAgICAgICBmb3IgKHZhciBqID0gcmFuZ2VzLmxlbmd0aCAtIDE7IGogPj0g
MDsgai0tKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHRva2VuID0gcmFuZ2VzW2pdLnRva2VuOwor
ICAgICAgICAgICAgICAgIHZhciB0b2tlbiA9IHJhbmdlc1tqXS5jc3NDbGFzcy5yZXBsYWNlKC93
ZWJraXQtLywgIiIpOwogICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PT0gImJsb2NrLXN0YXJ0
IikgewogICAgICAgICAgICAgICAgICAgICBpZiAoISgtLW5lc3RpbmdMZXZlbCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBsaW5lQ29udGVudCA9IHRoaXMuX3RleHRNb2RlbC5saW5l
KGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0
RWRpdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9y
LmpzCmluZGV4IGM0NDk0Mzg1ZDA4ZGY1OTdmMzE4MjdiN2JkODg2ZDNkNDg0YWEyYWMuLjliOTdi
Y2M2MDE4NmRmMmZmMzlmZmEzMjlkY2YwYzM0NzMwNmI5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3IuanMKQEAgLTYxLDYgKzYxLDE4IEBA
IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICBkZWZhdWx0Rm9jdXNl
ZEVsZW1lbnQ6IGZ1bmN0aW9uKCkgeyB9LAogCiAgICAgLyoqCisgICAgICogQHBhcmFtIHtSZWdF
eHB9IHJlZ2V4cAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjc3NDbGFzcworICAgICAqLworICAg
IGhpZ2hsaWdodFJlZ2V4cDogZnVuY3Rpb24ocmVnZXhwLCBjc3NDbGFzcykgeyB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4cAorICAgICAqIEByZXR1cm4ge2Jvb2xl
YW59CisgICAgICovCisgICAgcmVtb3ZlUmVnZXhwSGlnaGxpZ2h0OiBmdW5jdGlvbihyZWdleHAp
IHsgfSwKKworICAgIC8qKgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCiAgICAg
ICovCiAgICAgcmV2ZWFsTGluZTogZnVuY3Rpb24obGluZU51bWJlcikgeyB9LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0
ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JIaWdo
bGlnaHRlci5qcwppbmRleCA1OGYyMzkxYjAzNzAyMGE4OTg4ZjgxZDgxNzk3N2I3NWRlMjRiZjJj
Li5lYzY0MWNlZDE1YTJmN2Y1NjNmMDFjYTRjOTMzYzQzMzliYWQwMDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JIaWdobGlnaHRlci5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3JIaWdo
bGlnaHRlci5qcwpAQCAtMjAwLDcgKzIwMCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9ySGln
aGxpZ2h0ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUucmFu
Z2VzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29sdW1uOiBsYXN0
SGlnaGxpZ2h0ZWRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQ29sdW1u
OiBuZXdDb2x1bW4gLSAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuOiB0b2tl
blR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzczogIndlYmtpdC0iICsg
dG9rZW5UeXBlCiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAg
ICAgbGFzdEhpZ2hsaWdodGVkQ29sdW1uID0gbmV3Q29sdW1uOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoKyt0b2tlbnNDb3VudCA+IHRoaXMuX2hpZ2hsaWdodENodW5rTGltaXQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9yLmNzcwppbmRleCAy
YTI1NjJiODM2NGMyMmUyNmY4NDNmNWMzYWU3MDljZTY4OGZkODA4Li4zOTA1ODhkYTE4ZTM2NTMx
OWE2N2E4Y2NiNDg3N2I2MGIwMTBjZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvdGV4dEVkaXRvci5jc3MKQEAgLTMwLDYgKzMwLDEzIEBACiAgICAgLXdl
YmtpdC11c2VyLXNlbGVjdDogdGV4dDsKIH0KIAorLnRleHQtZWRpdG9yLW92ZXJsYXktaGlnaGxp
Z2h0IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7
CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKKyAgICB6LWluZGV4OiAtMTsKK30KKwog
LnRleHQtZWRpdG9yLWNvbnRlbnRzIC5pbm5lci1jb250YWluZXIgewogICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKICAgICB0b3A6IDA7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjAzM2RhY2M0ZTRhY2E3ODI4NjNlYTIyY2U1
NzAxMDBjMzUxOWU4OS4uYWIxM2IyNGU2Zjg2M2I4NDYzZjQ5NGMyZmMyNTczZjFmOTNlMmQxYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAxLTE0ICBBbmRyZXkgTHVzaG5pa292ICA8bHVz
aG5pa292QGNocm9taXVtLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBoaWdobGlnaHQg
cmVnZXhwIEFQSSBmb3IgRGVmYXVsdFRleHRFZGl0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjgwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgRGVmYXVs
dFRleHRFZGl0b3IgaGlnaGxpZ2h0IHJlZ2V4cCBBUEkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZWRpdG9yL3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdleHAtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdleHAu
aHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMTQgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBVcGRhdGUgdGhlIHRyYWNrIGFj
Y2Vzc29ycyBvbiBNZWRpYVN0cmVhbSB0byBtYXRjaCB0aGUgbGF0ZXN0IHNwZWNpZmljYXRpb24K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItaGln
aGxpZ2h0LXJlZ2V4cC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9y
L3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdleHAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3
NGUxZTc4YjBkMTRiOGVhMDBlMmZmM2IxZWNhN2I0ODUzMTNlODkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdl
eHAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1Rlc3QgZWRpdG9yIGhpZ2hsaWdodCBy
ZWdleHAgQVBJLgorCisKK1J1bm5pbmc6IHRlc3RIaWdobGlnaHRBcGkKKworQmVmb3JlIGhpZ2hs
aWdodAorCis8ZGl2IGNsYXNzPSJpbm5lci1jb250YWluZXIiIHRhYmluZGV4PSIwIj4KKzxkaXYg
Y2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmZvbygpOzwvZGl2PgorPGRpdiBjbGFzcz0id2Vi
a2l0LWxpbmUtY29udGVudCI+Zm9vXzE7IGZvb3I7IGZvb187PC9kaXY+Cis8ZGl2IGNsYXNzPSJ3
ZWJraXQtbGluZS1jb250ZW50Ij5mb29fPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1j
b250ZW50Ij5nbG9iYWxfZm9vPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50
Ij5nbG9iYWxfZm9vMjwvZGl2PgorPGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29udGVudCI+c29t
ZV9vdGhlcl9mb29fWDwvZGl2PjwvZGl2PgorCitBZGQgaGlnaGxpZ2h0IGZvciByZWdleHAgL2Zv
b18uL2cKKworPGRpdiBjbGFzcz0iaW5uZXItY29udGFpbmVyIiB0YWJpbmRleD0iMCI+Cis8ZGl2
IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5mb28oKTs8L2Rpdj4KKzxkaXYgY2xhc3M9Indl
YmtpdC1saW5lLWNvbnRlbnQiPmZvb18xOyBmb29yOyBmb29fOzxzcGFuIHN0eWxlPSJtYXJnaW4t
bGVmdDogLTEyNnB4OyBtYXJnaW4tdG9wOiAwcHg7IHdpZHRoOiAzNXB4OyBoZWlnaHQ6IDE0cHg7
IiBjbGFzcz0ic29tZS1jc3MtY2xhc3MgdGV4dC1lZGl0b3Itb3ZlcmxheS1oaWdobGlnaHQiPjwv
c3Bhbj48c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IC0zNXB4OyBtYXJnaW4tdG9wOiAwcHg7IHdp
ZHRoOiAzNXB4OyBoZWlnaHQ6IDE0cHg7IiBjbGFzcz0ic29tZS1jc3MtY2xhc3MgdGV4dC1lZGl0
b3Itb3ZlcmxheS1oaWdobGlnaHQiPjwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1s
aW5lLWNvbnRlbnQiPmZvb188L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQi
Pmdsb2JhbF9mb288L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmdsb2Jh
bF9mb28yPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5zb21lX290aGVy
X2Zvb19YPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAtMzVweDsgbWFyZ2luLXRvcDogMHB4OyB3
aWR0aDogMzVweDsgaGVpZ2h0OiAxNHB4OyIgY2xhc3M9InNvbWUtY3NzLWNsYXNzIHRleHQtZWRp
dG9yLW92ZXJsYXktaGlnaGxpZ2h0Ij48L3NwYW4+PC9kaXY+PC9kaXY+CisKK1JlbW92ZSBoaWdo
bGlnaHQgZm9yIHJlZ2V4cCAvZm9vXy4vZworCis8ZGl2IGNsYXNzPSJpbm5lci1jb250YWluZXIi
IHRhYmluZGV4PSIwIj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmZvbygpOzwv
ZGl2PgorPGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29udGVudCI+Zm9vXzE7IGZvb3I7IGZvb187
PC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5mb29fPC9kaXY+Cis8ZGl2
IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5nbG9iYWxfZm9vPC9kaXY+Cis8ZGl2IGNsYXNz
PSJ3ZWJraXQtbGluZS1jb250ZW50Ij5nbG9iYWxfZm9vMjwvZGl2PgorPGRpdiBjbGFzcz0id2Vi
a2l0LWxpbmUtY29udGVudCI+c29tZV9vdGhlcl9mb29fWDwvZGl2PjwvZGl2PgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhpZ2hsaWdodC1y
ZWdleHAuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItaGln
aGxpZ2h0LXJlZ2V4cC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhN2VhZmY4MDZlOTgyYTIxOTcwMTNlNTJj
ZDZkOWVhNmVjNmVjOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZWRpdG9yL3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdleHAuaHRtbApAQCAtMCwwICsxLDQzIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJlZGl0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0
b3JUZXN0LnJ1blRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RIaWdobGlnaHRBcGko
bmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHRleHQgPSBbCisgICAgICAgICAgICAg
ICAgImZvbygpOyIsCisgICAgICAgICAgICAgICAgImZvb18xOyBmb29yOyBmb29fOyIsCisgICAg
ICAgICAgICAgICAgImZvb18iLAorICAgICAgICAgICAgICAgICJnbG9iYWxfZm9vIiwKKyAgICAg
ICAgICAgICAgICAiZ2xvYmFsX2ZvbzIiLAorICAgICAgICAgICAgICAgICJzb21lX290aGVyX2Zv
b19YIgorICAgICAgICAgICAgXTsKKyAgICAgICAgICAgIHZhciB0ZXh0RWRpdG9yID0gSW5zcGVj
dG9yVGVzdC5jcmVhdGVUZXN0RWRpdG9yKCk7CisgICAgICAgICAgICB0ZXh0RWRpdG9yLnNldFRl
eHQodGV4dC5qb2luKCJcbiIpKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJcbkJlZm9yZSBoaWdobGlnaHQiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KHRleHRFZGl0b3IuX21haW5QYW5lbC5lbGVtZW50LmlubmVySFRNTC5yZXBsYWNlKC88ZGl2
L2csICJcbjxkaXYiKSk7CisgICAgICAgICAgICB0ZXh0RWRpdG9yLmhpZ2hsaWdodFJlZ2V4cCgv
Zm9vXy4vLCAic29tZS1jc3MtY2xhc3MiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJcbkFkZCBoaWdobGlnaHQgZm9yIHJlZ2V4cCAvZm9vXy4vIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh0ZXh0RWRpdG9yLl9tYWluUGFuZWwuZWxlbWVudC5p
bm5lckhUTUwucmVwbGFjZSgvPGRpdi9nLCAiXG48ZGl2IikpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIlxuUmVtb3ZlIGhpZ2hsaWdodCBmb3IgcmVnZXhwIC9mb29fLi8i
KTsKKyAgICAgICAgICAgIHRleHRFZGl0b3IucmVtb3ZlUmVnZXhwSGlnaGxpZ2h0KC9mb29fLi8p
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQodGV4dEVkaXRvci5fbWFpblBh
bmVsLmVsZW1lbnQuaW5uZXJIVE1MLnJlcGxhY2UoLzxkaXYvZywgIlxuPGRpdiIpKTsKKyAgICAg
ICAgICAgIG5leHQoKTsKKyAgICAgICAgfSwKKyAgICBdKTsKK30KKworPC9zY3JpcHQ+Cis8L2hl
YWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdCBlZGl0b3IgaGlnaGxp
Z2h0IHJlZ2V4cCBBUEkuCis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182593</attachid>
            <date>2013-01-14 09:46:03 -0800</date>
            <delta_ts>2013-01-15 02:22:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106801-20130114214303.patch</filename>
            <type>text/plain</type>
            <size>19625</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGEzN2Q2ODU1MjA0NWI0
ZWZlZTllNTZkMWNkNzE2NWFlYjVmZDA3ZC4uNzcwNTJhODc2MGU1OWY3YzIyMzViNjJmZjI0NjU3
ZGMzNWIwNGFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTAxLTE0ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBoaWdobGlnaHQgcmVnZXhwIEFQSSBmb3IgRGVmYXVsdFRleHRFZGl0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjgwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBoaWdobGlnaHRS
ZWdleHAgYW5kIHJlbW92ZVJlZ2V4cEhpZ2hsaWdodCBtZXRob2RzIHRvIERlZmF1bHRUZXh0RWRp
dG9yIHRoYXQgaGlnaGxpZ2h0CisgICAgICAgIGFsbCBvY2N1cnJlbmNlcyBvZiBnaXZlbiByZWdl
eHAgaW4gdGV4dCB3aXRoIGdpdmVuIGNzcyBjbGFzcy4KKyAgICAgICAgSGlnaGxpZ2h0IGlzIGRv
bmUgdmlhIHNwYW5zIHBvc2l0aW9uZWQgYWJzb2x1dGVseSBvdmVyIHRoZSByZWdleHAgb2NjdXJl
bmNlcyBpbiB0ZXh0LgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0
b3ItaGlnaGxpZ2h0LXJlZ2V4cC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0RlZmF1bHRUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0
RWRpdG9yLnByb3RvdHlwZS5oaWdobGlnaHRSZWdleHApOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRlZmF1bHRUZXh0RWRpdG9yLnByb3RvdHlwZS5yZW1vdmVSZWdleHBIaWdobGlnaHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLmhpZ2hsaWdodFJlZ2V4cCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUucmVtb3Zl
UmVnZXhwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBh
bmVsLnByb3RvdHlwZS5fcmVwYWludFZpc2libGVDaHVua3MpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9maW5kUmVnZXhwT2NjdXJyZW5jZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLl9t
ZWFzdXJlUmVnZXhwKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVs
LnByb3RvdHlwZS5fYXBwZW5kT3ZlcmxheUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX3JlbmRlclJhbmdlcyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX3BhaW50TGluZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2lu
c2VydFNwYW5CZWZvcmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFu
ZWwucHJvdG90eXBlLl9jbG9zaW5nQmxvY2tPZmZzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9y
LnByb3RvdHlwZS5oaWdobGlnaHRSZWdleHApOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3IucHJvdG90eXBlLnJlbW92ZVJlZ2V4cEhpZ2hsaWdodCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGV4dEVkaXRvckhpZ2hsaWdodGVyLnByb3RvdHlwZS5faGlnaGxpZ2h0TGluZXMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdGV4dEVkaXRvci5jc3M6CisgICAgICAgICgu
dGV4dC1lZGl0b3Itb3ZlcmxheS1oaWdobGlnaHQpOgorCiAyMDEzLTAxLTE0ICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIERvIG5vdCBwYXNzIG5pbCB3
aGVuIGluaXRpYWxpemluZyBsZWdpYmxlIG91dHB1dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKaW5kZXggYjdjMTAy
MmE4OTczODM1MTAxYmVmNDFlZmRhODA4ZGY4ZDU3M2ZmMy4uMDAwNTI0NzIyODU2NzM1MjY1NDg0
ZjRiZWViN2IwODFmYWRkZjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCkBAIC0xMTAsNiArMTEwLDI0IEBA
IFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5FZGl0SW5mbyA9IGZ1bmN0aW9uKHJhbmdl
LCB0ZXh0KQogCiBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBlID0gewog
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7UmVnRXhwfSByZWdleHAKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gY3NzQ2xhc3MKKyAgICAgKi8KKyAgICBoaWdobGlnaHRSZWdleHA6IGZ1bmN0aW9uKHJl
Z2V4cCwgY3NzQ2xhc3MpCisgICAgeworICAgICAgICB0aGlzLl9tYWluUGFuZWwuaGlnaGxpZ2h0
UmVnZXhwKHJlZ2V4cCwgY3NzQ2xhc3MpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge1JlZ0V4cH0gcmVnZXhwCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAg
ICByZW1vdmVSZWdleHBIaWdobGlnaHQ6IGZ1bmN0aW9uKHJlZ2V4cCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9tYWluUGFuZWwucmVtb3ZlUmVnZXhwSGlnaGxpZ2h0KHJlZ2V4cCk7Cisg
ICAgfSwKKworICAgIC8qKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtaW1lVHlwZQogICAgICAq
LwogICAgIHNldCBtaW1lVHlwZShtaW1lVHlwZSkKQEAgLTEzMzgsMTEgKzEzNTYsNDkgQEAgV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgdGV4dE1v
ZGVsLCB1cmwsIHN5bmNTY3JvbGwKIAogICAgIHRoaXMuX2NvbnRhaW5lci5hZGRFdmVudExpc3Rl
bmVyKCJmb2N1cyIsIHRoaXMuX2hhbmRsZUZvY3VzZWQuYmluZCh0aGlzKSwgZmFsc2UpOwogCisg
ICAgdGhpcy5faGlnaGxpZ2h0UmVnZXhwcyA9IHt9OworCiAgICAgdGhpcy5fZnJlZUNhY2hlZEVs
ZW1lbnRzKCk7CiAgICAgdGhpcy5idWlsZENodW5rcygpOwogfQogCiBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtS
ZWdFeHB9IHJlZ2V4cAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjc3NDbGFzcworICAgICAqLwor
ICAgIGhpZ2hsaWdodFJlZ2V4cDogZnVuY3Rpb24ocmVnZXhwLCBjc3NDbGFzcykKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2hpZ2hsaWdodFJlZ2V4cHNbcmVnZXhwXSA9IHsKKyAgICAgICAgICAgIHJl
Z0V4cDogbmV3IFJlZ0V4cChyZWdleHAuc291cmNlLCAiZyIgKyAocmVnZXhwLmlnbm9yZUNhc2Ug
PyAiaSIgOiAiIikpLAorICAgICAgICAgICAgY3NzQ2xhc3M6IGNzc0NsYXNzCisgICAgICAgIH07
CisgICAgICAgIHRoaXMuX3JlcGFpbnRWaXNpYmxlQ2h1bmtzKCk7CisgICAgfSwKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7UmVnRXhwfSByZWdleHAKKyAgICAgKiBAcmV0dXJuIHtib29sZWFu
fQorICAgICAqLworICAgIHJlbW92ZVJlZ2V4cEhpZ2hsaWdodDogZnVuY3Rpb24ocmVnZXhwKQor
ICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGRlbGV0ZSB0aGlzLl9oaWdobGlnaHRSZWdleHBz
W3JlZ2V4cF07CisgICAgICAgIHRoaXMuX3JlcGFpbnRWaXNpYmxlQ2h1bmtzKCk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfSwKKworICAgIF9yZXBhaW50VmlzaWJsZUNodW5rczogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHZpc2libGVGcm9tID0gdGhpcy5zY3JvbGxUb3Ao
KTsKKyAgICAgICAgdmFyIHZpc2libGVUbyA9IHZpc2libGVGcm9tICsgdGhpcy5jbGllbnRIZWln
aHQoKTsKKworICAgICAgICB2YXIgdmlzaWJsZUNodW5rcyA9IHRoaXMuZmluZFZpc2libGVDaHVu
a3ModmlzaWJsZUZyb20sIHZpc2libGVUbyk7CisgICAgICAgIGZvcih2YXIgaSA9IHZpc2libGVD
aHVua3Muc3RhcnQ7IGkgPCB2aXNpYmxlQ2h1bmtzLmVuZDsgKytpKSB7CisgICAgICAgICAgICB2
YXIgY2h1bmsgPSB0aGlzLl90ZXh0Q2h1bmtzW2ldOworICAgICAgICAgICAgdGhpcy5fcGFpbnRM
aW5lcyhjaHVuay5fc3RhcnRMaW5lLCBjaHVuay5fc3RhcnRMaW5lICsgY2h1bmsubGluZXNDb3Vu
dCk7CisgICAgICAgIH0KKyAgICB9LAorCiAgICAgd2FzU2hvd246IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2JvdW5kU2VsZWN0aW9uQ2hhbmdlTGlzdGVuZXIgPSB0aGlzLl9oYW5k
bGVTZWxlY3Rpb25DaGFuZ2UuYmluZCh0aGlzKTsKQEAgLTE4NjQsNiArMTkyMCwxMTUgQEAgV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGluZQorICAgICAqIEBwYXJhbSB7UmVnRXhw
fSByZWdleAorICAgICAqIEByZXR1cm4ge0FycmF5Ljx7c3RhcnRDb2x1bW46IG51bWJlciwgZW5k
Q29sdW1uOiBudW1iZXJ9Pn0KKyAgICAgKi8KKyAgICBfZmluZFJlZ2V4cE9jY3VycmVuY2VzOiBm
dW5jdGlvbihsaW5lLCByZWdleCkKKyAgICB7CisgICAgICAgIHZhciByYW5nZXMgPSBbXTsKKyAg
ICAgICAgdmFyIHJlZ2V4UmVzdWx0OworICAgICAgICB3aGlsZSAocmVnZXhSZXN1bHQgPSByZWdl
eC5leGVjKGxpbmUpKSB7CisgICAgICAgICAgICByYW5nZXMucHVzaCh7CisgICAgICAgICAgICAg
ICAgc3RhcnRDb2x1bW46IHJlZ2V4UmVzdWx0LmluZGV4LAorICAgICAgICAgICAgICAgIGVuZENv
bHVtbjogcmVnZXhSZXN1bHQuaW5kZXggKyByZWdleFJlc3VsdFswXS5sZW5ndGggLSAxCisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmFuZ2VzOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGxpbmVSb3cKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gbGluZQorICAgICAqIEBwYXJhbSB7UmVnRXhwfSByZWdleAorICAgICAqIEByZXR1
cm4ge0FycmF5Ljx7b2Zmc2V0TGVmdDogbnVtYmVyLCBvZmZzZXRUb3A6IG51bWJlciwgb2Zmc2V0
V2lkdGg6IG51bWJlciwgb2Zmc2V0SGVpZ2h0OiBudW1iZXJ9Pn0KKyAgICAgKi8KKyAgICBfbWVh
c3VyZVJlZ2V4cDogZnVuY3Rpb24obGluZVJvdywgbGluZSwgcmVnZXgpCisgICAgeworICAgICAg
ICB2YXIgcmFuZ2VzID0gdGhpcy5fZmluZFJlZ2V4cE9jY3VycmVuY2VzKGxpbmUsIHJlZ2V4KTsK
KyAgICAgICAgaWYgKHJhbmdlcy5sZW5ndGggPT09IDApCisgICAgICAgICAgICByZXR1cm4gW107
CisKKyAgICAgICAgdGhpcy5fcmVuZGVyUmFuZ2VzKGxpbmVSb3csIGxpbmUsIHJhbmdlcyk7Cisg
ICAgICAgIHZhciBzcGFucyA9IGxpbmVSb3cuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKTsK
KyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1Z0RlZmF1bHRUZXh0RWRpdG9yKQorICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQoc3BhbnMubGVuZ3RoID09PSByYW5nZXMubGVuZ3RoLCAiUmFu
Z2VzIG51bWJlcjogIiArIHJhbmdlcy5sZW5ndGggKyAiICE9PSBzcGFucyBudW1iZXI6ICIgKyBz
cGFucy5sZW5ndGgpOworCisgICAgICAgIHZhciBtZXRyaWNzID0gW107CisgICAgICAgIGZvcih2
YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBtZXRyaWNzLnB1
c2goeworICAgICAgICAgICAgICAgIG9mZnNldExlZnQ6IHNwYW5zW2ldLm9mZnNldExlZnQsCisg
ICAgICAgICAgICAgICAgb2Zmc2V0VG9wOiBzcGFuc1tpXS5vZmZzZXRUb3AsCisgICAgICAgICAg
ICAgICAgb2Zmc2V0V2lkdGg6IHNwYW5zW2ldLm9mZnNldFdpZHRoLAorICAgICAgICAgICAgICAg
IG9mZnNldEhlaWdodDogc3BhbnNbaV0ub2Zmc2V0SGVpZ2h0CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuIG1ldHJpY3M7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
RWxlbWVudH0gbGluZVJvdworICAgICAqIEBwYXJhbSB7QXJyYXkuPHtvZmZzZXRMZWZ0OiBudW1i
ZXIsIG9mZnNldFRvcDogbnVtYmVyLCBvZmZzZXRXaWR0aDogbnVtYmVyLCBvZmZzZXRIZWlnaHQ6
IG51bWJlcn0+fSBtZXRyaWNzCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNzc0NsYXNzCisgICAg
ICovCisgICAgX2FwcGVuZE92ZXJsYXlIaWdobGlnaHQ6IGZ1bmN0aW9uKGxpbmVSb3csIG1ldHJp
Y3MsIGNzc0NsYXNzKQorICAgIHsKKyAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG1ldHJpY3Mu
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBoaWdobGlnaHQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICBsaW5lUm93LmFwcGVuZENoaWxkKGhpZ2hs
aWdodCk7CisKKyAgICAgICAgICAgIGhpZ2hsaWdodC5zdHlsZS5tYXJnaW5MZWZ0ID0gKG1ldHJp
Y3NbaV0ub2Zmc2V0TGVmdCAtIGhpZ2hsaWdodC5vZmZzZXRMZWZ0KSArICJweCI7CisgICAgICAg
ICAgICBoaWdobGlnaHQuc3R5bGUubWFyZ2luVG9wID0gKG1ldHJpY3NbaV0ub2Zmc2V0VG9wIC0g
aGlnaGxpZ2h0Lm9mZnNldFRvcCkgKyAicHgiOworCisgICAgICAgICAgICBoaWdobGlnaHQuYWRk
U3R5bGVDbGFzcyhjc3NDbGFzcyk7CisgICAgICAgICAgICBoaWdobGlnaHQuYWRkU3R5bGVDbGFz
cygidGV4dC1lZGl0b3Itb3ZlcmxheS1oaWdobGlnaHQiKTsKKyAgICAgICAgICAgIGhpZ2hsaWdo
dC5zdHlsZS53aWR0aCA9IG1ldHJpY3NbaV0ub2Zmc2V0V2lkdGggKyAicHgiOworICAgICAgICAg
ICAgaGlnaGxpZ2h0LnN0eWxlLmhlaWdodCA9IG1ldHJpY3NbaV0ub2Zmc2V0SGVpZ2h0ICsgInB4
IjsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0VsZW1lbnR9
IGxpbmVSb3cKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGluZQorICAgICAqIEBwYXJhbSB7QXJy
YXkuPHtzdGFydENvbHVtbjogbnVtYmVyLCBlbmRDb2x1bW46IG51bWJlciwgY3NzQ2xhc3M6IHN0
cmluZ30+fSByYW5nZXMKKyAgICAgKi8KKyAgICBfcmVuZGVyUmFuZ2VzOiBmdW5jdGlvbihsaW5l
Um93LCBsaW5lLCByYW5nZXMpCisgICAgeworICAgICAgICB2YXIgZGVjb3JhdGlvbnNFbGVtZW50
ID0gbGluZVJvdy5kZWNvcmF0aW9uc0VsZW1lbnQ7CisgICAgICAgIGlmICghZGVjb3JhdGlvbnNF
bGVtZW50KQorICAgICAgICAgICAgbGluZVJvdy5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgdmFyIGNo
aWxkID0gbGluZVJvdy5maXJzdENoaWxkOworICAgICAgICAgICAgICAgIGlmICghY2hpbGQgfHwg
Y2hpbGQgPT09IGRlY29yYXRpb25zRWxlbWVudCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgbGluZVJvdy5yZW1vdmVDaGlsZChjaGlsZCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWxpbmUpCisgICAgICAgICAgICBsaW5lUm93
Lmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpLCBkZWNvcmF0aW9uc0Vs
ZW1lbnQpOworCisgICAgICAgIHZhciBwbGFpblRleHRTdGFydCA9IDA7CisgICAgICAgIGZvcih2
YXIgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZhciByYW5n
ZVN0YXJ0ID0gcmFuZ2VzW2ldLnN0YXJ0Q29sdW1uOworICAgICAgICAgICAgdmFyIHJhbmdlRW5k
ID0gcmFuZ2VzW2ldLmVuZENvbHVtbjsKKyAgICAgICAgICAgIHZhciBjc3NDbGFzcyA9IHJhbmdl
c1tpXS5jc3NDbGFzczsKKworICAgICAgICAgICAgaWYgKHBsYWluVGV4dFN0YXJ0IDwgcmFuZ2VT
dGFydCkgeworICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydFRleHROb2RlQmVmb3JlKGxpbmVS
b3csIGRlY29yYXRpb25zRWxlbWVudCwgbGluZS5zdWJzdHJpbmcocGxhaW5UZXh0U3RhcnQsIHJh
bmdlU3RhcnQpKTsKKyAgICAgICAgICAgICAgICAtLXRoaXMuX3BhaW50TGluZXNPcGVyYXRpb25z
Q3JlZGl0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5faW5zZXJ0U3BhbkJlZm9y
ZShsaW5lUm93LCBkZWNvcmF0aW9uc0VsZW1lbnQsIGxpbmUuc3Vic3RyaW5nKHJhbmdlU3RhcnQs
IHJhbmdlRW5kICsgMSksIGNzc0NsYXNzKTsKKyAgICAgICAgICAgIC0tdGhpcy5fcGFpbnRMaW5l
c09wZXJhdGlvbnNDcmVkaXQ7CisgICAgICAgICAgICBwbGFpblRleHRTdGFydCA9IHJhbmdlRW5k
ICsgMTsKKyAgICAgICAgfQorICAgICAgICBpZiAocGxhaW5UZXh0U3RhcnQgPCBsaW5lLmxlbmd0
aCkgeworICAgICAgICAgICAgdGhpcy5faW5zZXJ0VGV4dE5vZGVCZWZvcmUobGluZVJvdywgZGVj
b3JhdGlvbnNFbGVtZW50LCBsaW5lLnN1YnN0cmluZyhwbGFpblRleHRTdGFydCwgbGluZS5sZW5n
dGgpKTsKKyAgICAgICAgICAgIC0tdGhpcy5fcGFpbnRMaW5lc09wZXJhdGlvbnNDcmVkaXQ7Cisg
ICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtFbGVtZW50fSBsaW5l
Um93CiAgICAgICovCiAgICAgX3BhaW50TGluZTogZnVuY3Rpb24obGluZVJvdykKQEAgLTE4ODEs
NDIgKzIwNDYsMjMgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgaWYgKCFoaWdobGlnaHQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgICAgICB2YXIgZGVjb3JhdGlvbnNFbGVtZW50ID0gbGluZVJvdy5kZWNvcmF0
aW9uc0VsZW1lbnQ7Ci0gICAgICAgICAgICBpZiAoIWRlY29yYXRpb25zRWxlbWVudCkKLSAgICAg
ICAgICAgICAgICBsaW5lUm93LnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgICAgICB2YXIg
Y2hpbGQgPSBsaW5lUm93LmZpcnN0Q2hpbGQ7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY2hp
bGQgfHwgY2hpbGQgPT09IGRlY29yYXRpb25zRWxlbWVudCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBsaW5lUm93LnJlbW92ZUNoaWxkKGNoaWxk
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIHZhciBs
aW5lID0gdGhpcy5fdGV4dE1vZGVsLmxpbmUobGluZU51bWJlcik7Ci0gICAgICAgICAgICB2YXIg
cmFuZ2VzID0gdGhpcy5faGlnaGxpZ2h0ZXIub3JkZXJlZFJhbmdlc1BlckxpbmUobGluZU51bWJl
cik7CiAKLSAgICAgICAgICAgIGlmICghbGluZSkKLSAgICAgICAgICAgICAgICBsaW5lUm93Lmlu
c2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpLCBkZWNvcmF0aW9uc0VsZW1l
bnQpOworICAgICAgICAgICAgdmFyIG1ldHJpY3MgPSBbXTsKKyAgICAgICAgICAgIHZhciBjc3ND
bGFzc2VzID0gW107CisgICAgICAgICAgICBmb3IodmFyIGtleSBpbiB0aGlzLl9oaWdobGlnaHRS
ZWdleHBzKSB7CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9oaWdobGlnaHRSZWdleHBzLmhh
c093blByb3BlcnR5KGtleSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX2hpZ2hsaWdodFJlZ2V4cHNba2V5XTsKKyAgICAg
ICAgICAgICAgICBtZXRyaWNzLnB1c2godGhpcy5fbWVhc3VyZVJlZ2V4cChsaW5lUm93LCBsaW5l
LCB2YWx1ZS5yZWdFeHApKTsKKyAgICAgICAgICAgICAgICBjc3NDbGFzc2VzLnB1c2godmFsdWUu
Y3NzQ2xhc3MpOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB2YXIgcGxhaW5UZXh0U3Rh
cnQgPSAwOwotICAgICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkr
KykgewotICAgICAgICAgICAgICAgIHZhciByYW5nZVN0YXJ0ID0gcmFuZ2VzW2ldLnN0YXJ0Q29s
dW1uOwotICAgICAgICAgICAgICAgIHZhciByYW5nZUVuZCA9IHJhbmdlc1tpXS5lbmRDb2x1bW47
Ci0gICAgICAgICAgICAgICAgdmFyIHJhbmdlVG9rZW4gPSByYW5nZXNbaV0udG9rZW47CisgICAg
ICAgICAgICB2YXIgcmFuZ2VzID0gdGhpcy5faGlnaGxpZ2h0ZXIub3JkZXJlZFJhbmdlc1Blckxp
bmUobGluZU51bWJlcik7CisgICAgICAgICAgICB0aGlzLl9yZW5kZXJSYW5nZXMobGluZVJvdywg
bGluZSwgcmFuZ2VzKTsKIAotICAgICAgICAgICAgICAgIGlmIChwbGFpblRleHRTdGFydCA8IHJh
bmdlU3RhcnQpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5zZXJ0VGV4dE5vZGVCZWZv
cmUobGluZVJvdywgZGVjb3JhdGlvbnNFbGVtZW50LCBsaW5lLnN1YnN0cmluZyhwbGFpblRleHRT
dGFydCwgcmFuZ2VTdGFydCkpOwotICAgICAgICAgICAgICAgICAgICAtLXRoaXMuX3BhaW50TGlu
ZXNPcGVyYXRpb25zQ3JlZGl0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0
aGlzLl9pbnNlcnRTcGFuQmVmb3JlKGxpbmVSb3csIGRlY29yYXRpb25zRWxlbWVudCwgbGluZS5z
dWJzdHJpbmcocmFuZ2VTdGFydCwgcmFuZ2VFbmQgKyAxKSwgcmFuZ2VUb2tlbik7Ci0gICAgICAg
ICAgICAgICAgLS10aGlzLl9wYWludExpbmVzT3BlcmF0aW9uc0NyZWRpdDsKLSAgICAgICAgICAg
ICAgICBwbGFpblRleHRTdGFydCA9IHJhbmdlRW5kICsgMTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChwbGFpblRleHRTdGFydCA8IGxpbmUubGVuZ3RoKSB7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5faW5zZXJ0VGV4dE5vZGVCZWZvcmUobGluZVJvdywgZGVjb3JhdGlvbnNFbGVtZW50
LCBsaW5lLnN1YnN0cmluZyhwbGFpblRleHRTdGFydCwgbGluZS5sZW5ndGgpKTsKLSAgICAgICAg
ICAgICAgICAtLXRoaXMuX3BhaW50TGluZXNPcGVyYXRpb25zQ3JlZGl0OwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG1ldHJpY3MubGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kT3ZlcmxheUhpZ2hsaWdodChsaW5lUm93LCBtZXRy
aWNzW2ldLCBjc3NDbGFzc2VzW2ldKTsKICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAg
IGlmICh0aGlzLl9yYW5nZVRvTWFyayAmJiB0aGlzLl9yYW5nZVRvTWFyay5zdGFydExpbmUgPT09
IGxpbmVOdW1iZXIpCiAgICAgICAgICAgICAgICAgdGhpcy5fbWFya2VkUmFuZ2VFbGVtZW50ID0g
V2ViSW5zcGVjdG9yLmhpZ2hsaWdodFNlYXJjaFJlc3VsdChsaW5lUm93LCB0aGlzLl9yYW5nZVRv
TWFyay5zdGFydENvbHVtbiwgdGhpcy5fcmFuZ2VUb01hcmsuZW5kQ29sdW1uIC0gdGhpcy5fcmFu
Z2VUb01hcmsuc3RhcnRDb2x1bW4pOwpAQCAtMjEyMyw3ICsyMjY5LDcgQEAgV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
dmFyIHNwYW4gPSB0aGlzLl9jYWNoZWRTcGFucy5wb3AoKSB8fCBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7Ci0gICAgICAgIHNwYW4uY2xhc3NOYW1lID0gIndlYmtpdC0iICsgY2xhc3NO
YW1lOworICAgICAgICBzcGFuLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKICAgICAgICAgaWYgKFdl
Ykluc3BlY3Rvci5GQUxTRSkgLy8gRm9yIHBhaW50IGRlYnVnZ2luZy4KICAgICAgICAgICAgIHNw
YW4uYWRkU3R5bGVDbGFzcygiZGVidWctZmFkZW91dCIpOwogICAgICAgICBzcGFuLnRleHRDb250
ZW50ID0gY29udGVudDsKQEAgLTIzOTYsNyArMjU0Miw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIHZhciByYW5nZXMgPSBhdHRyaWJ1dGUucmFuZ2VzOwogICAgICAgICAgICAgZm9y
ICh2YXIgaiA9IHJhbmdlcy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkgewotICAgICAgICAgICAg
ICAgIHZhciB0b2tlbiA9IHJhbmdlc1tqXS50b2tlbjsKKyAgICAgICAgICAgICAgICB2YXIgdG9r
ZW4gPSByYW5nZXNbal0uY3NzQ2xhc3MucmVwbGFjZSgvd2Via2l0LS8sICIiKTsKICAgICAgICAg
ICAgICAgICBpZiAodG9rZW4gPT09ICJibG9jay1zdGFydCIpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCEoLS1uZXN0aW5nTGV2ZWwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
bGluZUNvbnRlbnQgPSB0aGlzLl90ZXh0TW9kZWwubGluZShpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvci5qcwppbmRleCBjNDQ5NDM4NWQwOGRm
NTk3ZjMxODI3YjdiZDg4NmQzZDQ4NGFhMmFjLi45Yjk3YmNjNjAxODZkZjJmZjM5ZmZhMzI5ZGNm
MGMzNDczMDZiOTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UZXh0RWRpdG9yLmpzCkBAIC02MSw2ICs2MSwxOCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ci5wcm90b3R5cGUgPSB7CiAgICAgZGVmYXVsdEZvY3VzZWRFbGVtZW50OiBmdW5jdGlvbigpIHsg
fSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7UmVnRXhwfSByZWdleHAKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gY3NzQ2xhc3MKKyAgICAgKi8KKyAgICBoaWdobGlnaHRSZWdleHA6IGZ1bmN0
aW9uKHJlZ2V4cCwgY3NzQ2xhc3MpIHsgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7UmVn
RXhwfSByZWdleHAKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHJlbW92
ZVJlZ2V4cEhpZ2hsaWdodDogZnVuY3Rpb24ocmVnZXhwKSB7IH0sCisKKyAgICAvKioKICAgICAg
KiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgogICAgICAqLwogICAgIHJldmVhbExpbmU6IGZ1
bmN0aW9uKGxpbmVOdW1iZXIpIHsgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvckhpZ2hsaWdodGVyLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanMKaW5kZXggNThmMjM5
MWIwMzcwMjBhODk4OGY4MWQ4MTc5NzdiNzVkZTI0YmYyYy4uZWM2NDFjZWQxNWEyZjdmNTYzZjAx
Y2E0YzkzM2M0MzM5YmFkMDA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanMKQEAgLTIwMCw3ICsy
MDAsNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckhpZ2hsaWdodGVyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLnJhbmdlcy5wdXNoKHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGFydENvbHVtbjogbGFzdEhpZ2hsaWdodGVkQ29sdW1uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVuZENvbHVtbjogbmV3Q29sdW1uIC0gMSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogdG9rZW5UeXBlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3NzQ2xhc3M6ICJ3ZWJraXQtIiArIHRva2VuVHlwZQogICAgICAgICAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIGxhc3RIaWdobGlnaHRlZENvbHVt
biA9IG5ld0NvbHVtbjsKICAgICAgICAgICAgICAgICAgICAgaWYgKCsrdG9rZW5zQ291bnQgPiB0
aGlzLl9oaWdobGlnaHRDaHVua0xpbWl0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvdGV4dEVkaXRvci5jc3MKaW5kZXggMmEyNTYyYjgzNjRjMjJlMjZmODQzZjVj
M2FlNzA5Y2U2ODhmZDgwOC4uMzkwNTg4ZGExOGUzNjUzMTlhNjdhOGNjYjQ4NzdiNjBiMDEwY2Vl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRp
dG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0
b3IuY3NzCkBAIC0zMCw2ICszMCwxMyBAQAogICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7
CiB9CiAKKy50ZXh0LWVkaXRvci1vdmVybGF5LWhpZ2hsaWdodCB7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworICAgIC13ZWJraXQtdXNlci1zZWxl
Y3Q6IG5vbmU7CisgICAgei1pbmRleDogLTE7Cit9CisKIC50ZXh0LWVkaXRvci1jb250ZW50cyAu
aW5uZXItY29udGFpbmVyIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiAwOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGIwMzNkYWNjNGU0YWNhNzgyODYzZWEyMmNlNTcwMTAwYzM1MTllODkuLmFiMTNiMjRl
NmY4NjNiODQ2M2Y0OTRjMmZjMjU3M2YxZjkzZTJkMWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMy0wMS0xNCAgQW5kcmV5IEx1c2huaWtvdiAgPGx1c2huaWtvdkBjaHJvbWl1bS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0IHJlZ2V4cCBBUEkgZm9yIERlZmF1bHRU
ZXh0RWRpdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDY4MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBOZXcgbGF5b3V0IHRlc3QgdG8gdmVyaWZ5IERlZmF1bHRUZXh0RWRpdG9yIGhpZ2hsaWdodCBy
ZWdleHAgQVBJLgorCisgICAgICAgICogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1oaWdo
bGlnaHQtcmVnZXhwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Vk
aXRvci90ZXh0LWVkaXRvci1oaWdobGlnaHQtcmVnZXhwLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAx
LTE0ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1l
ZGlhU3RyZWFtIEFQSTogVXBkYXRlIHRoZSB0cmFjayBhY2Nlc3NvcnMgb24gTWVkaWFTdHJlYW0g
dG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjaWZpY2F0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdleHAtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1oaWdobGlnaHQt
cmVnZXhwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzRlMWU3OGIwZDE0YjhlYTAwZTJmZjNi
MWVjYTdiNDg1MzEzZTg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2VkaXRvci90ZXh0LWVkaXRvci1oaWdobGlnaHQtcmVnZXhwLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDM1IEBACitUZXN0IGVkaXRvciBoaWdobGlnaHQgcmVnZXhwIEFQSS4KKworCitSdW5uaW5n
OiB0ZXN0SGlnaGxpZ2h0QXBpCisKK0JlZm9yZSBoaWdobGlnaHQKKworPGRpdiBjbGFzcz0iaW5u
ZXItY29udGFpbmVyIiB0YWJpbmRleD0iMCI+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250
ZW50Ij5mb28oKTs8L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmZvb18x
OyBmb29yOyBmb29fOzwvZGl2PgorPGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29udGVudCI+Zm9v
XzwvZGl2PgorPGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29udGVudCI+Z2xvYmFsX2ZvbzwvZGl2
PgorPGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29udGVudCI+Z2xvYmFsX2ZvbzI8L2Rpdj4KKzxk
aXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPnNvbWVfb3RoZXJfZm9vX1g8L2Rpdj48L2Rp
dj4KKworQWRkIGhpZ2hsaWdodCBmb3IgcmVnZXhwIC9mb29fLi9nCisKKzxkaXYgY2xhc3M9Imlu
bmVyLWNvbnRhaW5lciIgdGFiaW5kZXg9IjAiPgorPGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29u
dGVudCI+Zm9vKCk7PC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5mb29f
MTsgZm9vcjsgZm9vXzs8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IC0xMjZweDsgbWFyZ2luLXRv
cDogMHB4OyB3aWR0aDogMzVweDsgaGVpZ2h0OiAxNHB4OyIgY2xhc3M9InNvbWUtY3NzLWNsYXNz
IHRleHQtZWRpdG9yLW92ZXJsYXktaGlnaGxpZ2h0Ij48L3NwYW4+PHNwYW4gc3R5bGU9Im1hcmdp
bi1sZWZ0OiAtMzVweDsgbWFyZ2luLXRvcDogMHB4OyB3aWR0aDogMzVweDsgaGVpZ2h0OiAxNHB4
OyIgY2xhc3M9InNvbWUtY3NzLWNsYXNzIHRleHQtZWRpdG9yLW92ZXJsYXktaGlnaGxpZ2h0Ij48
L3NwYW4+PC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5mb29fPC9kaXY+
Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5nbG9iYWxfZm9vPC9kaXY+Cis8ZGl2
IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5nbG9iYWxfZm9vMjwvZGl2PgorPGRpdiBjbGFz
cz0id2Via2l0LWxpbmUtY29udGVudCI+c29tZV9vdGhlcl9mb29fWDxzcGFuIHN0eWxlPSJtYXJn
aW4tbGVmdDogLTM1cHg7IG1hcmdpbi10b3A6IDBweDsgd2lkdGg6IDM1cHg7IGhlaWdodDogMTRw
eDsiIGNsYXNzPSJzb21lLWNzcy1jbGFzcyB0ZXh0LWVkaXRvci1vdmVybGF5LWhpZ2hsaWdodCI+
PC9zcGFuPjwvZGl2PjwvZGl2PgorCitSZW1vdmUgaGlnaGxpZ2h0IGZvciByZWdleHAgL2Zvb18u
L2cKKworPGRpdiBjbGFzcz0iaW5uZXItY29udGFpbmVyIiB0YWJpbmRleD0iMCI+Cis8ZGl2IGNs
YXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5mb28oKTs8L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtp
dC1saW5lLWNvbnRlbnQiPmZvb18xOyBmb29yOyBmb29fOzwvZGl2PgorPGRpdiBjbGFzcz0id2Vi
a2l0LWxpbmUtY29udGVudCI+Zm9vXzwvZGl2PgorPGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29u
dGVudCI+Z2xvYmFsX2ZvbzwvZGl2PgorPGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29udGVudCI+
Z2xvYmFsX2ZvbzI8L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPnNvbWVf
b3RoZXJfZm9vX1g8L2Rpdj48L2Rpdj4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2VkaXRvci90ZXh0LWVkaXRvci1oaWdobGlnaHQtcmVnZXhwLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdleHAuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wYTdlYWZmODA2ZTk4MmEyMTk3MDEzZTUyY2Q2ZDllYTZlYzZlYzllCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1oaWdo
bGlnaHQtcmVnZXhwLmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iZWRpdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0U3VpdGUoWwor
ICAgICAgICBmdW5jdGlvbiB0ZXN0SGlnaGxpZ2h0QXBpKG5leHQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciB0ZXh0ID0gWworICAgICAgICAgICAgICAgICJmb28oKTsiLAorICAgICAgICAg
ICAgICAgICJmb29fMTsgZm9vcjsgZm9vXzsiLAorICAgICAgICAgICAgICAgICJmb29fIiwKKyAg
ICAgICAgICAgICAgICAiZ2xvYmFsX2ZvbyIsCisgICAgICAgICAgICAgICAgImdsb2JhbF9mb28y
IiwKKyAgICAgICAgICAgICAgICAic29tZV9vdGhlcl9mb29fWCIKKyAgICAgICAgICAgIF07Cisg
ICAgICAgICAgICB2YXIgdGV4dEVkaXRvciA9IEluc3BlY3RvclRlc3QuY3JlYXRlVGVzdEVkaXRv
cigpOworICAgICAgICAgICAgdGV4dEVkaXRvci5zZXRUZXh0KHRleHQuam9pbigiXG4iKSk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiXG5CZWZvcmUgaGlnaGxpZ2h0Iik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCh0ZXh0RWRpdG9yLl9tYWluUGFu
ZWwuZWxlbWVudC5pbm5lckhUTUwucmVwbGFjZSgvPGRpdi9nLCAiXG48ZGl2IikpOworICAgICAg
ICAgICAgdGV4dEVkaXRvci5oaWdobGlnaHRSZWdleHAoL2Zvb18uLywgInNvbWUtY3NzLWNsYXNz
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiXG5BZGQgaGlnaGxpZ2h0
IGZvciByZWdleHAgL2Zvb18uLyIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQodGV4dEVkaXRvci5fbWFpblBhbmVsLmVsZW1lbnQuaW5uZXJIVE1MLnJlcGxhY2UoLzxkaXYv
ZywgIlxuPGRpdiIpKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJcblJl
bW92ZSBoaWdobGlnaHQgZm9yIHJlZ2V4cCAvZm9vXy4vIik7CisgICAgICAgICAgICB0ZXh0RWRp
dG9yLnJlbW92ZVJlZ2V4cEhpZ2hsaWdodCgvZm9vXy4vKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KHRleHRFZGl0b3IuX21haW5QYW5lbC5lbGVtZW50LmlubmVySFRNTC5y
ZXBsYWNlKC88ZGl2L2csICJcbjxkaXYiKSk7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAg
IH0sCisgICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8cD4KK1Rlc3QgZWRpdG9yIGhpZ2hsaWdodCByZWdleHAgQVBJLgorPC9wPgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182725</attachid>
            <date>2013-01-15 02:22:50 -0800</date>
            <delta_ts>2013-01-15 06:18:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106801-20130115141950.patch</filename>
            <type>text/plain</type>
            <size>19346</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWVlMGI1NDNkMjQ4MWNj
ZTc2ZmMwNTE4NDBlMTBmYjhmZjVkMDU3YS4uYmUwZjI0NzgzZGUxMDRjYTliMjcxYjJkMTQ5YTBm
NTBjNmE3Yjk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTAxLTE0ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBoaWdobGlnaHQgcmVnZXhwIEFQSSBmb3IgRGVmYXVsdFRleHRFZGl0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjgwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBoaWdobGlnaHRS
ZWdleHAgYW5kIHJlbW92ZVJlZ2V4cEhpZ2hsaWdodCBtZXRob2RzIHRvIERlZmF1bHRUZXh0RWRp
dG9yIHRoYXQgaGlnaGxpZ2h0CisgICAgICAgIGFsbCBvY2N1cnJlbmNlcyBvZiBnaXZlbiByZWdl
eHAgaW4gdGV4dCB3aXRoIGdpdmVuIGNzcyBjbGFzcy4KKyAgICAgICAgSGlnaGxpZ2h0IGlzIGRv
bmUgdmlhIHNwYW5zIHBvc2l0aW9uZWQgYWJzb2x1dGVseSBvdmVyIHRoZSByZWdleHAgb2NjdXJl
bmNlcyBpbiB0ZXh0LgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0
b3ItaGlnaGxpZ2h0LXJlZ2V4cC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0RlZmF1bHRUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0
RWRpdG9yLnByb3RvdHlwZS5oaWdobGlnaHRSZWdleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBlLnJlbW92ZVJlZ2V4SGlnaGxpZ2h0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5oaWdobGlnaHRSZWdleCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUucmVtb3ZlUmVn
ZXhIaWdobGlnaHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwu
cHJvdG90eXBlLl9yZXBhaW50VmlzaWJsZUNodW5rcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2ZpbmRSZWdleE9jY3VycmVuY2VzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fbWVhc3Vy
ZVJlZ2V4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3Rv
dHlwZS5fYXBwZW5kT3ZlcmxheUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX3JlbmRlclJhbmdlcyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX3BhaW50TGluZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2luc2VydFNw
YW5CZWZvcmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJv
dG90eXBlLl9jbG9zaW5nQmxvY2tPZmZzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3Rv
dHlwZS5oaWdobGlnaHRSZWdleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5w
cm90b3R5cGUucmVtb3ZlUmVnZXhIaWdobGlnaHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvVGV4dEVkaXRvckhpZ2hsaWdodGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3JIaWdobGlnaHRlci5wcm90b3R5cGUuX2hpZ2hsaWdodExpbmVzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzOgorICAgICAgICAoLnRleHQtZWRp
dG9yLW92ZXJsYXktaGlnaGxpZ2h0KToKKwogMjAxMy0wMS0xNCAgRGltYSBHb3JiaWsgIDxkZ29y
YmlrQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgSUQgc2VsZWN0b3IgbWF0Y2hpbmcg
Zm9yIHRoZSBXZWJWVFQgOjpjdWUgcHNldWRvIGVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCmluZGV4IGI3
YzEwMjJhODk3MzgzNTEwMWJlZjQxZWZkYTgwOGRmOGQ1NzNmZjMuLjkwYTlmNjRiMzVhYjNlYjY4
ZThjMDU3ODliZWJjMTZkMTE0YmY1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwpAQCAtMTEwLDYgKzExMCwy
NCBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRFZGl0b3IuRWRpdEluZm8gPSBmdW5jdGlvbihy
YW5nZSwgdGV4dCkKIAogV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLnByb3RvdHlwZSA9
IHsKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXgKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gY3NzQ2xhc3MKKyAgICAgKi8KKyAgICBoaWdobGlnaHRSZWdleDogZnVuY3Rpb24o
cmVnZXgsIGNzc0NsYXNzKQorICAgIHsKKyAgICAgICAgdGhpcy5fbWFpblBhbmVsLmhpZ2hsaWdo
dFJlZ2V4KHJlZ2V4LCBjc3NDbGFzcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7UmVnRXhwfSByZWdleAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAg
cmVtb3ZlUmVnZXhIaWdobGlnaHQ6IGZ1bmN0aW9uKHJlZ2V4KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX21haW5QYW5lbC5yZW1vdmVSZWdleEhpZ2hsaWdodChyZWdleCk7CisgICAgfSwK
KworICAgIC8qKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtaW1lVHlwZQogICAgICAqLwogICAg
IHNldCBtaW1lVHlwZShtaW1lVHlwZSkKQEAgLTEzMzgsMTEgKzEzNTYsNDkgQEAgV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3JNYWluUGFuZWwgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgdGV4dE1vZGVsLCB1
cmwsIHN5bmNTY3JvbGwKIAogICAgIHRoaXMuX2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJm
b2N1cyIsIHRoaXMuX2hhbmRsZUZvY3VzZWQuYmluZCh0aGlzKSwgZmFsc2UpOwogCisgICAgdGhp
cy5faGlnaGxpZ2h0UmVnZXhzID0ge307CisKICAgICB0aGlzLl9mcmVlQ2FjaGVkRWxlbWVudHMo
KTsKICAgICB0aGlzLmJ1aWxkQ2h1bmtzKCk7CiB9CiAKIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9y
TWFpblBhbmVsLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1JlZ0V4cH0g
cmVnZXgKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY3NzQ2xhc3MKKyAgICAgKi8KKyAgICBoaWdo
bGlnaHRSZWdleDogZnVuY3Rpb24ocmVnZXgsIGNzc0NsYXNzKQorICAgIHsKKyAgICAgICAgdGhp
cy5faGlnaGxpZ2h0UmVnZXhzW3JlZ2V4XSA9IHsKKyAgICAgICAgICAgIHJlZ2V4OiBuZXcgUmVn
RXhwKHJlZ2V4LnNvdXJjZSwgImciICsgKHJlZ2V4Lmlnbm9yZUNhc2UgPyAiaSIgOiAiIikpLAor
ICAgICAgICAgICAgY3NzQ2xhc3M6IGNzc0NsYXNzCisgICAgICAgIH07CisgICAgICAgIHRoaXMu
X3JlcGFpbnRWaXNpYmxlQ2h1bmtzKCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7UmVnRXhwfSByZWdleAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAg
cmVtb3ZlUmVnZXhIaWdobGlnaHQ6IGZ1bmN0aW9uKHJlZ2V4KQorICAgIHsKKyAgICAgICAgdmFy
IHJlc3VsdCA9IGRlbGV0ZSB0aGlzLl9oaWdobGlnaHRSZWdleHNbcmVnZXhdOworICAgICAgICB0
aGlzLl9yZXBhaW50VmlzaWJsZUNodW5rcygpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0sCisKKyAgICBfcmVwYWludFZpc2libGVDaHVua3M6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHZhciB2aXNpYmxlRnJvbSA9IHRoaXMuc2Nyb2xsVG9wKCk7CisgICAgICAgIHZhciB2aXNp
YmxlVG8gPSB2aXNpYmxlRnJvbSArIHRoaXMuY2xpZW50SGVpZ2h0KCk7CisKKyAgICAgICAgdmFy
IHZpc2libGVDaHVua3MgPSB0aGlzLmZpbmRWaXNpYmxlQ2h1bmtzKHZpc2libGVGcm9tLCB2aXNp
YmxlVG8pOworICAgICAgICBmb3IodmFyIGkgPSB2aXNpYmxlQ2h1bmtzLnN0YXJ0OyBpIDwgdmlz
aWJsZUNodW5rcy5lbmQ7ICsraSkgeworICAgICAgICAgICAgdmFyIGNodW5rID0gdGhpcy5fdGV4
dENodW5rc1tpXTsKKyAgICAgICAgICAgIHRoaXMuX3BhaW50TGluZXMoY2h1bmsuX3N0YXJ0TGlu
ZSwgY2h1bmsuX3N0YXJ0TGluZSArIGNodW5rLmxpbmVzQ291bnQpOworICAgICAgICB9CisgICAg
fSwKKwogICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9ib3Vu
ZFNlbGVjdGlvbkNoYW5nZUxpc3RlbmVyID0gdGhpcy5faGFuZGxlU2VsZWN0aW9uQ2hhbmdlLmJp
bmQodGhpcyk7CkBAIC0xODY0LDYgKzE5MjAsMTEzIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9y
TWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IGxpbmUKKyAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXgKKyAgICAgKiBAcmV0
dXJuIHtBcnJheS48e3N0YXJ0Q29sdW1uOiBudW1iZXIsIGVuZENvbHVtbjogbnVtYmVyfT59Cisg
ICAgICovCisgICAgX2ZpbmRSZWdleE9jY3VycmVuY2VzOiBmdW5jdGlvbihsaW5lLCByZWdleCkK
KyAgICB7CisgICAgICAgIHZhciByYW5nZXMgPSBbXTsKKyAgICAgICAgdmFyIHJlZ2V4UmVzdWx0
OworICAgICAgICB3aGlsZSAocmVnZXhSZXN1bHQgPSByZWdleC5leGVjKGxpbmUpKSB7CisgICAg
ICAgICAgICByYW5nZXMucHVzaCh7CisgICAgICAgICAgICAgICAgc3RhcnRDb2x1bW46IHJlZ2V4
UmVzdWx0LmluZGV4LAorICAgICAgICAgICAgICAgIGVuZENvbHVtbjogcmVnZXhSZXN1bHQuaW5k
ZXggKyByZWdleFJlc3VsdFswXS5sZW5ndGggLSAxCisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gcmFuZ2VzOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge0VsZW1lbnR9IGxpbmVSb3cKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGluZQorICAgICAq
IEBwYXJhbSB7UmVnRXhwfSByZWdleAorICAgICAqIEByZXR1cm4ge0FycmF5Ljx7bGVmdDogbnVt
YmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcn0+fQorICAgICAqLworICAgIF9tZWFz
dXJlUmVnZXg6IGZ1bmN0aW9uKGxpbmVSb3csIGxpbmUsIHJlZ2V4KQorICAgIHsKKyAgICAgICAg
dmFyIHJhbmdlcyA9IHRoaXMuX2ZpbmRSZWdleE9jY3VycmVuY2VzKGxpbmUsIHJlZ2V4KTsKKyAg
ICAgICAgaWYgKHJhbmdlcy5sZW5ndGggPT09IDApCisgICAgICAgICAgICByZXR1cm4gW107CisK
KyAgICAgICAgdGhpcy5fcmVuZGVyUmFuZ2VzKGxpbmVSb3csIGxpbmUsIHJhbmdlcyk7CisgICAg
ICAgIHZhciBzcGFucyA9IGxpbmVSb3cuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKTsKKyAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1Z0RlZmF1bHRUZXh0RWRpdG9yKQorICAgICAgICAg
ICAgY29uc29sZS5hc3NlcnQoc3BhbnMubGVuZ3RoID09PSByYW5nZXMubGVuZ3RoLCAiUmFuZ2Vz
IG51bWJlcjogIiArIHJhbmdlcy5sZW5ndGggKyAiICE9PSBzcGFucyBudW1iZXI6ICIgKyBzcGFu
cy5sZW5ndGgpOworCisgICAgICAgIHZhciBtZXRyaWNzID0gW107CisgICAgICAgIGZvcih2YXIg
aSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBtZXRyaWNzLnB1c2go
eworICAgICAgICAgICAgICAgIGxlZnQ6IHNwYW5zW2ldLm9mZnNldExlZnQsCisgICAgICAgICAg
ICAgICAgd2lkdGg6IHNwYW5zW2ldLm9mZnNldFdpZHRoLAorICAgICAgICAgICAgICAgIGhlaWdo
dDogc3BhbnNbaV0ub2Zmc2V0SGVpZ2h0CisgICAgICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJu
IG1ldHJpY3M7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RWxlbWVudH0gbGlu
ZVJvdworICAgICAqIEBwYXJhbSB7QXJyYXkuPHtvZmZzZXRMZWZ0OiBudW1iZXIsIG9mZnNldFRv
cDogbnVtYmVyLCBvZmZzZXRXaWR0aDogbnVtYmVyLCBvZmZzZXRIZWlnaHQ6IG51bWJlcn0+fSBt
ZXRyaWNzCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNzc0NsYXNzCisgICAgICovCisgICAgX2Fw
cGVuZE92ZXJsYXlIaWdobGlnaHQ6IGZ1bmN0aW9uKGxpbmVSb3csIG1ldHJpY3MsIGNzc0NsYXNz
KQorICAgIHsKKyAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG1ldHJpY3MubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgIHZhciBoaWdobGlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7CisgICAgICAgICAgICBoaWdobGlnaHQuYWRkU3R5bGVDbGFzcyhjc3NDbGFzcyk7Cisg
ICAgICAgICAgICBoaWdobGlnaHQuYWRkU3R5bGVDbGFzcygidGV4dC1lZGl0b3Itb3ZlcmxheS1o
aWdobGlnaHQiKTsKKyAgICAgICAgICAgIGxpbmVSb3cuYXBwZW5kQ2hpbGQoaGlnaGxpZ2h0KTsK
KworICAgICAgICAgICAgaGlnaGxpZ2h0LnN0eWxlLmxlZnQgPSAobWV0cmljc1tpXS5sZWZ0IC0g
aGlnaGxpZ2h0Lm9mZnNldExlZnQpICsgInB4IjsKKyAgICAgICAgICAgIGhpZ2hsaWdodC5zdHls
ZS53aWR0aCA9IChtZXRyaWNzW2ldLndpZHRoICkgKyAicHgiOworICAgICAgICAgICAgaGlnaGxp
Z2h0LnN0eWxlLmhlaWdodCA9IG1ldHJpY3NbaV0uaGVpZ2h0ICsgInB4IjsKKyAgICAgICAgfQor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGxpbmVSb3cKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gbGluZQorICAgICAqIEBwYXJhbSB7QXJyYXkuPHtzdGFydENvbHVt
bjogbnVtYmVyLCBlbmRDb2x1bW46IG51bWJlciwgY3NzQ2xhc3M6IHN0cmluZ30+fSByYW5nZXMK
KyAgICAgKi8KKyAgICBfcmVuZGVyUmFuZ2VzOiBmdW5jdGlvbihsaW5lUm93LCBsaW5lLCByYW5n
ZXMpCisgICAgeworICAgICAgICB2YXIgZGVjb3JhdGlvbnNFbGVtZW50ID0gbGluZVJvdy5kZWNv
cmF0aW9uc0VsZW1lbnQ7CisKKyAgICAgICAgaWYgKCFkZWNvcmF0aW9uc0VsZW1lbnQpCisgICAg
ICAgICAgICBsaW5lUm93LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBsaW5lUm93
LmZpcnN0Q2hpbGQ7CisgICAgICAgICAgICAgICAgaWYgKCFjaGlsZCB8fCBjaGlsZCA9PT0gZGVj
b3JhdGlvbnNFbGVtZW50KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBsaW5lUm93LnJlbW92ZUNoaWxkKGNoaWxkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIGlmICghbGluZSkKKyAgICAgICAgICAgIGxpbmVSb3cuaW5zZXJ0QmVmb3Jl
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIiksIGRlY29yYXRpb25zRWxlbWVudCk7CisKKyAg
ICAgICAgdmFyIHBsYWluVGV4dFN0YXJ0ID0gMDsKKyAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8
IHJhbmdlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdmFyIHJhbmdlU3RhcnQgPSByYW5n
ZXNbaV0uc3RhcnRDb2x1bW47CisgICAgICAgICAgICB2YXIgcmFuZ2VFbmQgPSByYW5nZXNbaV0u
ZW5kQ29sdW1uOworICAgICAgICAgICAgdmFyIGNzc0NsYXNzID0gcmFuZ2VzW2ldLmNzc0NsYXNz
OworCisgICAgICAgICAgICBpZiAocGxhaW5UZXh0U3RhcnQgPCByYW5nZVN0YXJ0KSB7CisgICAg
ICAgICAgICAgICAgdGhpcy5faW5zZXJ0VGV4dE5vZGVCZWZvcmUobGluZVJvdywgZGVjb3JhdGlv
bnNFbGVtZW50LCBsaW5lLnN1YnN0cmluZyhwbGFpblRleHRTdGFydCwgcmFuZ2VTdGFydCkpOwor
ICAgICAgICAgICAgICAgIC0tdGhpcy5fcGFpbnRMaW5lc09wZXJhdGlvbnNDcmVkaXQ7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9pbnNlcnRTcGFuQmVmb3JlKGxpbmVSb3csIGRl
Y29yYXRpb25zRWxlbWVudCwgbGluZS5zdWJzdHJpbmcocmFuZ2VTdGFydCwgcmFuZ2VFbmQgKyAx
KSwgY3NzQ2xhc3MpOworICAgICAgICAgICAgLS10aGlzLl9wYWludExpbmVzT3BlcmF0aW9uc0Ny
ZWRpdDsKKyAgICAgICAgICAgIHBsYWluVGV4dFN0YXJ0ID0gcmFuZ2VFbmQgKyAxOworICAgICAg
ICB9CisgICAgICAgIGlmIChwbGFpblRleHRTdGFydCA8IGxpbmUubGVuZ3RoKSB7CisgICAgICAg
ICAgICB0aGlzLl9pbnNlcnRUZXh0Tm9kZUJlZm9yZShsaW5lUm93LCBkZWNvcmF0aW9uc0VsZW1l
bnQsIGxpbmUuc3Vic3RyaW5nKHBsYWluVGV4dFN0YXJ0LCBsaW5lLmxlbmd0aCkpOworICAgICAg
ICAgICAgLS10aGlzLl9wYWludExpbmVzT3BlcmF0aW9uc0NyZWRpdDsKKyAgICAgICAgfQorICAg
IH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGxpbmVSb3cKICAgICAgKi8K
ICAgICBfcGFpbnRMaW5lOiBmdW5jdGlvbihsaW5lUm93KQpAQCAtMTg4MSw0MiArMjA0NCwyMSBA
QCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBpZiAoIWhpZ2hsaWdodCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
ICAgIHZhciBkZWNvcmF0aW9uc0VsZW1lbnQgPSBsaW5lUm93LmRlY29yYXRpb25zRWxlbWVudDsK
LSAgICAgICAgICAgIGlmICghZGVjb3JhdGlvbnNFbGVtZW50KQotICAgICAgICAgICAgICAgIGxp
bmVSb3cucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IGxpbmVS
b3cuZmlyc3RDaGlsZDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZCB8fCBjaGlsZCA9
PT0gZGVjb3JhdGlvbnNFbGVtZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGxpbmVSb3cucmVtb3ZlQ2hpbGQoY2hpbGQpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgdmFyIGxpbmUgPSB0aGlzLl90
ZXh0TW9kZWwubGluZShsaW5lTnVtYmVyKTsKLSAgICAgICAgICAgIHZhciByYW5nZXMgPSB0aGlz
Ll9oaWdobGlnaHRlci5vcmRlcmVkUmFuZ2VzUGVyTGluZShsaW5lTnVtYmVyKTsKIAotICAgICAg
ICAgICAgaWYgKCFsaW5lKQotICAgICAgICAgICAgICAgIGxpbmVSb3cuaW5zZXJ0QmVmb3JlKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIiksIGRlY29yYXRpb25zRWxlbWVudCk7CisgICAgICAg
ICAgICB2YXIgbWV0cmljcyA9IFtdOworICAgICAgICAgICAgdmFyIGNzc0NsYXNzZXMgPSBbXTsK
KyAgICAgICAgICAgIGZvcih2YXIga2V5IGluIHRoaXMuX2hpZ2hsaWdodFJlZ2V4cykgeworICAg
ICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX2hpZ2hsaWdodFJlZ2V4c1trZXldOworICAg
ICAgICAgICAgICAgIG1ldHJpY3MucHVzaCh0aGlzLl9tZWFzdXJlUmVnZXgobGluZVJvdywgbGlu
ZSwgdmFsdWUucmVnZXgpKTsKKyAgICAgICAgICAgICAgICBjc3NDbGFzc2VzLnB1c2godmFsdWUu
Y3NzQ2xhc3MpOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB2YXIgcGxhaW5UZXh0U3Rh
cnQgPSAwOwotICAgICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkr
KykgewotICAgICAgICAgICAgICAgIHZhciByYW5nZVN0YXJ0ID0gcmFuZ2VzW2ldLnN0YXJ0Q29s
dW1uOwotICAgICAgICAgICAgICAgIHZhciByYW5nZUVuZCA9IHJhbmdlc1tpXS5lbmRDb2x1bW47
Ci0gICAgICAgICAgICAgICAgdmFyIHJhbmdlVG9rZW4gPSByYW5nZXNbaV0udG9rZW47CisgICAg
ICAgICAgICB2YXIgcmFuZ2VzID0gdGhpcy5faGlnaGxpZ2h0ZXIub3JkZXJlZFJhbmdlc1Blckxp
bmUobGluZU51bWJlcik7CisgICAgICAgICAgICB0aGlzLl9yZW5kZXJSYW5nZXMobGluZVJvdywg
bGluZSwgcmFuZ2VzKTsKIAotICAgICAgICAgICAgICAgIGlmIChwbGFpblRleHRTdGFydCA8IHJh
bmdlU3RhcnQpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5zZXJ0VGV4dE5vZGVCZWZv
cmUobGluZVJvdywgZGVjb3JhdGlvbnNFbGVtZW50LCBsaW5lLnN1YnN0cmluZyhwbGFpblRleHRT
dGFydCwgcmFuZ2VTdGFydCkpOwotICAgICAgICAgICAgICAgICAgICAtLXRoaXMuX3BhaW50TGlu
ZXNPcGVyYXRpb25zQ3JlZGl0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0
aGlzLl9pbnNlcnRTcGFuQmVmb3JlKGxpbmVSb3csIGRlY29yYXRpb25zRWxlbWVudCwgbGluZS5z
dWJzdHJpbmcocmFuZ2VTdGFydCwgcmFuZ2VFbmQgKyAxKSwgcmFuZ2VUb2tlbik7Ci0gICAgICAg
ICAgICAgICAgLS10aGlzLl9wYWludExpbmVzT3BlcmF0aW9uc0NyZWRpdDsKLSAgICAgICAgICAg
ICAgICBwbGFpblRleHRTdGFydCA9IHJhbmdlRW5kICsgMTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChwbGFpblRleHRTdGFydCA8IGxpbmUubGVuZ3RoKSB7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5faW5zZXJ0VGV4dE5vZGVCZWZvcmUobGluZVJvdywgZGVjb3JhdGlvbnNFbGVtZW50
LCBsaW5lLnN1YnN0cmluZyhwbGFpblRleHRTdGFydCwgbGluZS5sZW5ndGgpKTsKLSAgICAgICAg
ICAgICAgICAtLXRoaXMuX3BhaW50TGluZXNPcGVyYXRpb25zQ3JlZGl0OwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG1ldHJpY3MubGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kT3ZlcmxheUhpZ2hsaWdodChsaW5lUm93LCBtZXRy
aWNzW2ldLCBjc3NDbGFzc2VzW2ldKTsKICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAg
IGlmICh0aGlzLl9yYW5nZVRvTWFyayAmJiB0aGlzLl9yYW5nZVRvTWFyay5zdGFydExpbmUgPT09
IGxpbmVOdW1iZXIpCiAgICAgICAgICAgICAgICAgdGhpcy5fbWFya2VkUmFuZ2VFbGVtZW50ID0g
V2ViSW5zcGVjdG9yLmhpZ2hsaWdodFNlYXJjaFJlc3VsdChsaW5lUm93LCB0aGlzLl9yYW5nZVRv
TWFyay5zdGFydENvbHVtbiwgdGhpcy5fcmFuZ2VUb01hcmsuZW5kQ29sdW1uIC0gdGhpcy5fcmFu
Z2VUb01hcmsuc3RhcnRDb2x1bW4pOwpAQCAtMjEyMyw3ICsyMjY1LDcgQEAgV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
dmFyIHNwYW4gPSB0aGlzLl9jYWNoZWRTcGFucy5wb3AoKSB8fCBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7Ci0gICAgICAgIHNwYW4uY2xhc3NOYW1lID0gIndlYmtpdC0iICsgY2xhc3NO
YW1lOworICAgICAgICBzcGFuLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKICAgICAgICAgaWYgKFdl
Ykluc3BlY3Rvci5GQUxTRSkgLy8gRm9yIHBhaW50IGRlYnVnZ2luZy4KICAgICAgICAgICAgIHNw
YW4uYWRkU3R5bGVDbGFzcygiZGVidWctZmFkZW91dCIpOwogICAgICAgICBzcGFuLnRleHRDb250
ZW50ID0gY29udGVudDsKQEAgLTIzOTYsNyArMjUzOCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIHZhciByYW5nZXMgPSBhdHRyaWJ1dGUucmFuZ2VzOwogICAgICAgICAgICAgZm9y
ICh2YXIgaiA9IHJhbmdlcy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkgewotICAgICAgICAgICAg
ICAgIHZhciB0b2tlbiA9IHJhbmdlc1tqXS50b2tlbjsKKyAgICAgICAgICAgICAgICB2YXIgdG9r
ZW4gPSByYW5nZXNbal0uY3NzQ2xhc3MucmVwbGFjZSgvd2Via2l0LS8sICIiKTsKICAgICAgICAg
ICAgICAgICBpZiAodG9rZW4gPT09ICJibG9jay1zdGFydCIpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCEoLS1uZXN0aW5nTGV2ZWwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
bGluZUNvbnRlbnQgPSB0aGlzLl90ZXh0TW9kZWwubGluZShpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvci5qcwppbmRleCBjNDQ5NDM4NWQwOGRm
NTk3ZjMxODI3YjdiZDg4NmQzZDQ4NGFhMmFjLi5kZGI0OTcyMzEzNjk3MDM5NzMxYjY1YmY0MWU2
OWVhYmJiYTg2MWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UZXh0RWRpdG9yLmpzCkBAIC02MSw2ICs2MSwxOCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ci5wcm90b3R5cGUgPSB7CiAgICAgZGVmYXVsdEZvY3VzZWRFbGVtZW50OiBmdW5jdGlvbigpIHsg
fSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7UmVnRXhwfSByZWdleAorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBjc3NDbGFzcworICAgICAqLworICAgIGhpZ2hsaWdodFJlZ2V4OiBmdW5jdGlv
bihyZWdleCwgY3NzQ2xhc3MpIHsgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7UmVnRXhw
fSByZWdleAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgcmVtb3ZlUmVn
ZXhIaWdobGlnaHQ6IGZ1bmN0aW9uKHJlZ2V4KSB7IH0sCisKKyAgICAvKioKICAgICAgKiBAcGFy
YW0ge251bWJlcn0gbGluZU51bWJlcgogICAgICAqLwogICAgIHJldmVhbExpbmU6IGZ1bmN0aW9u
KGxpbmVOdW1iZXIpIHsgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGV4dEVkaXRvckhpZ2hsaWdodGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanMKaW5kZXggNThmMjM5MWIwMzcw
MjBhODk4OGY4MWQ4MTc5NzdiNzVkZTI0YmYyYy4uZWM2NDFjZWQxNWEyZjdmNTYzZjAxY2E0Yzkz
M2M0MzM5YmFkMDA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UZXh0RWRpdG9ySGlnaGxpZ2h0ZXIuanMKQEAgLTIwMCw3ICsyMDAsNyBA
QCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckhpZ2hsaWdodGVyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlLnJhbmdlcy5wdXNoKHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGFydENvbHVtbjogbGFzdEhpZ2hsaWdodGVkQ29sdW1uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVuZENvbHVtbjogbmV3Q29sdW1uIC0gMSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0b2tlbjogdG9rZW5UeXBlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3NzQ2xhc3M6ICJ3ZWJraXQtIiArIHRva2VuVHlwZQogICAgICAgICAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIGxhc3RIaWdobGlnaHRlZENvbHVtbiA9IG5l
d0NvbHVtbjsKICAgICAgICAgICAgICAgICAgICAgaWYgKCsrdG9rZW5zQ291bnQgPiB0aGlzLl9o
aWdobGlnaHRDaHVua0xpbWl0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC90ZXh0RWRpdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvdGV4dEVkaXRvci5jc3MKaW5kZXggMmEyNTYyYjgzNjRjMjJlMjZmODQzZjVjM2FlNzA5
Y2U2ODhmZDgwOC4uODA2YzllNWE4YTA3ODMwMDJmMzQyODZkYjIwMGZhYWUxODM0YzFlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9yLmNz
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3Nz
CkBAIC0zMCw2ICszMCwxNCBAQAogICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7CiB9CiAK
Ky50ZXh0LWVkaXRvci1vdmVybGF5LWhpZ2hsaWdodCB7CisgICAgcG9zaXRpb246IHJlbGF0aXZl
OworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsK
KyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworICAgIHotaW5kZXg6IC0xOworfQorCiAu
dGV4dC1lZGl0b3ItY29udGVudHMgLmlubmVyLWNvbnRhaW5lciB7CiAgICAgcG9zaXRpb246IGFi
c29sdXRlOwogICAgIHRvcDogMDsKQEAgLTE4Myw2ICsxOTEsNyBAQAogLmRlYnVnLWZhZGVvdXQg
ewogICAgIC13ZWJraXQtYW5pbWF0aW9uOiAiZGVidWctZmFkZW91dCIgMXMgMHM7CiAgICAgYm9y
ZGVyOiAxcHggc29saWQgd2hpdGU7CisgICAgbWFyZ2luOiAtMXB4OwogfQogCiBALXdlYmtpdC1r
ZXlmcmFtZXMgZGVidWctZmFkZW91dCB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjJiZDBjNTcwNjUxZDRiMjMzYzBlOWZj
ZmY0NWY3NzhkNTVlMTU3MC4uNWY5MDVhMWM2OWQ1MDY5MGU1N2ZmNDVhODJjMDBlZDg2MDU5OTM4
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAxLTE0ICBBbmRyZXkgTHVzaG5pa292ICA8
bHVzaG5pa292QGNocm9taXVtLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBoaWdobGln
aHQgcmVnZXhwIEFQSSBmb3IgRGVmYXVsdFRleHRFZGl0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjgwMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgRGVm
YXVsdFRleHRFZGl0b3IgaGlnaGxpZ2h0IHJlZ2V4cCBBUEkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdleHAtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdl
eHAuaHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMTQgIERvbWluaWMgQ29vbmV5ICAgPGRvbWluaWNj
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQgZ2FyZGVuaW5n
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1o
aWdobGlnaHQtcmVnZXhwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0
b3IvdGV4dC1lZGl0b3ItaGlnaGxpZ2h0LXJlZ2V4cC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTZjYzVjMTBkN2ZmZTE5YTEyMzYyOGFjMWE2MzFmYWUxMjJmODY0MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItaGlnaGxpZ2h0LXJl
Z2V4cC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAorVGVzdCBlZGl0b3IgaGlnaGxpZ2h0
IHJlZ2V4cCBBUEkuCisKKworUnVubmluZzogdGVzdEhpZ2hsaWdodEFwaQorCitCZWZvcmUgaGln
aGxpZ2h0CisKKzxkaXYgY2xhc3M9ImlubmVyLWNvbnRhaW5lciIgdGFiaW5kZXg9IjAiPgorPGRp
diBjbGFzcz0id2Via2l0LWxpbmUtY29udGVudCI+Zm9vKCk7PC9kaXY+Cis8ZGl2IGNsYXNzPSJ3
ZWJraXQtbGluZS1jb250ZW50Ij5mb29fMTsgZm9vcjsgZm9vXzs8L2Rpdj4KKzxkaXYgY2xhc3M9
IndlYmtpdC1saW5lLWNvbnRlbnQiPmZvb188L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5l
LWNvbnRlbnQiPmdsb2JhbF9mb288L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRl
bnQiPmdsb2JhbF9mb28yPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5z
b21lX290aGVyX2Zvb19YPC9kaXY+PC9kaXY+CisKK0FkZCBoaWdobGlnaHQgZm9yIHJlZ2V4cCAv
Zm9vXy4vCisKKzxkaXYgY2xhc3M9ImlubmVyLWNvbnRhaW5lciIgdGFiaW5kZXg9IjAiPgorPGRp
diBjbGFzcz0id2Via2l0LWxpbmUtY29udGVudCI+Zm9vKCk7PC9kaXY+Cis8ZGl2IGNsYXNzPSJ3
ZWJraXQtbGluZS1jb250ZW50Ij5mb29fMTsgZm9vcjsgZm9vXzs8c3BhbiBjbGFzcz0ic29tZS1j
c3MtY2xhc3MgdGV4dC1lZGl0b3Itb3ZlcmxheS1oaWdobGlnaHQiIHN0eWxlPSJsZWZ0OiAtMTI2
cHg7IHdpZHRoOiAzNXB4OyBoZWlnaHQ6IDE0cHg7Ij48L3NwYW4+PHNwYW4gY2xhc3M9InNvbWUt
Y3NzLWNsYXNzIHRleHQtZWRpdG9yLW92ZXJsYXktaGlnaGxpZ2h0IiBzdHlsZT0ibGVmdDogLTcw
cHg7IHdpZHRoOiAzNXB4OyBoZWlnaHQ6IDE0cHg7Ij48L3NwYW4+PC9kaXY+Cis8ZGl2IGNsYXNz
PSJ3ZWJraXQtbGluZS1jb250ZW50Ij5mb29fPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGlu
ZS1jb250ZW50Ij5nbG9iYWxfZm9vPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250
ZW50Ij5nbG9iYWxfZm9vMjwvZGl2PgorPGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29udGVudCI+
c29tZV9vdGhlcl9mb29fWDxzcGFuIGNsYXNzPSJzb21lLWNzcy1jbGFzcyB0ZXh0LWVkaXRvci1v
dmVybGF5LWhpZ2hsaWdodCIgc3R5bGU9ImxlZnQ6IC0zNXB4OyB3aWR0aDogMzVweDsgaGVpZ2h0
OiAxNHB4OyI+PC9zcGFuPjwvZGl2PjwvZGl2PgorCitSZW1vdmUgaGlnaGxpZ2h0IGZvciByZWdl
eHAgL2Zvb18uLworCis8ZGl2IGNsYXNzPSJpbm5lci1jb250YWluZXIiIHRhYmluZGV4PSIwIj4K
KzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmZvbygpOzwvZGl2PgorPGRpdiBjbGFz
cz0id2Via2l0LWxpbmUtY29udGVudCI+Zm9vXzE7IGZvb3I7IGZvb187PC9kaXY+Cis8ZGl2IGNs
YXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5mb29fPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQt
bGluZS1jb250ZW50Ij5nbG9iYWxfZm9vPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1j
b250ZW50Ij5nbG9iYWxfZm9vMjwvZGl2PgorPGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29udGVu
dCI+c29tZV9vdGhlcl9mb29fWDwvZGl2PjwvZGl2PgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdleHAuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItaGlnaGxpZ2h0LXJlZ2V4cC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM0YzA3MjA5YTVkZGMwZDA3YzRmZWIyMzM1ZjZkMTgxNzkxODYyYzgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRp
dG9yLWhpZ2hsaWdodC1yZWdleHAuaHRtbApAQCAtMCwwICsxLDQzIEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJlZGl0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RT
dWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RIaWdobGlnaHRBcGkobmV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHRleHQgPSBbCisgICAgICAgICAgICAgICAgImZvbygpOyIsCisg
ICAgICAgICAgICAgICAgImZvb18xOyBmb29yOyBmb29fOyIsCisgICAgICAgICAgICAgICAgImZv
b18iLAorICAgICAgICAgICAgICAgICJnbG9iYWxfZm9vIiwKKyAgICAgICAgICAgICAgICAiZ2xv
YmFsX2ZvbzIiLAorICAgICAgICAgICAgICAgICJzb21lX290aGVyX2Zvb19YIgorICAgICAgICAg
ICAgXTsKKyAgICAgICAgICAgIHZhciB0ZXh0RWRpdG9yID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVU
ZXN0RWRpdG9yKCk7CisgICAgICAgICAgICB0ZXh0RWRpdG9yLnNldFRleHQodGV4dC5qb2luKCJc
biIpKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJcbkJlZm9yZSBoaWdo
bGlnaHQiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHRleHRFZGl0b3Iu
X21haW5QYW5lbC5lbGVtZW50LmlubmVySFRNTC5yZXBsYWNlKC88ZGl2L2csICJcbjxkaXYiKSk7
CisgICAgICAgICAgICB0ZXh0RWRpdG9yLmhpZ2hsaWdodFJlZ2V4KC9mb29fLi8sICJzb21lLWNz
cy1jbGFzcyIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlxuQWRkIGhp
Z2hsaWdodCBmb3IgcmVnZXhwIC9mb29fLi8iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KHRleHRFZGl0b3IuX21haW5QYW5lbC5lbGVtZW50LmlubmVySFRNTC5yZXBsYWNl
KC88ZGl2L2csICJcbjxkaXYiKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiXG5SZW1vdmUgaGlnaGxpZ2h0IGZvciByZWdleHAgL2Zvb18uLyIpOworICAgICAgICAgICAg
dGV4dEVkaXRvci5yZW1vdmVSZWdleEhpZ2hsaWdodCgvZm9vXy4vKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KHRleHRFZGl0b3IuX21haW5QYW5lbC5lbGVtZW50LmlubmVy
SFRNTC5yZXBsYWNlKC88ZGl2L2csICJcbjxkaXYiKSk7CisgICAgICAgICAgICBuZXh0KCk7Cisg
ICAgICAgIH0sCisgICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3QgZWRpdG9yIGhpZ2hsaWdodCByZWdleHAgQVBJLgor
PC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182752</attachid>
            <date>2013-01-15 06:18:37 -0800</date>
            <delta_ts>2013-01-16 00:21:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106801-20130115181536.patch</filename>
            <type>text/plain</type>
            <size>14315</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdhZWE0MDk0MjYxNGFi
ZjFjMTY1NjIzZTUzYThlZGQ0ZjRkYmEzNi4uYTVkZDA4YzNiMzU5NmQ3ZDM4NWIyY2UxOTkwNzdi
ZTU3Njk2MjRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDEzLTAxLTE1ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5z
cGVjdG9yOiBoaWdobGlnaHQgcmVnZXhwIEFQSSBmb3IgRGVmYXVsdFRleHRFZGl0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjgwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBoaWdobGlnaHRS
ZWdleHAgYW5kIHJlbW92ZVJlZ2V4cEhpZ2hsaWdodCBtZXRob2RzIHRvIERlZmF1bHRUZXh0RWRp
dG9yIHRoYXQgaGlnaGxpZ2h0CisgICAgICAgIGFsbCBvY2N1cnJlbmNlcyBvZiBnaXZlbiByZWdl
eHAgaW4gdGV4dCB3aXRoIGdpdmVuIGNzcyBjbGFzcy4KKyAgICAgICAgSGlnaGxpZ2h0IGlzIGRv
bmUgdmlhIHNwYW5zIHBvc2l0aW9uZWQgYWJzb2x1dGVseSBvdmVyIHRoZSByZWdleHAgb2NjdXJl
bmNlcyBpbiB0ZXh0LgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0
b3ItaGlnaGxpZ2h0LXJlZ2V4cC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0RlZmF1bHRUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0
RWRpdG9yLnByb3RvdHlwZS5oaWdobGlnaHRSZWdleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBlLnJlbW92ZVJlZ2V4SGlnaGxpZ2h0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5oaWdobGlnaHRSZWdleCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUucmVtb3ZlUmVn
ZXhIaWdobGlnaHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwu
cHJvdG90eXBlLl9yZXBhaW50VmlzaWJsZUNodW5rcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2ZpbmRSZWdleE9jY3VycmVuY2VzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fbWVhc3Vy
ZVJlZ2V4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3Rv
dHlwZS5fYXBwZW5kT3ZlcmxheUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX3BhaW50TGluZSk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3IucHJvdG90eXBlLmhpZ2hsaWdodFJlZ2V4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yLnByb3RvdHlwZS5yZW1vdmVSZWdleEhpZ2hsaWdodCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9yLmNzczoKKyAgICAgICAgKC50ZXh0LWVkaXRvci1v
dmVybGF5LWhpZ2hsaWdodCk6CisgICAgICAgICguZGVidWctZmFkZW91dCk6CisKKzIwMTMtMDEt
MTUgIEFuZHJleSBMdXNobmlrb3YgIDxsdXNobmlrb3ZAY2hyb21pdW0ub3JnPgorCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yIERlZmF1bHRUZXh0RWRpdG9yJ3MgcGFpbnRMaW5lIG1l
dGhvZAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2
ODkzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVm
YXVsdFRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rl
ZmF1bHRUZXh0RWRpdG9yLmpzCmluZGV4IGNmN2MyNjI2MjI1ODlmZTc3Zjc1NThiNzNlOTVlODJh
YTM3Yzc5MDQuLjIwMGMxNzA2MWNlNmJlYjMzZDU1NjM5ZGZkZmY1YmVjMTY0Y2I1NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0
b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4
dEVkaXRvci5qcwpAQCAtMTEwLDYgKzExMCwyNCBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdFRleHRF
ZGl0b3IuRWRpdEluZm8gPSBmdW5jdGlvbihyYW5nZSwgdGV4dCkKIAogV2ViSW5zcGVjdG9yLkRl
ZmF1bHRUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge1Jl
Z0V4cH0gcmVnZXgKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY3NzQ2xhc3MKKyAgICAgKi8KKyAg
ICBoaWdobGlnaHRSZWdleDogZnVuY3Rpb24ocmVnZXgsIGNzc0NsYXNzKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fbWFpblBhbmVsLmhpZ2hsaWdodFJlZ2V4KHJlZ2V4LCBjc3NDbGFzcyk7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7UmVnRXhwfSByZWdleAorICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgcmVtb3ZlUmVnZXhIaWdobGlnaHQ6IGZ1bmN0aW9u
KHJlZ2V4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX21haW5QYW5lbC5yZW1vdmVSZWdl
eEhpZ2hsaWdodChyZWdleCk7CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBtaW1lVHlwZQogICAgICAqLwogICAgIHNldCBtaW1lVHlwZShtaW1lVHlwZSkKQEAgLTEz
MzgsMTEgKzEzNTYsNTIgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwgPSBmdW5j
dGlvbihkZWxlZ2F0ZSwgdGV4dE1vZGVsLCB1cmwsIHN5bmNTY3JvbGwKIAogICAgIHRoaXMuX2Nv
bnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2hhbmRsZUZvY3VzZWQuYmlu
ZCh0aGlzKSwgZmFsc2UpOwogCisgICAgdGhpcy5faGlnaGxpZ2h0UmVnZXhzID0ge307CisKICAg
ICB0aGlzLl9mcmVlQ2FjaGVkRWxlbWVudHMoKTsKICAgICB0aGlzLmJ1aWxkQ2h1bmtzKCk7CiB9
CiAKIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXgKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
Y3NzQ2xhc3MKKyAgICAgKi8KKyAgICBoaWdobGlnaHRSZWdleDogZnVuY3Rpb24ocmVnZXgsIGNz
c0NsYXNzKQorICAgIHsKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0UmVnZXhzW3JlZ2V4XSA9IHsK
KyAgICAgICAgICAgIHJlZ2V4OiBuZXcgUmVnRXhwKHJlZ2V4LnNvdXJjZSwgImciICsgKHJlZ2V4
Lmlnbm9yZUNhc2UgPyAiaSIgOiAiIikpLAorICAgICAgICAgICAgY3NzQ2xhc3M6IGNzc0NsYXNz
CisgICAgICAgIH07CisgICAgICAgIHRoaXMuX3JlcGFpbnRWaXNpYmxlQ2h1bmtzKCk7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7UmVnRXhwfSByZWdleAorICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgcmVtb3ZlUmVnZXhIaWdobGlnaHQ6IGZ1bmN0aW9u
KHJlZ2V4KQorICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGRlbGV0ZSB0aGlzLl9oaWdobGln
aHRSZWdleHNbcmVnZXhdOworICAgICAgICB0aGlzLl9yZXBhaW50VmlzaWJsZUNodW5rcygpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICBfcmVwYWludFZpc2libGVDaHVu
a3M6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciB2aXNpYmxlRnJvbSA9IHRoaXMuc2Ny
b2xsVG9wKCk7CisgICAgICAgIHZhciB2aXNpYmxlVG8gPSB2aXNpYmxlRnJvbSArIHRoaXMuY2xp
ZW50SGVpZ2h0KCk7CisKKyAgICAgICAgdmFyIHZpc2libGVDaHVua3MgPSB0aGlzLmZpbmRWaXNp
YmxlQ2h1bmtzKHZpc2libGVGcm9tLCB2aXNpYmxlVG8pOworICAgICAgICB2YXIgc2VsZWN0aW9u
ID0gdGhpcy5zZWxlY3Rpb24oKTsKKworICAgICAgICBmb3IodmFyIGkgPSB2aXNpYmxlQ2h1bmtz
LnN0YXJ0OyBpIDwgdmlzaWJsZUNodW5rcy5lbmQ7ICsraSkgeworICAgICAgICAgICAgdmFyIGNo
dW5rID0gdGhpcy5fdGV4dENodW5rc1tpXTsKKyAgICAgICAgICAgIHRoaXMuX3BhaW50TGluZXMo
Y2h1bmsuX3N0YXJ0TGluZSwgY2h1bmsuX3N0YXJ0TGluZSArIGNodW5rLmxpbmVzQ291bnQpOwor
ICAgICAgICB9CisgICAgICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3Rpb24oc2VsZWN0aW9uKTsKKyAg
ICB9LAorCiAgICAgd2FzU2hvd246IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Jv
dW5kU2VsZWN0aW9uQ2hhbmdlTGlzdGVuZXIgPSB0aGlzLl9oYW5kbGVTZWxlY3Rpb25DaGFuZ2Uu
YmluZCh0aGlzKTsKQEAgLTE4NjQsNiArMTkyMyw3MSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBsaW5lCisgICAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4CisgICAgICogQHJl
dHVybiB7QXJyYXkuPHtzdGFydENvbHVtbjogbnVtYmVyLCBlbmRDb2x1bW46IG51bWJlcn0+fQor
ICAgICAqLworICAgIF9maW5kUmVnZXhPY2N1cnJlbmNlczogZnVuY3Rpb24obGluZSwgcmVnZXgp
CisgICAgeworICAgICAgICB2YXIgcmFuZ2VzID0gW107CisgICAgICAgIHZhciByZWdleFJlc3Vs
dDsKKyAgICAgICAgd2hpbGUgKHJlZ2V4UmVzdWx0ID0gcmVnZXguZXhlYyhsaW5lKSkgeworICAg
ICAgICAgICAgcmFuZ2VzLnB1c2goeworICAgICAgICAgICAgICAgIHN0YXJ0Q29sdW1uOiByZWdl
eFJlc3VsdC5pbmRleCwKKyAgICAgICAgICAgICAgICBlbmRDb2x1bW46IHJlZ2V4UmVzdWx0Lmlu
ZGV4ICsgcmVnZXhSZXN1bHRbMF0ubGVuZ3RoIC0gMQorICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHJhbmdlczsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtFbGVtZW50fSBsaW5lUm93CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGxpbmUKKyAgICAg
KiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXgKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48e2xlZnQ6IG51
bWJlciwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXJ9Pn0KKyAgICAgKi8KKyAgICBfbWVh
c3VyZVJlZ2V4OiBmdW5jdGlvbihsaW5lUm93LCBsaW5lLCByZWdleCkKKyAgICB7CisgICAgICAg
IHZhciByYW5nZXMgPSB0aGlzLl9maW5kUmVnZXhPY2N1cnJlbmNlcyhsaW5lLCByZWdleCk7Cisg
ICAgICAgIGlmIChyYW5nZXMubGVuZ3RoID09PSAwKQorICAgICAgICAgICAgcmV0dXJuIFtdOwor
CisgICAgICAgIHRoaXMuX3JlbmRlclJhbmdlcyhsaW5lUm93LCBsaW5lLCByYW5nZXMpOworICAg
ICAgICB2YXIgc3BhbnMgPSBsaW5lUm93LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzcGFuIik7Cisg
ICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVidWdEZWZhdWx0VGV4dEVkaXRvcikKKyAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHNwYW5zLmxlbmd0aCA9PT0gcmFuZ2VzLmxlbmd0aCwgIlJhbmdl
cyBudW1iZXI6ICIgKyByYW5nZXMubGVuZ3RoICsgIiAhPT0gc3BhbnMgbnVtYmVyOiAiICsgc3Bh
bnMubGVuZ3RoKTsKKworICAgICAgICB2YXIgbWV0cmljcyA9IFtdOworICAgICAgICBmb3IodmFy
IGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgbWV0cmljcy5wdXNo
KHsKKyAgICAgICAgICAgICAgICBsZWZ0OiBzcGFuc1tpXS5vZmZzZXRMZWZ0LAorICAgICAgICAg
ICAgICAgIHdpZHRoOiBzcGFuc1tpXS5vZmZzZXRXaWR0aCwKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IHNwYW5zW2ldLm9mZnNldEhlaWdodAorICAgICAgICAgICAgfSk7CisgICAgICAgIHJldHVy
biBtZXRyaWNzOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGxp
bmVSb3cKKyAgICAgKiBAcGFyYW0ge0FycmF5Ljx7b2Zmc2V0TGVmdDogbnVtYmVyLCBvZmZzZXRU
b3A6IG51bWJlciwgb2Zmc2V0V2lkdGg6IG51bWJlciwgb2Zmc2V0SGVpZ2h0OiBudW1iZXJ9Pn0g
bWV0cmljcworICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjc3NDbGFzcworICAgICAqLworICAgIF9h
cHBlbmRPdmVybGF5SGlnaGxpZ2h0OiBmdW5jdGlvbihsaW5lUm93LCBtZXRyaWNzLCBjc3NDbGFz
cykKKyAgICB7CisgICAgICAgIHZhciBleHRyYVdpZHRoID0gMTsKKyAgICAgICAgZm9yKHZhciBp
ID0gMDsgaSA8IG1ldHJpY3MubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBoaWdobGln
aHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICBoaWdobGln
aHQuYWRkU3R5bGVDbGFzcyhjc3NDbGFzcyk7CisgICAgICAgICAgICBsaW5lUm93LmFwcGVuZENo
aWxkKGhpZ2hsaWdodCk7CisKKyAgICAgICAgICAgIGhpZ2hsaWdodC5zdHlsZS5tYXJnaW5MZWZ0
ID0gKG1ldHJpY3NbaV0ubGVmdCAtIGhpZ2hsaWdodC5vZmZzZXRMZWZ0IC0gZXh0cmFXaWR0aCkg
KyAicHgiOworICAgICAgICAgICAgaGlnaGxpZ2h0LnN0eWxlLndpZHRoID0gKG1ldHJpY3NbaV0u
d2lkdGggKyBleHRyYVdpZHRoICogMikgKyAicHgiOworICAgICAgICAgICAgaGlnaGxpZ2h0LnN0
eWxlLmhlaWdodCA9IG1ldHJpY3NbaV0uaGVpZ2h0ICsgInB4IjsKKyAgICAgICAgICAgIGhpZ2hs
aWdodC5hZGRTdHlsZUNsYXNzKCJ0ZXh0LWVkaXRvci1vdmVybGF5LWhpZ2hsaWdodCIpOworICAg
ICAgICB9CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBwYXJhbSB7RWxlbWVudH0gbGluZVJv
dwogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsaW5lCiAgICAgICogQHBhcmFtIHtBcnJheS48e3N0
YXJ0Q29sdW1uOiBudW1iZXIsIGVuZENvbHVtbjogbnVtYmVyLCBjc3NDbGFzczogc3RyaW5nfT59
IHJhbmdlcwpAQCAtMTkyNSw4ICsyMDQ5LDIwIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFp
blBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
ICAgIHZhciBsaW5lID0gdGhpcy5fdGV4dE1vZGVsLmxpbmUobGluZU51bWJlcik7CisKKyAgICAg
ICAgICAgIHZhciBtZXRyaWNzID0gW107CisgICAgICAgICAgICB2YXIgY3NzQ2xhc3NlcyA9IFtd
OworICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gdGhpcy5faGlnaGxpZ2h0UmVnZXhzKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5faGlnaGxpZ2h0UmVnZXhzW2tleV07Cisg
ICAgICAgICAgICAgICAgbWV0cmljcy5wdXNoKHRoaXMuX21lYXN1cmVSZWdleChsaW5lUm93LCBs
aW5lLCB2YWx1ZS5yZWdleCkpOworICAgICAgICAgICAgICAgIGNzc0NsYXNzZXMucHVzaCh2YWx1
ZS5jc3NDbGFzcyk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHZhciByYW5nZXMgPSB0
aGlzLl9oaWdobGlnaHRlci5vcmRlcmVkUmFuZ2VzUGVyTGluZShsaW5lTnVtYmVyKTsKICAgICAg
ICAgICAgIHRoaXMuX3JlbmRlclJhbmdlcyhsaW5lUm93LCBsaW5lLCByYW5nZXMpOworCisgICAg
ICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgbWV0cmljcy5sZW5ndGg7ICsraSkKKyAgICAgICAg
ICAgICAgICB0aGlzLl9hcHBlbmRPdmVybGF5SGlnaGxpZ2h0KGxpbmVSb3csIG1ldHJpY3NbaV0s
IGNzc0NsYXNzZXNbaV0pOwogICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgaWYgKHRo
aXMuX3JhbmdlVG9NYXJrICYmIHRoaXMuX3JhbmdlVG9NYXJrLnN0YXJ0TGluZSA9PT0gbGluZU51
bWJlcikKICAgICAgICAgICAgICAgICB0aGlzLl9tYXJrZWRSYW5nZUVsZW1lbnQgPSBXZWJJbnNw
ZWN0b3IuaGlnaGxpZ2h0U2VhcmNoUmVzdWx0KGxpbmVSb3csIHRoaXMuX3JhbmdlVG9NYXJrLnN0
YXJ0Q29sdW1uLCB0aGlzLl9yYW5nZVRvTWFyay5lbmRDb2x1bW4gLSB0aGlzLl9yYW5nZVRvTWFy
ay5zdGFydENvbHVtbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1RleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RleHRFZGl0b3IuanMKaW5kZXggYzQ0OTQzODVkMDhkZjU5N2YzMTgyN2I3YmQ4ODZkM2Q0ODRh
YTJhYy4uZGRiNDk3MjMxMzY5NzAzOTczMWI2NWJmNDFlNjllYWJiYmE4NjFiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvci5qcwpAQCAtNjEs
NiArNjEsMTggQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgIGRl
ZmF1bHRGb2N1c2VkRWxlbWVudDogZnVuY3Rpb24oKSB7IH0sCiAKICAgICAvKioKKyAgICAgKiBA
cGFyYW0ge1JlZ0V4cH0gcmVnZXgKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY3NzQ2xhc3MKKyAg
ICAgKi8KKyAgICBoaWdobGlnaHRSZWdleDogZnVuY3Rpb24ocmVnZXgsIGNzc0NsYXNzKSB7IH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXgKKyAgICAgKiBAcmV0dXJu
IHtib29sZWFufQorICAgICAqLworICAgIHJlbW92ZVJlZ2V4SGlnaGxpZ2h0OiBmdW5jdGlvbihy
ZWdleCkgeyB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIK
ICAgICAgKi8KICAgICByZXZlYWxMaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVyKSB7IH0sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3Nz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9yLmNzcwppbmRl
eCAyYTI1NjJiODM2NGMyMmUyNmY4NDNmNWMzYWU3MDljZTY4OGZkODA4Li42OTQwNzFiZDExZmVj
ZjY3YzI2YjFlOWI1MjczZDVjNjQ4Njc1MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvdGV4dEVkaXRvci5jc3MKQEAgLTMwLDYgKzMwLDEzIEBACiAgICAg
LXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dDsKIH0KIAorLnRleHQtZWRpdG9yLW92ZXJsYXktaGln
aGxpZ2h0IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgcG9pbnRlci1ldmVudHM6IG5v
bmU7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKKyAgICB6LWluZGV4OiAtMTsKK30K
KwogLnRleHQtZWRpdG9yLWNvbnRlbnRzIC5pbm5lci1jb250YWluZXIgewogICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKICAgICB0b3A6IDA7CkBAIC0xODMsNiArMTkwLDcgQEAKIC5kZWJ1Zy1mYWRl
b3V0IHsKICAgICAtd2Via2l0LWFuaW1hdGlvbjogImRlYnVnLWZhZGVvdXQiIDFzIDBzOwogICAg
IGJvcmRlcjogMXB4IHNvbGlkIHdoaXRlOworICAgIG1hcmdpbjogLTFweDsKIH0KIAogQC13ZWJr
aXQta2V5ZnJhbWVzIGRlYnVnLWZhZGVvdXQgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk4NTRiMjc4YTk4ZmE3ZjA3NGY5
YWM5MTE3ODE2YWQ5NjI5YTg5ODcuLmRlMmFkNTg5YzIwMDQwMDUzYTExYTFjZTMwYTNkOGFiN2I4
MzcxNWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMS0xNSAgQW5kcmV5IEx1c2huaWtv
diAgPGx1c2huaWtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaGln
aGxpZ2h0IHJlZ2V4cCBBUEkgZm9yIERlZmF1bHRUZXh0RWRpdG9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY4MDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgbGF5b3V0IHRlc3QgdG8gdmVyaWZ5
IERlZmF1bHRUZXh0RWRpdG9yIGhpZ2hsaWdodCByZWdleHAgQVBJLgorCisgICAgICAgICogaW5z
cGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1oaWdobGlnaHQtcmVnZXhwLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1oaWdobGlnaHQt
cmVnZXhwLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTE1ICBUb21teSBXaWRlbmZseWNodCAgPHRv
bW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogRml4aW5nIGNyYXNo
aW5nIGJ1ZyBpbiBNZWRpYVN0cmVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2VkaXRvci90ZXh0LWVkaXRvci1oaWdobGlnaHQtcmVnZXhwLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItaGlnaGxpZ2h0LXJlZ2V4cC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM3ZDljYWM3Yjc1MTgwOWJkYzQ4NGMwYTBmYmJmYTM3ZTZk
NzM1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4
dC1lZGl0b3ItaGlnaGxpZ2h0LXJlZ2V4cC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAor
VGVzdCBlZGl0b3IgaGlnaGxpZ2h0IHJlZ2V4cCBBUEkuCisKKworUnVubmluZzogdGVzdEhpZ2hs
aWdodEFwaQorCitCZWZvcmUgaGlnaGxpZ2h0CisKKzxkaXYgY2xhc3M9ImlubmVyLWNvbnRhaW5l
ciIgdGFiaW5kZXg9IjAiPgorPGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29udGVudCI+Zm9vKCk7
PC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5mb29fMTsgZm9vcjsgZm9v
Xzs8L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmZvb188L2Rpdj4KKzxk
aXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmdsb2JhbF9mb288L2Rpdj4KKzxkaXYgY2xh
c3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmdsb2JhbF9mb28yPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3
ZWJraXQtbGluZS1jb250ZW50Ij5zb21lX290aGVyX2Zvb19YPC9kaXY+PC9kaXY+CisKK0FkZCBo
aWdobGlnaHQgZm9yIHJlZ2V4cCAvZm9vXy4vCisKKzxkaXYgY2xhc3M9ImlubmVyLWNvbnRhaW5l
ciIgdGFiaW5kZXg9IjAiPgorPGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29udGVudCI+Zm9vKCk7
PC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5mb29fMTsgZm9vcjsgZm9v
Xzs8c3BhbiBjbGFzcz0ic29tZS1jc3MtY2xhc3MgdGV4dC1lZGl0b3Itb3ZlcmxheS1oaWdobGln
aHQiIHN0eWxlPSJtYXJnaW4tbGVmdDogLTEyN3B4OyB3aWR0aDogMzdweDsgaGVpZ2h0OiAxNHB4
OyI+PC9zcGFuPjxzcGFuIGNsYXNzPSJzb21lLWNzcy1jbGFzcyB0ZXh0LWVkaXRvci1vdmVybGF5
LWhpZ2hsaWdodCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAtMzZweDsgd2lkdGg6IDM3cHg7IGhlaWdo
dDogMTRweDsiPjwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQi
PmZvb188L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmdsb2JhbF9mb288
L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmdsb2JhbF9mb28yPC9kaXY+
Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5zb21lX290aGVyX2Zvb19YPHNwYW4g
Y2xhc3M9InNvbWUtY3NzLWNsYXNzIHRleHQtZWRpdG9yLW92ZXJsYXktaGlnaGxpZ2h0IiBzdHls
ZT0ibWFyZ2luLWxlZnQ6IC0zNnB4OyB3aWR0aDogMzdweDsgaGVpZ2h0OiAxNHB4OyI+PC9zcGFu
PjwvZGl2PjwvZGl2PgorCitSZW1vdmUgaGlnaGxpZ2h0IGZvciByZWdleHAgL2Zvb18uLworCis8
ZGl2IGNsYXNzPSJpbm5lci1jb250YWluZXIiIHRhYmluZGV4PSIwIj4KKzxkaXYgY2xhc3M9Indl
YmtpdC1saW5lLWNvbnRlbnQiPmZvbygpOzwvZGl2PgorPGRpdiBjbGFzcz0id2Via2l0LWxpbmUt
Y29udGVudCI+Zm9vXzE7IGZvb3I7IGZvb187PC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGlu
ZS1jb250ZW50Ij5mb29fPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5n
bG9iYWxfZm9vPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5nbG9iYWxf
Zm9vMjwvZGl2PgorPGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29udGVudCI+c29tZV9vdGhlcl9m
b29fWDwvZGl2PjwvZGl2PgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRp
dG9yL3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdleHAuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItaGlnaGxpZ2h0LXJlZ2V4cC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM0YzA3MjA5YTVkZGMwZDA3YzRmZWIyMzM1ZjZkMTgxNzkxODYyYzgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhpZ2hsaWdodC1y
ZWdleHAuaHRtbApAQCAtMCwwICsxLDQzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJlZGl0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCisgICAgICAg
IGZ1bmN0aW9uIHRlc3RIaWdobGlnaHRBcGkobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHRleHQgPSBbCisgICAgICAgICAgICAgICAgImZvbygpOyIsCisgICAgICAgICAgICAgICAg
ImZvb18xOyBmb29yOyBmb29fOyIsCisgICAgICAgICAgICAgICAgImZvb18iLAorICAgICAgICAg
ICAgICAgICJnbG9iYWxfZm9vIiwKKyAgICAgICAgICAgICAgICAiZ2xvYmFsX2ZvbzIiLAorICAg
ICAgICAgICAgICAgICJzb21lX290aGVyX2Zvb19YIgorICAgICAgICAgICAgXTsKKyAgICAgICAg
ICAgIHZhciB0ZXh0RWRpdG9yID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVUZXN0RWRpdG9yKCk7Cisg
ICAgICAgICAgICB0ZXh0RWRpdG9yLnNldFRleHQodGV4dC5qb2luKCJcbiIpKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJcbkJlZm9yZSBoaWdobGlnaHQiKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHRleHRFZGl0b3IuX21haW5QYW5lbC5lbGVt
ZW50LmlubmVySFRNTC5yZXBsYWNlKC88ZGl2L2csICJcbjxkaXYiKSk7CisgICAgICAgICAgICB0
ZXh0RWRpdG9yLmhpZ2hsaWdodFJlZ2V4KC9mb29fLi8sICJzb21lLWNzcy1jbGFzcyIpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlxuQWRkIGhpZ2hsaWdodCBmb3IgcmVn
ZXhwIC9mb29fLi8iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHRleHRF
ZGl0b3IuX21haW5QYW5lbC5lbGVtZW50LmlubmVySFRNTC5yZXBsYWNlKC88ZGl2L2csICJcbjxk
aXYiKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiXG5SZW1vdmUgaGln
aGxpZ2h0IGZvciByZWdleHAgL2Zvb18uLyIpOworICAgICAgICAgICAgdGV4dEVkaXRvci5yZW1v
dmVSZWdleEhpZ2hsaWdodCgvZm9vXy4vKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KHRleHRFZGl0b3IuX21haW5QYW5lbC5lbGVtZW50LmlubmVySFRNTC5yZXBsYWNlKC88
ZGl2L2csICJcbjxkaXYiKSk7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIH0sCisgICAg
XSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Cis8cD4KK1Rlc3QgZWRpdG9yIGhpZ2hsaWdodCByZWdleHAgQVBJLgorPC9wPgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182927</attachid>
            <date>2013-01-16 00:21:24 -0800</date>
            <delta_ts>2013-01-16 02:42:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106801-20130116121825.patch</filename>
            <type>text/plain</type>
            <size>14225</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE1ZDllZjQyOThmZjgw
MWY5NzA3NWQ4YTgzMjMzODNmY2NjZDA5YS4uMzEyZjU3NjA2Yzk3YjNjZmU4YjdlYjMyZTk3NDBh
YzBiNDNmYjc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAxLTE1ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBoaWdobGlnaHQgcmVnZXhwIEFQSSBmb3IgRGVmYXVsdFRleHRFZGl0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjgwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBoaWdobGlnaHRS
ZWdleHAgYW5kIHJlbW92ZVJlZ2V4cEhpZ2hsaWdodCBtZXRob2RzIHRvIERlZmF1bHRUZXh0RWRp
dG9yIHRoYXQgaGlnaGxpZ2h0CisgICAgICAgIGFsbCBvY2N1cnJlbmNlcyBvZiBnaXZlbiByZWdl
eHAgaW4gdGV4dCB3aXRoIGdpdmVuIGNzcyBjbGFzcy4KKyAgICAgICAgSGlnaGxpZ2h0IGlzIGRv
bmUgdmlhIHNwYW5zIHBvc2l0aW9uZWQgYWJzb2x1dGVseSBvdmVyIHRoZSByZWdleHAgb2NjdXJl
bmNlcyBpbiB0ZXh0LgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0
b3ItaGlnaGxpZ2h0LXJlZ2V4cC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0RlZmF1bHRUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0
RWRpdG9yLnByb3RvdHlwZS5oaWdobGlnaHRSZWdleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBlLnJlbW92ZVJlZ2V4SGlnaGxpZ2h0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5oaWdobGlnaHRSZWdleCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUucmVtb3ZlUmVn
ZXhIaWdobGlnaHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwu
cHJvdG90eXBlLl9yZXBhaW50VmlzaWJsZUNodW5rcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2ZpbmRSZWdleE9jY3VycmVuY2VzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fbWVhc3Vy
ZVJlZ2V4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3Rv
dHlwZS5fYXBwZW5kT3ZlcmxheUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX3BhaW50TGluZSk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3IucHJvdG90eXBlLmhpZ2hsaWdodFJlZ2V4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yLnByb3RvdHlwZS5yZW1vdmVSZWdleEhpZ2hsaWdodCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9yLmNzczoKKyAgICAgICAgKC50ZXh0LWVkaXRvci1v
dmVybGF5LWhpZ2hsaWdodCk6CisgICAgICAgICguZGVidWctZmFkZW91dCk6CisKIDIwMTMtMDEt
MTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgR1RLKyBhbmQg
UXQgYnVpbGQgZml4IGFmdGVyIHIxMzk4MzMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwppbmRleCBjZjdjMjYyNjIy
NTg5ZmU3N2Y3NTU4YjczZTk1ZTgyYWEzN2M3OTA0Li5mZWRjYTc3MGEwMjNlMjI5YmYxOTZlYTUw
YzBjNDdiMjcxZjI2NzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKQEAgLTExMCw2ICsxMTAsMjQgQEAgV2Vi
SW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLkVkaXRJbmZvID0gZnVuY3Rpb24ocmFuZ2UsIHRl
eHQpCiAKIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAg
LyoqCisgICAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4CisgICAgICogQHBhcmFtIHtzdHJpbmd9
IGNzc0NsYXNzCisgICAgICovCisgICAgaGlnaGxpZ2h0UmVnZXg6IGZ1bmN0aW9uKHJlZ2V4LCBj
c3NDbGFzcykKKyAgICB7CisgICAgICAgIHRoaXMuX21haW5QYW5lbC5oaWdobGlnaHRSZWdleChy
ZWdleCwgY3NzQ2xhc3MpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1JlZ0V4
cH0gcmVnZXgKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHJlbW92ZVJl
Z2V4SGlnaGxpZ2h0OiBmdW5jdGlvbihyZWdleCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9tYWluUGFuZWwucmVtb3ZlUmVnZXhIaWdobGlnaHQocmVnZXgpOworICAgIH0sCisKKyAgICAv
KioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWltZVR5cGUKICAgICAgKi8KICAgICBzZXQgbWlt
ZVR5cGUobWltZVR5cGUpCkBAIC0xMzM4LDExICsxMzU2LDUyIEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsID0gZnVuY3Rpb24oZGVsZWdhdGUsIHRleHRNb2RlbCwgdXJsLCBzeW5j
U2Nyb2xsCiAKICAgICB0aGlzLl9jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0
aGlzLl9oYW5kbGVGb2N1c2VkLmJpbmQodGhpcyksIGZhbHNlKTsKIAorICAgIHRoaXMuX2hpZ2hs
aWdodFJlZ2V4cyA9IHt9OworCiAgICAgdGhpcy5fZnJlZUNhY2hlZEVsZW1lbnRzKCk7CiAgICAg
dGhpcy5idWlsZENodW5rcygpOwogfQogCiBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5l
bC5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4Cisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IGNzc0NsYXNzCisgICAgICovCisgICAgaGlnaGxpZ2h0UmVn
ZXg6IGZ1bmN0aW9uKHJlZ2V4LCBjc3NDbGFzcykKKyAgICB7CisgICAgICAgIHRoaXMuX2hpZ2hs
aWdodFJlZ2V4c1tyZWdleF0gPSB7CisgICAgICAgICAgICByZWdleDogbmV3IFJlZ0V4cChyZWdl
eC5zb3VyY2UsICJnIiArIChyZWdleC5pZ25vcmVDYXNlID8gImkiIDogIiIpKSwKKyAgICAgICAg
ICAgIGNzc0NsYXNzOiBjc3NDbGFzcworICAgICAgICB9OworICAgICAgICB0aGlzLl9yZXBhaW50
VmlzaWJsZUNodW5rcygpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1JlZ0V4
cH0gcmVnZXgKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHJlbW92ZVJl
Z2V4SGlnaGxpZ2h0OiBmdW5jdGlvbihyZWdleCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQg
PSBkZWxldGUgdGhpcy5faGlnaGxpZ2h0UmVnZXhzW3JlZ2V4XTsKKyAgICAgICAgdGhpcy5fcmVw
YWludFZpc2libGVDaHVua3MoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisg
ICAgX3JlcGFpbnRWaXNpYmxlQ2h1bmtzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIg
dmlzaWJsZUZyb20gPSB0aGlzLnNjcm9sbFRvcCgpOworICAgICAgICB2YXIgdmlzaWJsZVRvID0g
dmlzaWJsZUZyb20gKyB0aGlzLmNsaWVudEhlaWdodCgpOworCisgICAgICAgIHZhciB2aXNpYmxl
Q2h1bmtzID0gdGhpcy5maW5kVmlzaWJsZUNodW5rcyh2aXNpYmxlRnJvbSwgdmlzaWJsZVRvKTsK
KyAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uKCk7CisKKyAgICAgICAgZm9y
KHZhciBpID0gdmlzaWJsZUNodW5rcy5zdGFydDsgaSA8IHZpc2libGVDaHVua3MuZW5kOyArK2kp
IHsKKyAgICAgICAgICAgIHZhciBjaHVuayA9IHRoaXMuX3RleHRDaHVua3NbaV07CisgICAgICAg
ICAgICB0aGlzLl9wYWludExpbmVzKGNodW5rLl9zdGFydExpbmUsIGNodW5rLl9zdGFydExpbmUg
KyBjaHVuay5saW5lc0NvdW50KTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9yZXN0b3JlU2Vs
ZWN0aW9uKHNlbGVjdGlvbik7CisgICAgfSwKKwogICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICB0aGlzLl9ib3VuZFNlbGVjdGlvbkNoYW5nZUxpc3RlbmVyID0gdGhpcy5f
aGFuZGxlU2VsZWN0aW9uQ2hhbmdlLmJpbmQodGhpcyk7CkBAIC0xODY0LDYgKzE5MjMsNzEgQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgIH0sCiAK
ICAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGluZQorICAgICAqIEBwYXJhbSB7UmVn
RXhwfSByZWdleAorICAgICAqIEByZXR1cm4ge0FycmF5Ljx7c3RhcnRDb2x1bW46IG51bWJlciwg
ZW5kQ29sdW1uOiBudW1iZXJ9Pn0KKyAgICAgKi8KKyAgICBfZmluZFJlZ2V4T2NjdXJyZW5jZXM6
IGZ1bmN0aW9uKGxpbmUsIHJlZ2V4KQorICAgIHsKKyAgICAgICAgdmFyIHJhbmdlcyA9IFtdOwor
ICAgICAgICB2YXIgcmVnZXhSZXN1bHQ7CisgICAgICAgIHdoaWxlIChyZWdleFJlc3VsdCA9IHJl
Z2V4LmV4ZWMobGluZSkpIHsKKyAgICAgICAgICAgIHJhbmdlcy5wdXNoKHsKKyAgICAgICAgICAg
ICAgICBzdGFydENvbHVtbjogcmVnZXhSZXN1bHQuaW5kZXgsCisgICAgICAgICAgICAgICAgZW5k
Q29sdW1uOiByZWdleFJlc3VsdC5pbmRleCArIHJlZ2V4UmVzdWx0WzBdLmxlbmd0aCAtIDEKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiByYW5nZXM7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RWxlbWVudH0gbGluZVJvdworICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBsaW5lCisgICAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4CisgICAgICogQHJl
dHVybiB7QXJyYXkuPHtsZWZ0OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVy
fT59CisgICAgICovCisgICAgX21lYXN1cmVSZWdleDogZnVuY3Rpb24obGluZVJvdywgbGluZSwg
cmVnZXgpCisgICAgeworICAgICAgICB2YXIgcmFuZ2VzID0gdGhpcy5fZmluZFJlZ2V4T2NjdXJy
ZW5jZXMobGluZSwgcmVnZXgpOworICAgICAgICBpZiAocmFuZ2VzLmxlbmd0aCA9PT0gMCkKKyAg
ICAgICAgICAgIHJldHVybiBbXTsKKworICAgICAgICB0aGlzLl9yZW5kZXJSYW5nZXMobGluZVJv
dywgbGluZSwgcmFuZ2VzKTsKKyAgICAgICAgdmFyIHNwYW5zID0gbGluZVJvdy5nZXRFbGVtZW50
c0J5VGFnTmFtZSgic3BhbiIpOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnRGVmYXVs
dFRleHRFZGl0b3IpCisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChzcGFucy5sZW5ndGggPT09
IHJhbmdlcy5sZW5ndGgsICJSYW5nZXMgbnVtYmVyOiAiICsgcmFuZ2VzLmxlbmd0aCArICIgIT09
IHNwYW5zIG51bWJlcjogIiArIHNwYW5zLmxlbmd0aCk7CisKKyAgICAgICAgdmFyIG1ldHJpY3Mg
PSBbXTsKKyAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgIG1ldHJpY3MucHVzaCh7CisgICAgICAgICAgICAgICAgbGVmdDogc3BhbnNbaV0u
b2Zmc2V0TGVmdCwKKyAgICAgICAgICAgICAgICB3aWR0aDogc3BhbnNbaV0ub2Zmc2V0V2lkdGgs
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiBzcGFuc1tpXS5vZmZzZXRIZWlnaHQKKyAgICAgICAg
ICAgIH0pOworICAgICAgICByZXR1cm4gbWV0cmljczsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtFbGVtZW50fSBsaW5lUm93CisgICAgICogQHBhcmFtIHtBcnJheS48e29mZnNl
dExlZnQ6IG51bWJlciwgb2Zmc2V0VG9wOiBudW1iZXIsIG9mZnNldFdpZHRoOiBudW1iZXIsIG9m
ZnNldEhlaWdodDogbnVtYmVyfT59IG1ldHJpY3MKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY3Nz
Q2xhc3MKKyAgICAgKi8KKyAgICBfYXBwZW5kT3ZlcmxheUhpZ2hsaWdodDogZnVuY3Rpb24obGlu
ZVJvdywgbWV0cmljcywgY3NzQ2xhc3MpCisgICAgeworICAgICAgICBjb25zdCBleHRyYVdpZHRo
ID0gMTsKKyAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG1ldHJpY3MubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIHZhciBoaWdobGlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFu
Iik7CisgICAgICAgICAgICBoaWdobGlnaHQuYWRkU3R5bGVDbGFzcyhjc3NDbGFzcyk7CisgICAg
ICAgICAgICBsaW5lUm93LmFwcGVuZENoaWxkKGhpZ2hsaWdodCk7CisKKyAgICAgICAgICAgIGhp
Z2hsaWdodC5zdHlsZS5tYXJnaW5MZWZ0ID0gKG1ldHJpY3NbaV0ubGVmdCAtIGhpZ2hsaWdodC5v
ZmZzZXRMZWZ0IC0gZXh0cmFXaWR0aCkgKyAicHgiOworICAgICAgICAgICAgaGlnaGxpZ2h0LnN0
eWxlLndpZHRoID0gKG1ldHJpY3NbaV0ud2lkdGggKyBleHRyYVdpZHRoICogMikgKyAicHgiOwor
ICAgICAgICAgICAgaGlnaGxpZ2h0LnN0eWxlLmhlaWdodCA9IG1ldHJpY3NbaV0uaGVpZ2h0ICsg
InB4IjsKKyAgICAgICAgICAgIGhpZ2hsaWdodC5hZGRTdHlsZUNsYXNzKCJ0ZXh0LWVkaXRvci1v
dmVybGF5LWhpZ2hsaWdodCIpOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgogICAgICAq
IEBwYXJhbSB7RWxlbWVudH0gbGluZVJvdwogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsaW5lCiAg
ICAgICogQHBhcmFtIHtBcnJheS48e3N0YXJ0Q29sdW1uOiBudW1iZXIsIGVuZENvbHVtbjogbnVt
YmVyLCBjc3NDbGFzczogc3RyaW5nfT59IHJhbmdlcwpAQCAtMTkyNSw4ICsyMDQ5LDIwIEBAIFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgICAgIHZhciBsaW5lID0gdGhpcy5fdGV4dE1vZGVsLmxp
bmUobGluZU51bWJlcik7CisKKyAgICAgICAgICAgIHZhciBtZXRyaWNzID0gW107CisgICAgICAg
ICAgICB2YXIgY3NzQ2xhc3NlcyA9IFtdOworICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gdGhp
cy5faGlnaGxpZ2h0UmVnZXhzKSB7CisgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5f
aGlnaGxpZ2h0UmVnZXhzW2tleV07CisgICAgICAgICAgICAgICAgbWV0cmljcy5wdXNoKHRoaXMu
X21lYXN1cmVSZWdleChsaW5lUm93LCBsaW5lLCB2YWx1ZS5yZWdleCkpOworICAgICAgICAgICAg
ICAgIGNzc0NsYXNzZXMucHVzaCh2YWx1ZS5jc3NDbGFzcyk7CisgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgIHZhciByYW5nZXMgPSB0aGlzLl9oaWdobGlnaHRlci5vcmRlcmVkUmFuZ2VzUGVy
TGluZShsaW5lTnVtYmVyKTsKICAgICAgICAgICAgIHRoaXMuX3JlbmRlclJhbmdlcyhsaW5lUm93
LCBsaW5lLCByYW5nZXMpOworCisgICAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgbWV0cmlj
cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRPdmVybGF5SGlnaGxp
Z2h0KGxpbmVSb3csIG1ldHJpY3NbaV0sIGNzc0NsYXNzZXNbaV0pOwogICAgICAgICB9IGZpbmFs
bHkgewogICAgICAgICAgICAgaWYgKHRoaXMuX3JhbmdlVG9NYXJrICYmIHRoaXMuX3JhbmdlVG9N
YXJrLnN0YXJ0TGluZSA9PT0gbGluZU51bWJlcikKICAgICAgICAgICAgICAgICB0aGlzLl9tYXJr
ZWRSYW5nZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuaGlnaGxpZ2h0U2VhcmNoUmVzdWx0KGxpbmVS
b3csIHRoaXMuX3JhbmdlVG9NYXJrLnN0YXJ0Q29sdW1uLCB0aGlzLl9yYW5nZVRvTWFyay5lbmRD
b2x1bW4gLSB0aGlzLl9yYW5nZVRvTWFyay5zdGFydENvbHVtbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3IuanMKaW5kZXggYzQ0OTQzODVkMDhk
ZjU5N2YzMTgyN2I3YmQ4ODZkM2Q0ODRhYTJhYy4uZGRiNDk3MjMxMzY5NzAzOTczMWI2NWJmNDFl
NjllYWJiYmE4NjFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGV4dEVkaXRvci5qcwpAQCAtNjEsNiArNjEsMTggQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3IucHJvdG90eXBlID0gewogICAgIGRlZmF1bHRGb2N1c2VkRWxlbWVudDogZnVuY3Rpb24oKSB7
IH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXgKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gY3NzQ2xhc3MKKyAgICAgKi8KKyAgICBoaWdobGlnaHRSZWdleDogZnVuY3Rp
b24ocmVnZXgsIGNzc0NsYXNzKSB7IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1JlZ0V4
cH0gcmVnZXgKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHJlbW92ZVJl
Z2V4SGlnaGxpZ2h0OiBmdW5jdGlvbihyZWdleCkgeyB9LAorCisgICAgLyoqCiAgICAgICogQHBh
cmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKICAgICAgKi8KICAgICByZXZlYWxMaW5lOiBmdW5jdGlv
bihsaW5lTnVtYmVyKSB7IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC90ZXh0RWRpdG9yLmNzcwppbmRleCAyYTI1NjJiODM2NGMyMmUyNmY4NDNmNWMzYWU3MDlj
ZTY4OGZkODA4Li42OTQwNzFiZDExZmVjZjY3YzI2YjFlOWI1MjczZDVjNjQ4Njc1MjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3Nz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dEVkaXRvci5jc3MK
QEAgLTMwLDYgKzMwLDEzIEBACiAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dDsKIH0KIAor
LnRleHQtZWRpdG9yLW92ZXJsYXktaGlnaGxpZ2h0IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9u
ZTsKKyAgICB6LWluZGV4OiAtMTsKK30KKwogLnRleHQtZWRpdG9yLWNvbnRlbnRzIC5pbm5lci1j
b250YWluZXIgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0b3A6IDA7CkBAIC0xODMs
NiArMTkwLDcgQEAKIC5kZWJ1Zy1mYWRlb3V0IHsKICAgICAtd2Via2l0LWFuaW1hdGlvbjogImRl
YnVnLWZhZGVvdXQiIDFzIDBzOwogICAgIGJvcmRlcjogMXB4IHNvbGlkIHdoaXRlOworICAgIG1h
cmdpbjogLTFweDsKIH0KIAogQC13ZWJraXQta2V5ZnJhbWVzIGRlYnVnLWZhZGVvdXQgewpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGZiNDg2YTNjZTJlNzlhNDUyYTc5ZjUxZTFjNTRiMTcwMTQ0MGY5ZjMuLjkwMDBhMjBhOGY4
MzlkZGY4NjZjN2EyYWIxZThmNzJmNWQ2MTE5YTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
My0wMS0xNSAgQW5kcmV5IEx1c2huaWtvdiAgPGx1c2huaWtvdkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0IHJlZ2V4cCBBUEkgZm9yIERlZmF1bHRUZXh0
RWRpdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDY4MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
ZXcgbGF5b3V0IHRlc3QgdG8gdmVyaWZ5IERlZmF1bHRUZXh0RWRpdG9yIGhpZ2hsaWdodCByZWdl
eHAgQVBJLgorCisgICAgICAgICogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1oaWdobGln
aHQtcmVnZXhwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2VkaXRv
ci90ZXh0LWVkaXRvci1oaWdobGlnaHQtcmVnZXhwLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTE1
ICBUYWIgQXRraW5zICA8amFja2FsbWFnZUBnbWFpbC5jb20+CiAKICAgICAgICAgVXBkYXRlIENT
UzMgZ3JhZGllbnQgc3VwcG9ydCB0byB0aGUgbGF0ZXN0IHNwZWMgdmVyc2lvbgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1oaWdobGlnaHQtcmVn
ZXhwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0
b3ItaGlnaGxpZ2h0LXJlZ2V4cC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM3ZDljYWM3Yjc1
MTgwOWJkYzQ4NGMwYTBmYmJmYTM3ZTZkNzM1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItaGlnaGxpZ2h0LXJlZ2V4cC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzNSBAQAorVGVzdCBlZGl0b3IgaGlnaGxpZ2h0IHJlZ2V4cCBBUEku
CisKKworUnVubmluZzogdGVzdEhpZ2hsaWdodEFwaQorCitCZWZvcmUgaGlnaGxpZ2h0CisKKzxk
aXYgY2xhc3M9ImlubmVyLWNvbnRhaW5lciIgdGFiaW5kZXg9IjAiPgorPGRpdiBjbGFzcz0id2Vi
a2l0LWxpbmUtY29udGVudCI+Zm9vKCk7PC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1j
b250ZW50Ij5mb29fMTsgZm9vcjsgZm9vXzs8L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5l
LWNvbnRlbnQiPmZvb188L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmds
b2JhbF9mb288L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmdsb2JhbF9m
b28yPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5zb21lX290aGVyX2Zv
b19YPC9kaXY+PC9kaXY+CisKK0FkZCBoaWdobGlnaHQgZm9yIHJlZ2V4cCAvZm9vXy4vCisKKzxk
aXYgY2xhc3M9ImlubmVyLWNvbnRhaW5lciIgdGFiaW5kZXg9IjAiPgorPGRpdiBjbGFzcz0id2Vi
a2l0LWxpbmUtY29udGVudCI+Zm9vKCk7PC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1j
b250ZW50Ij5mb29fMTsgZm9vcjsgZm9vXzs8c3BhbiBjbGFzcz0ic29tZS1jc3MtY2xhc3MgdGV4
dC1lZGl0b3Itb3ZlcmxheS1oaWdobGlnaHQiIHN0eWxlPSJtYXJnaW4tbGVmdDogLTEyN3B4OyB3
aWR0aDogMzdweDsgaGVpZ2h0OiAxNHB4OyI+PC9zcGFuPjxzcGFuIGNsYXNzPSJzb21lLWNzcy1j
bGFzcyB0ZXh0LWVkaXRvci1vdmVybGF5LWhpZ2hsaWdodCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAt
MzZweDsgd2lkdGg6IDM3cHg7IGhlaWdodDogMTRweDsiPjwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xh
c3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmZvb188L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1s
aW5lLWNvbnRlbnQiPmdsb2JhbF9mb288L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNv
bnRlbnQiPmdsb2JhbF9mb28yPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50
Ij5zb21lX290aGVyX2Zvb19YPHNwYW4gY2xhc3M9InNvbWUtY3NzLWNsYXNzIHRleHQtZWRpdG9y
LW92ZXJsYXktaGlnaGxpZ2h0IiBzdHlsZT0ibWFyZ2luLWxlZnQ6IC0zNnB4OyB3aWR0aDogMzdw
eDsgaGVpZ2h0OiAxNHB4OyI+PC9zcGFuPjwvZGl2PjwvZGl2PgorCitSZW1vdmUgaGlnaGxpZ2h0
IGZvciByZWdleHAgL2Zvb18uLworCis8ZGl2IGNsYXNzPSJpbm5lci1jb250YWluZXIiIHRhYmlu
ZGV4PSIwIj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmZvbygpOzwvZGl2Pgor
PGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29udGVudCI+Zm9vXzE7IGZvb3I7IGZvb187PC9kaXY+
Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5mb29fPC9kaXY+Cis8ZGl2IGNsYXNz
PSJ3ZWJraXQtbGluZS1jb250ZW50Ij5nbG9iYWxfZm9vPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJr
aXQtbGluZS1jb250ZW50Ij5nbG9iYWxfZm9vMjwvZGl2PgorPGRpdiBjbGFzcz0id2Via2l0LWxp
bmUtY29udGVudCI+c29tZV9vdGhlcl9mb29fWDwvZGl2PjwvZGl2PgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdleHAu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItaGlnaGxpZ2h0
LXJlZ2V4cC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0YzA3MjA5YTVkZGMwZDA3YzRmZWIyMzM1ZjZkMTgx
NzkxODYyYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9y
L3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdleHAuaHRtbApAQCAtMCwwICsxLDQzIEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJlZGl0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0
LnJ1blRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RIaWdobGlnaHRBcGkobmV4dCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHRleHQgPSBbCisgICAgICAgICAgICAgICAgImZv
bygpOyIsCisgICAgICAgICAgICAgICAgImZvb18xOyBmb29yOyBmb29fOyIsCisgICAgICAgICAg
ICAgICAgImZvb18iLAorICAgICAgICAgICAgICAgICJnbG9iYWxfZm9vIiwKKyAgICAgICAgICAg
ICAgICAiZ2xvYmFsX2ZvbzIiLAorICAgICAgICAgICAgICAgICJzb21lX290aGVyX2Zvb19YIgor
ICAgICAgICAgICAgXTsKKyAgICAgICAgICAgIHZhciB0ZXh0RWRpdG9yID0gSW5zcGVjdG9yVGVz
dC5jcmVhdGVUZXN0RWRpdG9yKCk7CisgICAgICAgICAgICB0ZXh0RWRpdG9yLnNldFRleHQodGV4
dC5qb2luKCJcbiIpKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJcbkJl
Zm9yZSBoaWdobGlnaHQiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHRl
eHRFZGl0b3IuX21haW5QYW5lbC5lbGVtZW50LmlubmVySFRNTC5yZXBsYWNlKC88ZGl2L2csICJc
bjxkaXYiKSk7CisgICAgICAgICAgICB0ZXh0RWRpdG9yLmhpZ2hsaWdodFJlZ2V4KC9mb29fLi8s
ICJzb21lLWNzcy1jbGFzcyIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IlxuQWRkIGhpZ2hsaWdodCBmb3IgcmVnZXhwIC9mb29fLi8iKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KHRleHRFZGl0b3IuX21haW5QYW5lbC5lbGVtZW50LmlubmVySFRN
TC5yZXBsYWNlKC88ZGl2L2csICJcbjxkaXYiKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiXG5SZW1vdmUgaGlnaGxpZ2h0IGZvciByZWdleHAgL2Zvb18uLyIpOworICAg
ICAgICAgICAgdGV4dEVkaXRvci5yZW1vdmVSZWdleEhpZ2hsaWdodCgvZm9vXy4vKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHRleHRFZGl0b3IuX21haW5QYW5lbC5lbGVt
ZW50LmlubmVySFRNTC5yZXBsYWNlKC88ZGl2L2csICJcbjxkaXYiKSk7CisgICAgICAgICAgICBu
ZXh0KCk7CisgICAgICAgIH0sCisgICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3QgZWRpdG9yIGhpZ2hsaWdodCByZWdl
eHAgQVBJLgorPC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182945</attachid>
            <date>2013-01-16 02:42:22 -0800</date>
            <delta_ts>2013-01-16 02:43:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106801-20130116143923.patch</filename>
            <type>text/plain</type>
            <size>14225</size>
            <attacher name="Andrey Lushnikov">lushnikov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE1ZDllZjQyOThmZjgw
MWY5NzA3NWQ4YTgzMjMzODNmY2NjZDA5YS4uMzEyZjU3NjA2Yzk3YjNjZmU4YjdlYjMyZTk3NDBh
YzBiNDNmYjc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAxLTE1ICBBbmRy
ZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBoaWdobGlnaHQgcmVnZXhwIEFQSSBmb3IgRGVmYXVsdFRleHRFZGl0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjgwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBoaWdobGlnaHRS
ZWdleHAgYW5kIHJlbW92ZVJlZ2V4cEhpZ2hsaWdodCBtZXRob2RzIHRvIERlZmF1bHRUZXh0RWRp
dG9yIHRoYXQgaGlnaGxpZ2h0CisgICAgICAgIGFsbCBvY2N1cnJlbmNlcyBvZiBnaXZlbiByZWdl
eHAgaW4gdGV4dCB3aXRoIGdpdmVuIGNzcyBjbGFzcy4KKyAgICAgICAgSGlnaGxpZ2h0IGlzIGRv
bmUgdmlhIHNwYW5zIHBvc2l0aW9uZWQgYWJzb2x1dGVseSBvdmVyIHRoZSByZWdleHAgb2NjdXJl
bmNlcyBpbiB0ZXh0LgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0
b3ItaGlnaGxpZ2h0LXJlZ2V4cC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0RlZmF1bHRUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRUZXh0
RWRpdG9yLnByb3RvdHlwZS5oaWdobGlnaHRSZWdleCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVmYXVsdFRleHRFZGl0b3IucHJvdG90eXBlLnJlbW92ZVJlZ2V4SGlnaGxpZ2h0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5oaWdobGlnaHRSZWdleCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUucmVtb3ZlUmVn
ZXhIaWdobGlnaHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwu
cHJvdG90eXBlLl9yZXBhaW50VmlzaWJsZUNodW5rcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX2ZpbmRSZWdleE9jY3VycmVuY2VzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZS5fbWVhc3Vy
ZVJlZ2V4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3Rv
dHlwZS5fYXBwZW5kT3ZlcmxheUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX3BhaW50TGluZSk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3IucHJvdG90eXBlLmhpZ2hsaWdodFJlZ2V4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yLnByb3RvdHlwZS5yZW1vdmVSZWdleEhpZ2hsaWdodCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC90ZXh0RWRpdG9yLmNzczoKKyAgICAgICAgKC50ZXh0LWVkaXRvci1v
dmVybGF5LWhpZ2hsaWdodCk6CisgICAgICAgICguZGVidWctZmFkZW91dCk6CisKIDIwMTMtMDEt
MTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgR1RLKyBhbmQg
UXQgYnVpbGQgZml4IGFmdGVyIHIxMzk4MzMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwppbmRleCBjZjdjMjYyNjIy
NTg5ZmU3N2Y3NTU4YjczZTk1ZTgyYWEzN2M3OTA0Li5mZWRjYTc3MGEwMjNlMjI5YmYxOTZlYTUw
YzBjNDdiMjcxZjI2NzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKQEAgLTExMCw2ICsxMTAsMjQgQEAgV2Vi
SW5zcGVjdG9yLkRlZmF1bHRUZXh0RWRpdG9yLkVkaXRJbmZvID0gZnVuY3Rpb24ocmFuZ2UsIHRl
eHQpCiAKIFdlYkluc3BlY3Rvci5EZWZhdWx0VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAg
LyoqCisgICAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4CisgICAgICogQHBhcmFtIHtzdHJpbmd9
IGNzc0NsYXNzCisgICAgICovCisgICAgaGlnaGxpZ2h0UmVnZXg6IGZ1bmN0aW9uKHJlZ2V4LCBj
c3NDbGFzcykKKyAgICB7CisgICAgICAgIHRoaXMuX21haW5QYW5lbC5oaWdobGlnaHRSZWdleChy
ZWdleCwgY3NzQ2xhc3MpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1JlZ0V4
cH0gcmVnZXgKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHJlbW92ZVJl
Z2V4SGlnaGxpZ2h0OiBmdW5jdGlvbihyZWdleCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9tYWluUGFuZWwucmVtb3ZlUmVnZXhIaWdobGlnaHQocmVnZXgpOworICAgIH0sCisKKyAgICAv
KioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWltZVR5cGUKICAgICAgKi8KICAgICBzZXQgbWlt
ZVR5cGUobWltZVR5cGUpCkBAIC0xMzM4LDExICsxMzU2LDUyIEBAIFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yTWFpblBhbmVsID0gZnVuY3Rpb24oZGVsZWdhdGUsIHRleHRNb2RlbCwgdXJsLCBzeW5j
U2Nyb2xsCiAKICAgICB0aGlzLl9jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0
aGlzLl9oYW5kbGVGb2N1c2VkLmJpbmQodGhpcyksIGZhbHNlKTsKIAorICAgIHRoaXMuX2hpZ2hs
aWdodFJlZ2V4cyA9IHt9OworCiAgICAgdGhpcy5fZnJlZUNhY2hlZEVsZW1lbnRzKCk7CiAgICAg
dGhpcy5idWlsZENodW5rcygpOwogfQogCiBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5l
bC5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4Cisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IGNzc0NsYXNzCisgICAgICovCisgICAgaGlnaGxpZ2h0UmVn
ZXg6IGZ1bmN0aW9uKHJlZ2V4LCBjc3NDbGFzcykKKyAgICB7CisgICAgICAgIHRoaXMuX2hpZ2hs
aWdodFJlZ2V4c1tyZWdleF0gPSB7CisgICAgICAgICAgICByZWdleDogbmV3IFJlZ0V4cChyZWdl
eC5zb3VyY2UsICJnIiArIChyZWdleC5pZ25vcmVDYXNlID8gImkiIDogIiIpKSwKKyAgICAgICAg
ICAgIGNzc0NsYXNzOiBjc3NDbGFzcworICAgICAgICB9OworICAgICAgICB0aGlzLl9yZXBhaW50
VmlzaWJsZUNodW5rcygpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1JlZ0V4
cH0gcmVnZXgKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHJlbW92ZVJl
Z2V4SGlnaGxpZ2h0OiBmdW5jdGlvbihyZWdleCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQg
PSBkZWxldGUgdGhpcy5faGlnaGxpZ2h0UmVnZXhzW3JlZ2V4XTsKKyAgICAgICAgdGhpcy5fcmVw
YWludFZpc2libGVDaHVua3MoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCisg
ICAgX3JlcGFpbnRWaXNpYmxlQ2h1bmtzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIg
dmlzaWJsZUZyb20gPSB0aGlzLnNjcm9sbFRvcCgpOworICAgICAgICB2YXIgdmlzaWJsZVRvID0g
dmlzaWJsZUZyb20gKyB0aGlzLmNsaWVudEhlaWdodCgpOworCisgICAgICAgIHZhciB2aXNpYmxl
Q2h1bmtzID0gdGhpcy5maW5kVmlzaWJsZUNodW5rcyh2aXNpYmxlRnJvbSwgdmlzaWJsZVRvKTsK
KyAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uKCk7CisKKyAgICAgICAgZm9y
KHZhciBpID0gdmlzaWJsZUNodW5rcy5zdGFydDsgaSA8IHZpc2libGVDaHVua3MuZW5kOyArK2kp
IHsKKyAgICAgICAgICAgIHZhciBjaHVuayA9IHRoaXMuX3RleHRDaHVua3NbaV07CisgICAgICAg
ICAgICB0aGlzLl9wYWludExpbmVzKGNodW5rLl9zdGFydExpbmUsIGNodW5rLl9zdGFydExpbmUg
KyBjaHVuay5saW5lc0NvdW50KTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9yZXN0b3JlU2Vs
ZWN0aW9uKHNlbGVjdGlvbik7CisgICAgfSwKKwogICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICB0aGlzLl9ib3VuZFNlbGVjdGlvbkNoYW5nZUxpc3RlbmVyID0gdGhpcy5f
aGFuZGxlU2VsZWN0aW9uQ2hhbmdlLmJpbmQodGhpcyk7CkBAIC0xODY0LDYgKzE5MjMsNzEgQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgIH0sCiAK
ICAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGluZQorICAgICAqIEBwYXJhbSB7UmVn
RXhwfSByZWdleAorICAgICAqIEByZXR1cm4ge0FycmF5Ljx7c3RhcnRDb2x1bW46IG51bWJlciwg
ZW5kQ29sdW1uOiBudW1iZXJ9Pn0KKyAgICAgKi8KKyAgICBfZmluZFJlZ2V4T2NjdXJyZW5jZXM6
IGZ1bmN0aW9uKGxpbmUsIHJlZ2V4KQorICAgIHsKKyAgICAgICAgdmFyIHJhbmdlcyA9IFtdOwor
ICAgICAgICB2YXIgcmVnZXhSZXN1bHQ7CisgICAgICAgIHdoaWxlIChyZWdleFJlc3VsdCA9IHJl
Z2V4LmV4ZWMobGluZSkpIHsKKyAgICAgICAgICAgIHJhbmdlcy5wdXNoKHsKKyAgICAgICAgICAg
ICAgICBzdGFydENvbHVtbjogcmVnZXhSZXN1bHQuaW5kZXgsCisgICAgICAgICAgICAgICAgZW5k
Q29sdW1uOiByZWdleFJlc3VsdC5pbmRleCArIHJlZ2V4UmVzdWx0WzBdLmxlbmd0aCAtIDEKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiByYW5nZXM7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RWxlbWVudH0gbGluZVJvdworICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBsaW5lCisgICAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4CisgICAgICogQHJl
dHVybiB7QXJyYXkuPHtsZWZ0OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVy
fT59CisgICAgICovCisgICAgX21lYXN1cmVSZWdleDogZnVuY3Rpb24obGluZVJvdywgbGluZSwg
cmVnZXgpCisgICAgeworICAgICAgICB2YXIgcmFuZ2VzID0gdGhpcy5fZmluZFJlZ2V4T2NjdXJy
ZW5jZXMobGluZSwgcmVnZXgpOworICAgICAgICBpZiAocmFuZ2VzLmxlbmd0aCA9PT0gMCkKKyAg
ICAgICAgICAgIHJldHVybiBbXTsKKworICAgICAgICB0aGlzLl9yZW5kZXJSYW5nZXMobGluZVJv
dywgbGluZSwgcmFuZ2VzKTsKKyAgICAgICAgdmFyIHNwYW5zID0gbGluZVJvdy5nZXRFbGVtZW50
c0J5VGFnTmFtZSgic3BhbiIpOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnRGVmYXVs
dFRleHRFZGl0b3IpCisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChzcGFucy5sZW5ndGggPT09
IHJhbmdlcy5sZW5ndGgsICJSYW5nZXMgbnVtYmVyOiAiICsgcmFuZ2VzLmxlbmd0aCArICIgIT09
IHNwYW5zIG51bWJlcjogIiArIHNwYW5zLmxlbmd0aCk7CisKKyAgICAgICAgdmFyIG1ldHJpY3Mg
PSBbXTsKKyAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgIG1ldHJpY3MucHVzaCh7CisgICAgICAgICAgICAgICAgbGVmdDogc3BhbnNbaV0u
b2Zmc2V0TGVmdCwKKyAgICAgICAgICAgICAgICB3aWR0aDogc3BhbnNbaV0ub2Zmc2V0V2lkdGgs
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiBzcGFuc1tpXS5vZmZzZXRIZWlnaHQKKyAgICAgICAg
ICAgIH0pOworICAgICAgICByZXR1cm4gbWV0cmljczsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtFbGVtZW50fSBsaW5lUm93CisgICAgICogQHBhcmFtIHtBcnJheS48e29mZnNl
dExlZnQ6IG51bWJlciwgb2Zmc2V0VG9wOiBudW1iZXIsIG9mZnNldFdpZHRoOiBudW1iZXIsIG9m
ZnNldEhlaWdodDogbnVtYmVyfT59IG1ldHJpY3MKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY3Nz
Q2xhc3MKKyAgICAgKi8KKyAgICBfYXBwZW5kT3ZlcmxheUhpZ2hsaWdodDogZnVuY3Rpb24obGlu
ZVJvdywgbWV0cmljcywgY3NzQ2xhc3MpCisgICAgeworICAgICAgICBjb25zdCBleHRyYVdpZHRo
ID0gMTsKKyAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG1ldHJpY3MubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIHZhciBoaWdobGlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFu
Iik7CisgICAgICAgICAgICBoaWdobGlnaHQuYWRkU3R5bGVDbGFzcyhjc3NDbGFzcyk7CisgICAg
ICAgICAgICBsaW5lUm93LmFwcGVuZENoaWxkKGhpZ2hsaWdodCk7CisKKyAgICAgICAgICAgIGhp
Z2hsaWdodC5zdHlsZS5tYXJnaW5MZWZ0ID0gKG1ldHJpY3NbaV0ubGVmdCAtIGhpZ2hsaWdodC5v
ZmZzZXRMZWZ0IC0gZXh0cmFXaWR0aCkgKyAicHgiOworICAgICAgICAgICAgaGlnaGxpZ2h0LnN0
eWxlLndpZHRoID0gKG1ldHJpY3NbaV0ud2lkdGggKyBleHRyYVdpZHRoICogMikgKyAicHgiOwor
ICAgICAgICAgICAgaGlnaGxpZ2h0LnN0eWxlLmhlaWdodCA9IG1ldHJpY3NbaV0uaGVpZ2h0ICsg
InB4IjsKKyAgICAgICAgICAgIGhpZ2hsaWdodC5hZGRTdHlsZUNsYXNzKCJ0ZXh0LWVkaXRvci1v
dmVybGF5LWhpZ2hsaWdodCIpOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgogICAgICAq
IEBwYXJhbSB7RWxlbWVudH0gbGluZVJvdwogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsaW5lCiAg
ICAgICogQHBhcmFtIHtBcnJheS48e3N0YXJ0Q29sdW1uOiBudW1iZXIsIGVuZENvbHVtbjogbnVt
YmVyLCBjc3NDbGFzczogc3RyaW5nfT59IHJhbmdlcwpAQCAtMTkyNSw4ICsyMDQ5LDIwIEBAIFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgICAgIHZhciBsaW5lID0gdGhpcy5fdGV4dE1vZGVsLmxp
bmUobGluZU51bWJlcik7CisKKyAgICAgICAgICAgIHZhciBtZXRyaWNzID0gW107CisgICAgICAg
ICAgICB2YXIgY3NzQ2xhc3NlcyA9IFtdOworICAgICAgICAgICAgZm9yKHZhciBrZXkgaW4gdGhp
cy5faGlnaGxpZ2h0UmVnZXhzKSB7CisgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5f
aGlnaGxpZ2h0UmVnZXhzW2tleV07CisgICAgICAgICAgICAgICAgbWV0cmljcy5wdXNoKHRoaXMu
X21lYXN1cmVSZWdleChsaW5lUm93LCBsaW5lLCB2YWx1ZS5yZWdleCkpOworICAgICAgICAgICAg
ICAgIGNzc0NsYXNzZXMucHVzaCh2YWx1ZS5jc3NDbGFzcyk7CisgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgIHZhciByYW5nZXMgPSB0aGlzLl9oaWdobGlnaHRlci5vcmRlcmVkUmFuZ2VzUGVy
TGluZShsaW5lTnVtYmVyKTsKICAgICAgICAgICAgIHRoaXMuX3JlbmRlclJhbmdlcyhsaW5lUm93
LCBsaW5lLCByYW5nZXMpOworCisgICAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgbWV0cmlj
cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRPdmVybGF5SGlnaGxp
Z2h0KGxpbmVSb3csIG1ldHJpY3NbaV0sIGNzc0NsYXNzZXNbaV0pOwogICAgICAgICB9IGZpbmFs
bHkgewogICAgICAgICAgICAgaWYgKHRoaXMuX3JhbmdlVG9NYXJrICYmIHRoaXMuX3JhbmdlVG9N
YXJrLnN0YXJ0TGluZSA9PT0gbGluZU51bWJlcikKICAgICAgICAgICAgICAgICB0aGlzLl9tYXJr
ZWRSYW5nZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuaGlnaGxpZ2h0U2VhcmNoUmVzdWx0KGxpbmVS
b3csIHRoaXMuX3JhbmdlVG9NYXJrLnN0YXJ0Q29sdW1uLCB0aGlzLl9yYW5nZVRvTWFyay5lbmRD
b2x1bW4gLSB0aGlzLl9yYW5nZVRvTWFyay5zdGFydENvbHVtbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRFZGl0b3IuanMKaW5kZXggYzQ0OTQzODVkMDhk
ZjU5N2YzMTgyN2I3YmQ4ODZkM2Q0ODRhYTJhYy4uZGRiNDk3MjMxMzY5NzAzOTczMWI2NWJmNDFl
NjllYWJiYmE4NjFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGV4dEVkaXRvci5qcwpAQCAtNjEsNiArNjEsMTggQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3IucHJvdG90eXBlID0gewogICAgIGRlZmF1bHRGb2N1c2VkRWxlbWVudDogZnVuY3Rpb24oKSB7
IH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXgKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gY3NzQ2xhc3MKKyAgICAgKi8KKyAgICBoaWdobGlnaHRSZWdleDogZnVuY3Rp
b24ocmVnZXgsIGNzc0NsYXNzKSB7IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1JlZ0V4
cH0gcmVnZXgKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIHJlbW92ZVJl
Z2V4SGlnaGxpZ2h0OiBmdW5jdGlvbihyZWdleCkgeyB9LAorCisgICAgLyoqCiAgICAgICogQHBh
cmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKICAgICAgKi8KICAgICByZXZlYWxMaW5lOiBmdW5jdGlv
bihsaW5lTnVtYmVyKSB7IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL3RleHRFZGl0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC90ZXh0RWRpdG9yLmNzcwppbmRleCAyYTI1NjJiODM2NGMyMmUyNmY4NDNmNWMzYWU3MDlj
ZTY4OGZkODA4Li42OTQwNzFiZDExZmVjZjY3YzI2YjFlOWI1MjczZDVjNjQ4Njc1MjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RleHRFZGl0b3IuY3Nz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dEVkaXRvci5jc3MK
QEAgLTMwLDYgKzMwLDEzIEBACiAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dDsKIH0KIAor
LnRleHQtZWRpdG9yLW92ZXJsYXktaGlnaGxpZ2h0IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9u
ZTsKKyAgICB6LWluZGV4OiAtMTsKK30KKwogLnRleHQtZWRpdG9yLWNvbnRlbnRzIC5pbm5lci1j
b250YWluZXIgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0b3A6IDA7CkBAIC0xODMs
NiArMTkwLDcgQEAKIC5kZWJ1Zy1mYWRlb3V0IHsKICAgICAtd2Via2l0LWFuaW1hdGlvbjogImRl
YnVnLWZhZGVvdXQiIDFzIDBzOwogICAgIGJvcmRlcjogMXB4IHNvbGlkIHdoaXRlOworICAgIG1h
cmdpbjogLTFweDsKIH0KIAogQC13ZWJraXQta2V5ZnJhbWVzIGRlYnVnLWZhZGVvdXQgewpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGZiNDg2YTNjZTJlNzlhNDUyYTc5ZjUxZTFjNTRiMTcwMTQ0MGY5ZjMuLjkwMDBhMjBhOGY4
MzlkZGY4NjZjN2EyYWIxZThmNzJmNWQ2MTE5YTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
My0wMS0xNSAgQW5kcmV5IEx1c2huaWtvdiAgPGx1c2huaWtvdkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogaGlnaGxpZ2h0IHJlZ2V4cCBBUEkgZm9yIERlZmF1bHRUZXh0
RWRpdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDY4MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
ZXcgbGF5b3V0IHRlc3QgdG8gdmVyaWZ5IERlZmF1bHRUZXh0RWRpdG9yIGhpZ2hsaWdodCByZWdl
eHAgQVBJLgorCisgICAgICAgICogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1oaWdobGln
aHQtcmVnZXhwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2VkaXRv
ci90ZXh0LWVkaXRvci1oaWdobGlnaHQtcmVnZXhwLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTE1
ICBUYWIgQXRraW5zICA8amFja2FsbWFnZUBnbWFpbC5jb20+CiAKICAgICAgICAgVXBkYXRlIENT
UzMgZ3JhZGllbnQgc3VwcG9ydCB0byB0aGUgbGF0ZXN0IHNwZWMgdmVyc2lvbgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1oaWdobGlnaHQtcmVn
ZXhwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0
b3ItaGlnaGxpZ2h0LXJlZ2V4cC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM3ZDljYWM3Yjc1
MTgwOWJkYzQ4NGMwYTBmYmJmYTM3ZTZkNzM1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItaGlnaGxpZ2h0LXJlZ2V4cC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzNSBAQAorVGVzdCBlZGl0b3IgaGlnaGxpZ2h0IHJlZ2V4cCBBUEku
CisKKworUnVubmluZzogdGVzdEhpZ2hsaWdodEFwaQorCitCZWZvcmUgaGlnaGxpZ2h0CisKKzxk
aXYgY2xhc3M9ImlubmVyLWNvbnRhaW5lciIgdGFiaW5kZXg9IjAiPgorPGRpdiBjbGFzcz0id2Vi
a2l0LWxpbmUtY29udGVudCI+Zm9vKCk7PC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1j
b250ZW50Ij5mb29fMTsgZm9vcjsgZm9vXzs8L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5l
LWNvbnRlbnQiPmZvb188L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmds
b2JhbF9mb288L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmdsb2JhbF9m
b28yPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5zb21lX290aGVyX2Zv
b19YPC9kaXY+PC9kaXY+CisKK0FkZCBoaWdobGlnaHQgZm9yIHJlZ2V4cCAvZm9vXy4vCisKKzxk
aXYgY2xhc3M9ImlubmVyLWNvbnRhaW5lciIgdGFiaW5kZXg9IjAiPgorPGRpdiBjbGFzcz0id2Vi
a2l0LWxpbmUtY29udGVudCI+Zm9vKCk7PC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1j
b250ZW50Ij5mb29fMTsgZm9vcjsgZm9vXzs8c3BhbiBjbGFzcz0ic29tZS1jc3MtY2xhc3MgdGV4
dC1lZGl0b3Itb3ZlcmxheS1oaWdobGlnaHQiIHN0eWxlPSJtYXJnaW4tbGVmdDogLTEyN3B4OyB3
aWR0aDogMzdweDsgaGVpZ2h0OiAxNHB4OyI+PC9zcGFuPjxzcGFuIGNsYXNzPSJzb21lLWNzcy1j
bGFzcyB0ZXh0LWVkaXRvci1vdmVybGF5LWhpZ2hsaWdodCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAt
MzZweDsgd2lkdGg6IDM3cHg7IGhlaWdodDogMTRweDsiPjwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xh
c3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmZvb188L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1s
aW5lLWNvbnRlbnQiPmdsb2JhbF9mb288L2Rpdj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNv
bnRlbnQiPmdsb2JhbF9mb28yPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50
Ij5zb21lX290aGVyX2Zvb19YPHNwYW4gY2xhc3M9InNvbWUtY3NzLWNsYXNzIHRleHQtZWRpdG9y
LW92ZXJsYXktaGlnaGxpZ2h0IiBzdHlsZT0ibWFyZ2luLWxlZnQ6IC0zNnB4OyB3aWR0aDogMzdw
eDsgaGVpZ2h0OiAxNHB4OyI+PC9zcGFuPjwvZGl2PjwvZGl2PgorCitSZW1vdmUgaGlnaGxpZ2h0
IGZvciByZWdleHAgL2Zvb18uLworCis8ZGl2IGNsYXNzPSJpbm5lci1jb250YWluZXIiIHRhYmlu
ZGV4PSIwIj4KKzxkaXYgY2xhc3M9IndlYmtpdC1saW5lLWNvbnRlbnQiPmZvbygpOzwvZGl2Pgor
PGRpdiBjbGFzcz0id2Via2l0LWxpbmUtY29udGVudCI+Zm9vXzE7IGZvb3I7IGZvb187PC9kaXY+
Cis8ZGl2IGNsYXNzPSJ3ZWJraXQtbGluZS1jb250ZW50Ij5mb29fPC9kaXY+Cis8ZGl2IGNsYXNz
PSJ3ZWJraXQtbGluZS1jb250ZW50Ij5nbG9iYWxfZm9vPC9kaXY+Cis8ZGl2IGNsYXNzPSJ3ZWJr
aXQtbGluZS1jb250ZW50Ij5nbG9iYWxfZm9vMjwvZGl2PgorPGRpdiBjbGFzcz0id2Via2l0LWxp
bmUtY29udGVudCI+c29tZV9vdGhlcl9mb29fWDwvZGl2PjwvZGl2PgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdleHAu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItaGlnaGxpZ2h0
LXJlZ2V4cC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0YzA3MjA5YTVkZGMwZDA3YzRmZWIyMzM1ZjZkMTgx
NzkxODYyYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9y
L3RleHQtZWRpdG9yLWhpZ2hsaWdodC1yZWdleHAuaHRtbApAQCAtMCwwICsxLDQzIEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJlZGl0b3ItdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0
LnJ1blRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RIaWdobGlnaHRBcGkobmV4dCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHRleHQgPSBbCisgICAgICAgICAgICAgICAgImZv
bygpOyIsCisgICAgICAgICAgICAgICAgImZvb18xOyBmb29yOyBmb29fOyIsCisgICAgICAgICAg
ICAgICAgImZvb18iLAorICAgICAgICAgICAgICAgICJnbG9iYWxfZm9vIiwKKyAgICAgICAgICAg
ICAgICAiZ2xvYmFsX2ZvbzIiLAorICAgICAgICAgICAgICAgICJzb21lX290aGVyX2Zvb19YIgor
ICAgICAgICAgICAgXTsKKyAgICAgICAgICAgIHZhciB0ZXh0RWRpdG9yID0gSW5zcGVjdG9yVGVz
dC5jcmVhdGVUZXN0RWRpdG9yKCk7CisgICAgICAgICAgICB0ZXh0RWRpdG9yLnNldFRleHQodGV4
dC5qb2luKCJcbiIpKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJcbkJl
Zm9yZSBoaWdobGlnaHQiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHRl
eHRFZGl0b3IuX21haW5QYW5lbC5lbGVtZW50LmlubmVySFRNTC5yZXBsYWNlKC88ZGl2L2csICJc
bjxkaXYiKSk7CisgICAgICAgICAgICB0ZXh0RWRpdG9yLmhpZ2hsaWdodFJlZ2V4KC9mb29fLi8s
ICJzb21lLWNzcy1jbGFzcyIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IlxuQWRkIGhpZ2hsaWdodCBmb3IgcmVnZXhwIC9mb29fLi8iKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KHRleHRFZGl0b3IuX21haW5QYW5lbC5lbGVtZW50LmlubmVySFRN
TC5yZXBsYWNlKC88ZGl2L2csICJcbjxkaXYiKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiXG5SZW1vdmUgaGlnaGxpZ2h0IGZvciByZWdleHAgL2Zvb18uLyIpOworICAg
ICAgICAgICAgdGV4dEVkaXRvci5yZW1vdmVSZWdleEhpZ2hsaWdodCgvZm9vXy4vKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHRleHRFZGl0b3IuX21haW5QYW5lbC5lbGVt
ZW50LmlubmVySFRNTC5yZXBsYWNlKC88ZGl2L2csICJcbjxkaXYiKSk7CisgICAgICAgICAgICBu
ZXh0KCk7CisgICAgICAgIH0sCisgICAgXSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3QgZWRpdG9yIGhpZ2hsaWdodCByZWdl
eHAgQVBJLgorPC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>