<?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>73626</bug_id>
          
          <creation_ts>2011-12-01 22:57:44 -0800</creation_ts>
          <short_desc>Web Inspector: [Audits] Implement &quot;Stop&quot; button and progress bar instead of spinner.</short_desc>
          <delta_ts>2011-12-06 02:05:24 -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="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>513530</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-01 22:57:44 -0800</bug_when>
    <thetext>Patch to follow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513751</commentid>
    <comment_count>1</comment_count>
      <attachid>117620</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-02 07:48:34 -0800</bug_when>
    <thetext>Created attachment 117620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513758</commentid>
    <comment_count>2</comment_count>
      <attachid>117622</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-02 07:53:42 -0800</bug_when>
    <thetext>Created attachment 117622
[PATCH] Added localized string &quot;Stop&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514452</commentid>
    <comment_count>3</comment_count>
      <attachid>117622</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-03 00:50:15 -0800</bug_when>
    <thetext>Comment on attachment 117622
[PATCH] Added localized string &quot;Stop&quot;

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

&gt; Source/WebCore/inspector/front-end/AuditLauncherView.js:137
&gt; +            this._stopRequested = true;

I don&apos;t see the audit rule code that is querying for stopRequested prior to continuing execution. &quot;Cancel&quot; is usually implemented as a part of the progress indicator API:

// some rule body example:

progress.setTotalWork(Object.keys(nodes).length);

for (node in nodes) {
    if (progress.isCanceled())
        return;
    progress.worked(1);
    // process node.
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514496</commentid>
    <comment_count>4</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-03 07:07:06 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 117622 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117622&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/AuditLauncherView.js:137
&gt; &gt; +            this._stopRequested = true;
&gt; 
&gt; I don&apos;t see the audit rule code that is querying for stopRequested prior to continuing execution. &quot;Cancel&quot; is usually implemented as a part of the progress indicator API:
&gt; 
&gt; // some rule body example:
&gt; 
&gt; progress.setTotalWork(Object.keys(nodes).length);
&gt; 
&gt; for (node in nodes) {
&gt;     if (progress.isCanceled())
&gt;         return;
&gt;     progress.worked(1);
&gt;     // process node.
&gt; }

Do you hope an HTML UI element has a full-fledged progress monitor API? No, it only has the &quot;max&quot; and &quot;value&quot; attributes. Without them, it becomes an indeterminate progress bar (which is what this CL uses). We also use it to track the progress of the entire audit run, including resource loading (for which it is impossible to measure the max value initially.) Do you want me to implement a progress monitor using this control somehow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514698</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-04 08:59:24 -0800</bug_when>
    <thetext>&gt; Do you hope an HTML UI element has a full-fledged progress monitor API? No, it only has the &quot;max&quot; and &quot;value&quot; attributes. Without them, it becomes an indeterminate progress bar (which is what this CL uses). We also use it to track the progress of the entire audit run, including resource loading (for which it is impossible to measure the max value initially.) Do you want me to implement a progress monitor using this control somehow?

Not at all. I was talking about the control flow, not the UI. The point was that progress indicator API is ideal both for progress reporting as well as termination. You should pass progress into all rules, implement isCanceled() and do early returns in case it returns &quot;true&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514820</commentid>
    <comment_count>6</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-04 18:33:22 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Do you hope an HTML UI element has a full-fledged progress monitor API? No, it only has the &quot;max&quot; and &quot;value&quot; attributes. Without them, it becomes an indeterminate progress bar (which is what this CL uses). We also use it to track the progress of the entire audit run, including resource loading (for which it is impossible to measure the max value initially.) Do you want me to implement a progress monitor using this control somehow?
&gt; 
&gt; Not at all. I was talking about the control flow, not the UI. The point was that progress indicator API is ideal both for progress reporting as well as termination. You should pass progress into all rules, implement isCanceled() and do early returns in case it returns &quot;true&quot;.

Oh, that makes perfect sense, can even try implementing a determinate progress at the audit execution stage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515031</commentid>
    <comment_count>7</comment_count>
      <attachid>117866</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-05 04:37:24 -0800</bug_when>
    <thetext>Created attachment 117866
[PATCH] Comment addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515045</commentid>
    <comment_count>8</comment_count>
      <attachid>117866</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-05 06:24:41 -0800</bug_when>
    <thetext>Comment on attachment 117866
[PATCH] Comment addressed

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

New failing tests:
svg/custom/linking-uri-01-b.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515721</commentid>
    <comment_count>9</comment_count>
      <attachid>117866</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-12-06 01:05:14 -0800</bug_when>
    <thetext>Comment on attachment 117866
[PATCH] Comment addressed

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

&gt; Source/WebCore/inspector/front-end/AuditLauncherView.js:128
&gt; +            var childNodes = this._categoriesElement.childNodes;

Remove this line, childNodes is unused.

&gt; Source/WebCore/inspector/front-end/AuditsPanel.js:506
&gt; +        if (this.canceled || this.indeterminate || this.isDone())

Be consistent in naming either isCanceled or done().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515739</commentid>
    <comment_count>10</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-06 02:03:23 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 117866 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117866&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/AuditLauncherView.js:128
&gt; &gt; +            var childNodes = this._categoriesElement.childNodes;
&gt; 
&gt; Remove this line, childNodes is unused.

Done

&gt; &gt; Source/WebCore/inspector/front-end/AuditsPanel.js:506
&gt; &gt; +        if (this.canceled || this.indeterminate || this.isDone())
&gt; 
&gt; Be consistent in naming either isCanceled or done().

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515741</commentid>
    <comment_count>11</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-06 02:05:24 -0800</bug_when>
    <thetext>Committed r102109: &lt;http://trac.webkit.org/changeset/102109&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117620</attachid>
            <date>2011-12-02 07:48:34 -0800</date>
            <delta_ts>2011-12-02 07:53:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73626-20111202194832.patch</filename>
            <type>text/plain</type>
            <size>8891</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UxYTdlYzNlZTczZWMx
MzRjZDY2YzNkNDE5ZjFiMmUzYjUxNjY3ZC4uN2Y2ZjlhNDM1MTE4MTZmNjBkOTE1YjI2MzVlNWVm
NjMxM2VmNzc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTEyLTAyICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW0F1ZGl0c10gSW1wbGVtZW50ICJTdG9wIiBidXR0b24gYW5kIHByb2dyZXNzIGJhciBp
bnN0ZWFkIG9mIHNwaW5uZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MzYyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlLl9zZXRBdWRpdFJ1bm5pbmcpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5fbGF1bmNoQnV0
dG9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJv
dG90eXBlLl9jcmVhdGVMYXVuY2hlclVJKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdExh
dW5jaGVyVmlldy5wcm90b3R5cGUuX3VwZGF0ZVJlc291cmNlUHJvZ3Jlc3MpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5fdXBkYXRlQnV0dG9uKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNQ
YW5lbC5wcm90b3R5cGUuX2V4ZWN1dGVBdWRpdC5ydWxlUmVzdWx0UmVhZHlDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlLl9leGVjdXRlQXVkaXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZS5fYXVkaXRGaW5p
c2hlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5
cGUudGVybWluYXRlQXVkaXQudGVybWluYXRlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZS50ZXJtaW5hdGVBdWRpdCk6CisKIDIwMTEtMTItMDIg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDE3ODMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcwppbmRleCA0YjEwYjQ2
MjM1ZDQxYmI5OTg3YzkyYTAxMWEzMWYxYmQzNjlmMzgwLi5mNjkzMTRlYWRjYWExMWE0Y2M1OTFm
NWU3Y2I3ODYyZjkzOTQxMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanMKQEAgLTMyLDEwICszMiwxMSBAQAog
ICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9CiAgKi8KLVdl
Ykluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyA9IGZ1bmN0aW9uKHJ1bm5lckNhbGxiYWNrKQor
V2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3ID0gZnVuY3Rpb24ocnVubmVyQ2FsbGJhY2ss
IHN0b3BDYWxsYmFjaykKIHsKICAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwogICAg
IHRoaXMuX3J1bm5lckNhbGxiYWNrID0gcnVubmVyQ2FsbGJhY2s7CisgICAgdGhpcy5fc3RvcENh
bGxiYWNrID0gc3RvcENhbGxiYWNrOwogICAgIHRoaXMuX2NhdGVnb3J5SWRQcmVmaXggPSAiYXVk
aXQtY2F0ZWdvcnktaXRlbS0iOwogICAgIHRoaXMuX2F1ZGl0UnVubmluZyA9IGZhbHNlOwogCkBA
IC0xMTUsMjEgKzExNiwyOCBAQCBXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90
eXBlID0gewogICAgICAgICBpZiAodGhpcy5fYXVkaXRSdW5uaW5nID09PSBhdWRpdFJ1bm5pbmcp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX2F1ZGl0UnVubmluZyA9IGF1ZGl0
UnVubmluZzsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3N0b3BSZXF1ZXN0ZWQ7CiAgICAgICAgIHRo
aXMuX3VwZGF0ZUJ1dHRvbigpOwogICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZVByb2dyZXNz
KCk7CiAgICAgfSwKIAogICAgIF9sYXVuY2hCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkK
ICAgICB7Ci0gICAgICAgIHZhciBjYXRJZHMgPSBbXTsKLSAgICAgICAgdmFyIGNoaWxkTm9kZXMg
PSB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5jaGlsZE5vZGVzOwotICAgICAgICBmb3IgKHZhciBj
YXRlZ29yeSA9IDA7IGNhdGVnb3J5IDwgdGhpcy5fc29ydGVkQ2F0ZWdvcmllcy5sZW5ndGg7ICsr
Y2F0ZWdvcnkpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9zb3J0ZWRDYXRlZ29yaWVzW2NhdGVn
b3J5XS5fY2hlY2tib3hFbGVtZW50LmNoZWNrZWQpCi0gICAgICAgICAgICAgICAgY2F0SWRzLnB1
c2godGhpcy5fc29ydGVkQ2F0ZWdvcmllc1tjYXRlZ29yeV0uaWQpOworICAgICAgICBpZiAoIXRo
aXMuX2F1ZGl0UnVubmluZykgeworICAgICAgICAgICAgdmFyIGNhdElkcyA9IFtdOworICAgICAg
ICAgICAgdmFyIGNoaWxkTm9kZXMgPSB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5jaGlsZE5vZGVz
OworICAgICAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgPSAwOyBjYXRlZ29yeSA8IHRoaXMuX3Nv
cnRlZENhdGVnb3JpZXMubGVuZ3RoOyArK2NhdGVnb3J5KSB7CisgICAgICAgICAgICAgICAgaWYg
KHRoaXMuX3NvcnRlZENhdGVnb3JpZXNbY2F0ZWdvcnldLl9jaGVja2JveEVsZW1lbnQuY2hlY2tl
ZCkKKyAgICAgICAgICAgICAgICAgICAgY2F0SWRzLnB1c2godGhpcy5fc29ydGVkQ2F0ZWdvcmll
c1tjYXRlZ29yeV0uaWQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9zZXRB
dWRpdFJ1bm5pbmcodHJ1ZSk7CisgICAgICAgICAgICB0aGlzLl9ydW5uZXJDYWxsYmFjayhjYXRJ
ZHMsIHRoaXMuX2F1ZGl0UHJlc2VudFN0YXRlRWxlbWVudC5jaGVja2VkLCB0aGlzLl9zZXRBdWRp
dFJ1bm5pbmcuYmluZCh0aGlzLCBmYWxzZSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgdGhpcy5fc3RvcFJlcXVlc3RlZCA9IHRydWU7CisgICAgICAgICAgICB0aGlzLl9zdG9wQ2Fs
bGJhY2sodGhpcy5fc2V0QXVkaXRSdW5uaW5nLmJpbmQodGhpcywgZmFsc2UpKTsKKyAgICAgICAg
ICAgIHRoaXMuX3VwZGF0ZUJ1dHRvbigpOwogICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fc2V0
QXVkaXRSdW5uaW5nKHRydWUpOwotICAgICAgICB0aGlzLl9ydW5uZXJDYWxsYmFjayhjYXRJZHMs
IHRoaXMuX2F1ZGl0UHJlc2VudFN0YXRlRWxlbWVudC5jaGVja2VkLCB0aGlzLl9zZXRBdWRpdFJ1
bm5pbmcuYmluZCh0aGlzLCBmYWxzZSkpOwogICAgIH0sCiAKICAgICBfc2VsZWN0QWxsQ2xpY2tl
ZDogZnVuY3Rpb24oY2hlY2tDYXRlZ29yaWVzKQpAQCAtMjIzLDggKzIzMSw5IEBAIFdlYkluc3Bl
Y3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fcmVz
b3VyY2VQcm9ncmVzc0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
ICAgICAgICAgdGhpcy5fcmVzb3VyY2VQcm9ncmVzc0NvbnRhaW5lci5jbGFzc05hbWUgPSAicmVz
b3VyY2UtcHJvZ3Jlc3MiOwotICAgICAgICB2YXIgcmVzb3VyY2VQcm9ncmVzc0ltYWdlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlUHJvZ3Jl
c3NDb250YWluZXIuYXBwZW5kQ2hpbGQocmVzb3VyY2VQcm9ncmVzc0ltYWdlKTsKKyAgICAgICAg
dmFyIHJlc291cmNlUHJvZ3Jlc3NFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicHJv
Z3Jlc3MiKTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VQcm9ncmVzc0NvbnRhaW5lci5hcHBlbmRD
aGlsZChyZXNvdXJjZVByb2dyZXNzRWxlbWVudCk7CisgICAgICAgIHRoaXMuX3Jlc291cmNlUHJv
Z3Jlc3NDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiKSk7
CiAgICAgICAgIHRoaXMuX3Jlc291cmNlUHJvZ3Jlc3NUZXh0RWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgdGhpcy5fcmVzb3VyY2VQcm9ncmVzc0NvbnRh
aW5lci5hcHBlbmRDaGlsZCh0aGlzLl9yZXNvdXJjZVByb2dyZXNzVGV4dEVsZW1lbnQpOwogICAg
ICAgICB0aGlzLl9idXR0b25Db250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Jlc291
cmNlUHJvZ3Jlc3NDb250YWluZXIpOwpAQCAtMjQxLDE3ICsyNTAsMjEgQEAgV2ViSW5zcGVjdG9y
LkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXNv
dXJjZVByb2dyZXNzQ29udGFpbmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlm
ICghdGhpcy5fYXVkaXRSdW5uaW5nKSB7CisgICAgICAgIGlmICghdGhpcy5fYXVkaXRSdW5uaW5n
IHx8IHRoaXMuX3N0b3BSZXF1ZXN0ZWQpIHsKICAgICAgICAgICAgIHRoaXMuX3Jlc2V0UmVzb3Vy
Y2VDb3VudCgpOwogICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VQcm9ncmVzc0NvbnRhaW5lci5h
ZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlz
Ll9yZXNvdXJjZVByb2dyZXNzQ29udGFpbmVyLnJlbW92ZVN0eWxlQ2xhc3MoImhpZGRlbiIpOwot
ICAgICAgICB0aGlzLl9yZXNvdXJjZVByb2dyZXNzVGV4dEVsZW1lbnQudGV4dENvbnRlbnQgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvYWRpbmcgKCVkIG9mICVkKSIsIHRoaXMuX2xvYWRlZFJl
c291cmNlcywgdGhpcy5fdG90YWxSZXNvdXJjZXMpOworICAgICAgICBpZiAodGhpcy5fbG9hZGVk
UmVzb3VyY2VzKQorICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VQcm9ncmVzc1RleHRFbGVtZW50
LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2FkaW5nICglZCBvZiAlZCki
LCB0aGlzLl9sb2FkZWRSZXNvdXJjZXMsIHRoaXMuX3RvdGFsUmVzb3VyY2VzKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VQcm9ncmVzc1RleHRFbGVtZW50LnRleHRD
b250ZW50ID0gIiI7CiAgICAgfSwKIAogICAgIF91cGRhdGVCdXR0b246IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX2xhdW5jaEJ1dHRvbi5kaXNhYmxlZCA9ICF0aGlzLl9jdXJyZW50
Q2F0ZWdvcmllc0NvdW50IHx8IHRoaXMuX2F1ZGl0UnVubmluZzsKKyAgICAgICAgdGhpcy5fbGF1
bmNoQnV0dG9uLnRleHRDb250ZW50ID0gdGhpcy5fYXVkaXRSdW5uaW5nID8gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTdG9wIikgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJ1biIpOworICAgICAg
ICB0aGlzLl9sYXVuY2hCdXR0b24uZGlzYWJsZWQgPSAhdGhpcy5fY3VycmVudENhdGVnb3JpZXND
b3VudCB8fCAodGhpcy5fYXVkaXRSdW5uaW5nICYmIHRoaXMuX3N0b3BSZXF1ZXN0ZWQpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRz
UGFuZWwuanMKaW5kZXggZGYyN2RhZjE5ODI4YjRlYjYxYjcwYjBhN2Q5NTViMGI2YjEwMDQ0Zi4u
MjJkZmNlOGQ2MDIyZmM1NjI5N2M2YTc4ZWM4NGJlODMwMDVhODNkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCkBAIC01Nyw3ICs1
Nyw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbCA9IGZ1bmN0aW9uKCkKIAogICAgIHRoaXMu
X2NvbnN0cnVjdENhdGVnb3JpZXMoKTsKIAotICAgIHRoaXMuX2xhdW5jaGVyVmlldyA9IG5ldyBX
ZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcodGhpcy5pbml0aWF0ZUF1ZGl0LmJpbmQodGhp
cykpOworICAgIHRoaXMuX2xhdW5jaGVyVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRMYXVu
Y2hlclZpZXcodGhpcy5pbml0aWF0ZUF1ZGl0LmJpbmQodGhpcyksIHRoaXMudGVybWluYXRlQXVk
aXQuYmluZCh0aGlzKSk7CiAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy5jYXRlZ29yaWVzQnlJZCkK
ICAgICAgICAgdGhpcy5fbGF1bmNoZXJWaWV3LmFkZENhdGVnb3J5KHRoaXMuY2F0ZWdvcmllc0J5
SWRbaWRdKTsKIApAQCAtMTM2LDEyICsxMzYsMTQgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVs
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmdW5jdGlvbiBydWxlUmVzdWx0UmVhZHlDYWxsYmFj
ayhjYXRlZ29yeVJlc3VsdCwgcnVsZVJlc3VsdCkKICAgICAgICAgeworICAgICAgICAgICAgaWYg
KHRoaXMuX2F1ZGl0VGVybWluYXRlZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBpZiAocnVsZVJlc3VsdCAmJiBydWxlUmVzdWx0LmNoaWxkcmVuKQogICAgICAgICAgICAg
ICAgIGNhdGVnb3J5UmVzdWx0LmFkZFJ1bGVSZXN1bHQocnVsZVJlc3VsdCk7CiAKICAgICAgICAg
ICAgIC0tcnVsZXNSZW1haW5pbmc7CiAKLSAgICAgICAgICAgIGlmICghcnVsZXNSZW1haW5pbmcg
JiYgcmVzdWx0Q2FsbGJhY2spCisgICAgICAgICAgICBpZiAoIXJ1bGVzUmVtYWluaW5nICYmIHJl
c3VsdENhbGxiYWNrIHx8IHRoaXMuX2F1ZGl0VGVybWluYXRlZCkKICAgICAgICAgICAgICAgICBy
ZXN1bHRDYWxsYmFjayhtYWluUmVzb3VyY2VVUkwsIHJlc3VsdHMpOwogICAgICAgICB9CiAKQEAg
LTE3MCw4ICsxNzIsMTEgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdmFyIHJlc3VsdFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5BdWRpdFJl
c3VsdFNpZGViYXJUcmVlRWxlbWVudChyZXN1bHRzLCBtYWluUmVzb3VyY2VVUkwsIG9yZGluYWwp
OwogICAgICAgICB0aGlzLmF1ZGl0UmVzdWx0c1RyZWVFbGVtZW50LmFwcGVuZENoaWxkKHJlc3Vs
dFRyZWVFbGVtZW50KTsKICAgICAgICAgcmVzdWx0VHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0
KCk7Ci0gICAgICAgIGlmIChsYXVuY2hlckNhbGxiYWNrKQotICAgICAgICAgICAgbGF1bmNoZXJD
YWxsYmFjaygpOworICAgICAgICBpZiAoIXRoaXMuX2F1ZGl0VGVybWluYXRlZCB8fCAhdGhpcy5f
YXVkaXRUZXJtaW5hdGlvbkhhbmRsZWQpIHsKKyAgICAgICAgICAgIHRoaXMuX2F1ZGl0VGVybWlu
YXRpb25IYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChsYXVuY2hlckNhbGxiYWNrKQor
ICAgICAgICAgICAgICAgIGxhdW5jaGVyQ2FsbGJhY2soKTsKKyAgICAgICAgfQogICAgIH0sCiAK
ICAgICBpbml0aWF0ZUF1ZGl0OiBmdW5jdGlvbihjYXRlZ29yeUlkcywgcnVuSW1tZWRpYXRlbHks
IGxhdW5jaGVyQ2FsbGJhY2spCkBAIC0xNzksNiArMTg0LDkgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0
c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFjYXRlZ29yeUlkcyB8fCAhY2F0ZWdv
cnlJZHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGRlbGV0ZSB0aGlz
Ll9hdWRpdFRlcm1pbmF0ZWQ7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9hdWRpdFRlcm1pbmF0aW9u
SGFuZGxlZDsKKwogICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IFtdOwogICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNhdGVnb3J5SWRzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgY2F0ZWdv
cmllcy5wdXNoKHRoaXMuY2F0ZWdvcmllc0J5SWRbY2F0ZWdvcnlJZHNbaV1dKTsKQEAgLTE5Niw2
ICsyMDQsMjAgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNzLkF1ZGl0c1N0YXJ0ZWQucmVjb3JkKCk7CiAgICAg
fSwKIAorICAgIHRlcm1pbmF0ZUF1ZGl0OiBmdW5jdGlvbihsYXVuY2hlckNhbGxiYWNrKQorICAg
IHsKKyAgICAgICAgdGhpcy5fYXVkaXRUZXJtaW5hdGVkID0gdHJ1ZTsKKworICAgICAgICBmdW5j
dGlvbiB0ZXJtaW5hdGVDYWxsYmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghdGhp
cy5fYXVkaXRUZXJtaW5hdGlvbkhhbmRsZWQpCisgICAgICAgICAgICAgICAgbGF1bmNoZXJDYWxs
YmFjaygpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVybWluYXRlIHdpdGggYSAxIHNlYyB0
aW1lb3V0LgorICAgICAgICBzZXRUaW1lb3V0KHRlcm1pbmF0ZUNhbGxiYWNrLmJpbmQodGhpcyks
IDEwMDApOworICAgIH0sCisKICAgICBfcmVsb2FkUmVzb3VyY2VzOiBmdW5jdGlvbihjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIHRoaXMuX3BhZ2VSZWxvYWRDYWxsYmFjayA9IGNhbGxiYWNrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117622</attachid>
            <date>2011-12-02 07:53:42 -0800</date>
            <delta_ts>2011-12-05 04:37:15 -0800</delta_ts>
            <desc>[PATCH] Added localized string &quot;Stop&quot;</desc>
            <filename>bug-73626-20111202195340.patch</filename>
            <type>text/plain</type>
            <size>9267</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UxYTdlYzNlZTczZWMx
MzRjZDY2YzNkNDE5ZjFiMmUzYjUxNjY3ZC4uMzkyNDBlYzBkZTFjMzYzMTAyYzk4OWE3YWUyNmNj
ZmVhYjQ3YWU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTEyLTAyICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW0F1ZGl0c10gSW1wbGVtZW50ICJTdG9wIiBidXR0b24gYW5kIHByb2dyZXNzIGJhciBp
bnN0ZWFkIG9mIHNwaW5uZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MzYyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0
TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5fc2V0QXVkaXRSdW5uaW5nKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUuX2xhdW5jaEJ1dHRvbkNsaWNrZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5fY3Jl
YXRlTGF1bmNoZXJVSSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcu
cHJvdG90eXBlLl91cGRhdGVSZXNvdXJjZVByb2dyZXNzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUuX3VwZGF0ZUJ1dHRvbik6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5BdWRpdHNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90
eXBlLl9leGVjdXRlQXVkaXQucnVsZVJlc3VsdFJlYWR5Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZS5fZXhlY3V0ZUF1ZGl0KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUuX2F1ZGl0RmluaXNoZWRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlLnRlcm1pbmF0
ZUF1ZGl0LnRlcm1pbmF0ZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNQ
YW5lbC5wcm90b3R5cGUudGVybWluYXRlQXVkaXQpOgorCiAyMDExLTEyLTAyICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTAxNzgzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5s
cHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9s
b2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IGI4N2E0NzY0Y2QyNjI5ODNiNTAwZjA1MjA4Y2JjNzJl
NmFkNmE4YmQuLmZlOWU0OTFhM2NkNjBiMGU2MmM4NzY0YTQ0MWVlOTNjNjc0M2I4YTQgMTAwNjQ0
CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgMjYKa2NtVisjME9rTD50XnxPdTFoOHRRbFlwZlpsTjlN
SGxrbEpmdnUzNSNhalFyVDQqJm9GCgpkZWx0YSAxNApXY21ab3omJDRTQiVaOTlfbj5RQElQelY0
dWtfVl4mCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdExhdW5jaGVyVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
QXVkaXRMYXVuY2hlclZpZXcuanMKaW5kZXggNGIxMGI0NjIzNWQ0MWJiOTk4N2M5MmEwMTFhMzFm
MWJkMzY5ZjM4MC4uZjY5MzE0ZWFkY2FhMTFhNGNjNTkxZjVlN2NiNzg2MmY5Mzk0MTAwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVy
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1
bmNoZXJWaWV3LmpzCkBAIC0zMiwxMCArMzIsMTEgQEAKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4
dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQogICovCi1XZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hl
clZpZXcgPSBmdW5jdGlvbihydW5uZXJDYWxsYmFjaykKK1dlYkluc3BlY3Rvci5BdWRpdExhdW5j
aGVyVmlldyA9IGZ1bmN0aW9uKHJ1bm5lckNhbGxiYWNrLCBzdG9wQ2FsbGJhY2spCiB7CiAgICAg
V2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzKTsKICAgICB0aGlzLl9ydW5uZXJDYWxsYmFjayA9
IHJ1bm5lckNhbGxiYWNrOworICAgIHRoaXMuX3N0b3BDYWxsYmFjayA9IHN0b3BDYWxsYmFjazsK
ICAgICB0aGlzLl9jYXRlZ29yeUlkUHJlZml4ID0gImF1ZGl0LWNhdGVnb3J5LWl0ZW0tIjsKICAg
ICB0aGlzLl9hdWRpdFJ1bm5pbmcgPSBmYWxzZTsKIApAQCAtMTE1LDIxICsxMTYsMjggQEAgV2Vi
SW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRo
aXMuX2F1ZGl0UnVubmluZyA9PT0gYXVkaXRSdW5uaW5nKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB0aGlzLl9hdWRpdFJ1bm5pbmcgPSBhdWRpdFJ1bm5pbmc7CisgICAgICAgIGRlbGV0
ZSB0aGlzLl9zdG9wUmVxdWVzdGVkOwogICAgICAgICB0aGlzLl91cGRhdGVCdXR0b24oKTsKICAg
ICAgICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VQcm9ncmVzcygpOwogICAgIH0sCiAKICAgICBfbGF1
bmNoQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgY2F0
SWRzID0gW107Ci0gICAgICAgIHZhciBjaGlsZE5vZGVzID0gdGhpcy5fY2F0ZWdvcmllc0VsZW1l
bnQuY2hpbGROb2RlczsKLSAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgPSAwOyBjYXRlZ29yeSA8
IHRoaXMuX3NvcnRlZENhdGVnb3JpZXMubGVuZ3RoOyArK2NhdGVnb3J5KSB7Ci0gICAgICAgICAg
ICBpZiAodGhpcy5fc29ydGVkQ2F0ZWdvcmllc1tjYXRlZ29yeV0uX2NoZWNrYm94RWxlbWVudC5j
aGVja2VkKQotICAgICAgICAgICAgICAgIGNhdElkcy5wdXNoKHRoaXMuX3NvcnRlZENhdGVnb3Jp
ZXNbY2F0ZWdvcnldLmlkKTsKKyAgICAgICAgaWYgKCF0aGlzLl9hdWRpdFJ1bm5pbmcpIHsKKyAg
ICAgICAgICAgIHZhciBjYXRJZHMgPSBbXTsKKyAgICAgICAgICAgIHZhciBjaGlsZE5vZGVzID0g
dGhpcy5fY2F0ZWdvcmllc0VsZW1lbnQuY2hpbGROb2RlczsKKyAgICAgICAgICAgIGZvciAodmFy
IGNhdGVnb3J5ID0gMDsgY2F0ZWdvcnkgPCB0aGlzLl9zb3J0ZWRDYXRlZ29yaWVzLmxlbmd0aDsg
KytjYXRlZ29yeSkgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zb3J0ZWRDYXRlZ29yaWVz
W2NhdGVnb3J5XS5fY2hlY2tib3hFbGVtZW50LmNoZWNrZWQpCisgICAgICAgICAgICAgICAgICAg
IGNhdElkcy5wdXNoKHRoaXMuX3NvcnRlZENhdGVnb3JpZXNbY2F0ZWdvcnldLmlkKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5fc2V0QXVkaXRSdW5uaW5nKHRydWUpOworICAg
ICAgICAgICAgdGhpcy5fcnVubmVyQ2FsbGJhY2soY2F0SWRzLCB0aGlzLl9hdWRpdFByZXNlbnRT
dGF0ZUVsZW1lbnQuY2hlY2tlZCwgdGhpcy5fc2V0QXVkaXRSdW5uaW5nLmJpbmQodGhpcywgZmFs
c2UpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX3N0b3BSZXF1ZXN0ZWQg
PSB0cnVlOworICAgICAgICAgICAgdGhpcy5fc3RvcENhbGxiYWNrKHRoaXMuX3NldEF1ZGl0UnVu
bmluZy5iaW5kKHRoaXMsIGZhbHNlKSk7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVCdXR0b24o
KTsKICAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX3NldEF1ZGl0UnVubmluZyh0cnVlKTsKLSAg
ICAgICAgdGhpcy5fcnVubmVyQ2FsbGJhY2soY2F0SWRzLCB0aGlzLl9hdWRpdFByZXNlbnRTdGF0
ZUVsZW1lbnQuY2hlY2tlZCwgdGhpcy5fc2V0QXVkaXRSdW5uaW5nLmJpbmQodGhpcywgZmFsc2Up
KTsKICAgICB9LAogCiAgICAgX3NlbGVjdEFsbENsaWNrZWQ6IGZ1bmN0aW9uKGNoZWNrQ2F0ZWdv
cmllcykKQEAgLTIyMyw4ICsyMzEsOSBAQCBXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcu
cHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3Jlc291cmNlUHJvZ3Jlc3NDb250YWluZXIg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIHRoaXMuX3Jlc291cmNl
UHJvZ3Jlc3NDb250YWluZXIuY2xhc3NOYW1lID0gInJlc291cmNlLXByb2dyZXNzIjsKLSAgICAg
ICAgdmFyIHJlc291cmNlUHJvZ3Jlc3NJbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlt
ZyIpOwotICAgICAgICB0aGlzLl9yZXNvdXJjZVByb2dyZXNzQ29udGFpbmVyLmFwcGVuZENoaWxk
KHJlc291cmNlUHJvZ3Jlc3NJbWFnZSk7CisgICAgICAgIHZhciByZXNvdXJjZVByb2dyZXNzRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInByb2dyZXNzIik7CisgICAgICAgIHRoaXMu
X3Jlc291cmNlUHJvZ3Jlc3NDb250YWluZXIuYXBwZW5kQ2hpbGQocmVzb3VyY2VQcm9ncmVzc0Vs
ZW1lbnQpOworICAgICAgICB0aGlzLl9yZXNvdXJjZVByb2dyZXNzQ29udGFpbmVyLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIikpOwogICAgICAgICB0aGlzLl9yZXNvdXJj
ZVByb2dyZXNzVGV4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAg
ICAgICAgIHRoaXMuX3Jlc291cmNlUHJvZ3Jlc3NDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5f
cmVzb3VyY2VQcm9ncmVzc1RleHRFbGVtZW50KTsKICAgICAgICAgdGhpcy5fYnV0dG9uQ29udGFp
bmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yZXNvdXJjZVByb2dyZXNzQ29udGFpbmVyKTsK
QEAgLTI0MSwxNyArMjUwLDIxIEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2VQcm9ncmVzc0NvbnRhaW5lcikK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIXRoaXMuX2F1ZGl0UnVubmluZykg
eworICAgICAgICBpZiAoIXRoaXMuX2F1ZGl0UnVubmluZyB8fCB0aGlzLl9zdG9wUmVxdWVzdGVk
KSB7CiAgICAgICAgICAgICB0aGlzLl9yZXNldFJlc291cmNlQ291bnQoKTsKICAgICAgICAgICAg
IHRoaXMuX3Jlc291cmNlUHJvZ3Jlc3NDb250YWluZXIuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VQcm9ncmVzc0NvbnRh
aW5lci5yZW1vdmVTdHlsZUNsYXNzKCJoaWRkZW4iKTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VQ
cm9ncmVzc1RleHRFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJM
b2FkaW5nICglZCBvZiAlZCkiLCB0aGlzLl9sb2FkZWRSZXNvdXJjZXMsIHRoaXMuX3RvdGFsUmVz
b3VyY2VzKTsKKyAgICAgICAgaWYgKHRoaXMuX2xvYWRlZFJlc291cmNlcykKKyAgICAgICAgICAg
IHRoaXMuX3Jlc291cmNlUHJvZ3Jlc3NUZXh0RWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiTG9hZGluZyAoJWQgb2YgJWQpIiwgdGhpcy5fbG9hZGVkUmVzb3VyY2Vz
LCB0aGlzLl90b3RhbFJlc291cmNlcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMu
X3Jlc291cmNlUHJvZ3Jlc3NUZXh0RWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwogICAgIH0sCiAK
ICAgICBfdXBkYXRlQnV0dG9uOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9sYXVu
Y2hCdXR0b24uZGlzYWJsZWQgPSAhdGhpcy5fY3VycmVudENhdGVnb3JpZXNDb3VudCB8fCB0aGlz
Ll9hdWRpdFJ1bm5pbmc7CisgICAgICAgIHRoaXMuX2xhdW5jaEJ1dHRvbi50ZXh0Q29udGVudCA9
IHRoaXMuX2F1ZGl0UnVubmluZyA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RvcCIpIDogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSdW4iKTsKKyAgICAgICAgdGhpcy5fbGF1bmNoQnV0dG9uLmRp
c2FibGVkID0gIXRoaXMuX2N1cnJlbnRDYXRlZ29yaWVzQ291bnQgfHwgKHRoaXMuX2F1ZGl0UnVu
bmluZyAmJiB0aGlzLl9zdG9wUmVxdWVzdGVkKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCmluZGV4IGRmMjdkYWYx
OTgyOGI0ZWI2MWI3MGIwYTdkOTU1YjBiNmIxMDA0NGYuLjIyZGZjZThkNjAyMmZjNTYyOTdjNmE3
OGVjODRiZTgzMDA1YTgzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQXVkaXRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9BdWRpdHNQYW5lbC5qcwpAQCAtNTcsNyArNTcsNyBAQCBXZWJJbnNwZWN0b3IuQXVk
aXRzUGFuZWwgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLl9jb25zdHJ1Y3RDYXRlZ29yaWVzKCk7
CiAKLSAgICB0aGlzLl9sYXVuY2hlclZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNo
ZXJWaWV3KHRoaXMuaW5pdGlhdGVBdWRpdC5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLl9sYXVuY2hl
clZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3KHRoaXMuaW5pdGlhdGVB
dWRpdC5iaW5kKHRoaXMpLCB0aGlzLnRlcm1pbmF0ZUF1ZGl0LmJpbmQodGhpcykpOwogICAgIGZv
ciAodmFyIGlkIGluIHRoaXMuY2F0ZWdvcmllc0J5SWQpCiAgICAgICAgIHRoaXMuX2xhdW5jaGVy
Vmlldy5hZGRDYXRlZ29yeSh0aGlzLmNhdGVnb3JpZXNCeUlkW2lkXSk7CiAKQEAgLTEzNiwxMiAr
MTM2LDE0IEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgZnVuY3Rpb24gcnVsZVJlc3VsdFJlYWR5Q2FsbGJhY2soY2F0ZWdvcnlSZXN1bHQsIHJ1bGVS
ZXN1bHQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9hdWRpdFRlcm1pbmF0ZWQp
CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKHJ1bGVSZXN1bHQgJiYg
cnVsZVJlc3VsdC5jaGlsZHJlbikKICAgICAgICAgICAgICAgICBjYXRlZ29yeVJlc3VsdC5hZGRS
dWxlUmVzdWx0KHJ1bGVSZXN1bHQpOwogCiAgICAgICAgICAgICAtLXJ1bGVzUmVtYWluaW5nOwog
Ci0gICAgICAgICAgICBpZiAoIXJ1bGVzUmVtYWluaW5nICYmIHJlc3VsdENhbGxiYWNrKQorICAg
ICAgICAgICAgaWYgKCFydWxlc1JlbWFpbmluZyAmJiByZXN1bHRDYWxsYmFjayB8fCB0aGlzLl9h
dWRpdFRlcm1pbmF0ZWQpCiAgICAgICAgICAgICAgICAgcmVzdWx0Q2FsbGJhY2sobWFpblJlc291
cmNlVVJMLCByZXN1bHRzKTsKICAgICAgICAgfQogCkBAIC0xNzAsOCArMTcyLDExIEBAIFdlYklu
c3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciByZXN1bHRUcmVl
RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRSZXN1bHRTaWRlYmFyVHJlZUVsZW1lbnQo
cmVzdWx0cywgbWFpblJlc291cmNlVVJMLCBvcmRpbmFsKTsKICAgICAgICAgdGhpcy5hdWRpdFJl
c3VsdHNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChyZXN1bHRUcmVlRWxlbWVudCk7CiAgICAgICAg
IHJlc3VsdFRyZWVFbGVtZW50LnJldmVhbEFuZFNlbGVjdCgpOwotICAgICAgICBpZiAobGF1bmNo
ZXJDYWxsYmFjaykKLSAgICAgICAgICAgIGxhdW5jaGVyQ2FsbGJhY2soKTsKKyAgICAgICAgaWYg
KCF0aGlzLl9hdWRpdFRlcm1pbmF0ZWQgfHwgIXRoaXMuX2F1ZGl0VGVybWluYXRpb25IYW5kbGVk
KSB7CisgICAgICAgICAgICB0aGlzLl9hdWRpdFRlcm1pbmF0aW9uSGFuZGxlZCA9IHRydWU7Cisg
ICAgICAgICAgICBpZiAobGF1bmNoZXJDYWxsYmFjaykKKyAgICAgICAgICAgICAgICBsYXVuY2hl
ckNhbGxiYWNrKCk7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgaW5pdGlhdGVBdWRpdDogZnVu
Y3Rpb24oY2F0ZWdvcnlJZHMsIHJ1bkltbWVkaWF0ZWx5LCBsYXVuY2hlckNhbGxiYWNrKQpAQCAt
MTc5LDYgKzE4NCw5IEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGlmICghY2F0ZWdvcnlJZHMgfHwgIWNhdGVnb3J5SWRzLmxlbmd0aCkKICAgICAgICAg
ICAgIHJldHVybjsKIAorICAgICAgICBkZWxldGUgdGhpcy5fYXVkaXRUZXJtaW5hdGVkOworICAg
ICAgICBkZWxldGUgdGhpcy5fYXVkaXRUZXJtaW5hdGlvbkhhbmRsZWQ7CisKICAgICAgICAgdmFy
IGNhdGVnb3JpZXMgPSBbXTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRlZ29yeUlk
cy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIGNhdGVnb3JpZXMucHVzaCh0aGlzLmNhdGVnb3Jp
ZXNCeUlkW2NhdGVnb3J5SWRzW2ldXSk7CkBAIC0xOTYsNiArMjA0LDIwIEBAIFdlYkluc3BlY3Rv
ci5BdWRpdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci51c2VyTWV0
cmljcy5BdWRpdHNTdGFydGVkLnJlY29yZCgpOwogICAgIH0sCiAKKyAgICB0ZXJtaW5hdGVBdWRp
dDogZnVuY3Rpb24obGF1bmNoZXJDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuX2F1ZGl0
VGVybWluYXRlZCA9IHRydWU7CisKKyAgICAgICAgZnVuY3Rpb24gdGVybWluYXRlQ2FsbGJhY2so
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2F1ZGl0VGVybWluYXRpb25IYW5k
bGVkKQorICAgICAgICAgICAgICAgIGxhdW5jaGVyQ2FsbGJhY2soKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIFRlcm1pbmF0ZSB3aXRoIGEgMSBzZWMgdGltZW91dC4KKyAgICAgICAgc2V0VGlt
ZW91dCh0ZXJtaW5hdGVDYWxsYmFjay5iaW5kKHRoaXMpLCAxMDAwKTsKKyAgICB9LAorCiAgICAg
X3JlbG9hZFJlc291cmNlczogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlz
Ll9wYWdlUmVsb2FkQ2FsbGJhY2sgPSBjYWxsYmFjazsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117866</attachid>
            <date>2011-12-05 04:37:24 -0800</date>
            <delta_ts>2011-12-06 01:05:13 -0800</delta_ts>
            <desc>[PATCH] Comment addressed</desc>
            <filename>bug-73626-20111205163722.patch</filename>
            <type>text/plain</type>
            <size>28037</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxOTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2EwNWMyYWU3ODM0ZGVk
OTk4Y2JiNzIwMTFjMGRjNGY3OGYzZTQ3Ny4uODAzNzk1OWViZjcyYzBmOTYzMjc0NTIxOTNkNjY3
NzE3YTkyMmM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDExLTEyLTA1ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW0F1ZGl0c10gSW1wbGVtZW50ICJTdG9wIiBidXR0b24gYW5kIHByb2dyZXNzIGJhciBp
bnN0ZWFkIG9mIHNwaW5uZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MzYyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0
TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5fc2V0QXVkaXRSdW5uaW5nKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUuX2xhdW5jaEJ1dHRvbkNsaWNrZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5fY3Jl
YXRlTGF1bmNoZXJVSSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcu
cHJvdG90eXBlLl91cGRhdGVSZXNvdXJjZVByb2dyZXNzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUuX3VwZGF0ZUJ1dHRvbik6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkF1ZGl0UnVsZXMuR3ppcFJ1bGUucHJvdG90eXBlLmRvUnVuKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5BdWRpdFJ1bGVzLkNvbWJpbmVFeHRlcm5hbFJlc291cmNlc1J1bGUucHJvdG90eXBlLmRv
UnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLk1pbmltaXplRG5zTG9va3Vw
c1J1bGUucHJvdG90eXBlLmRvUnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVz
LlVudXNlZENzc1J1bGUucHJvdG90eXBlLmRvUnVuLmV2YWxDYWxsYmFjay5zZWxlY3RvcnNDYWxs
YmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5VbnVzZWRDc3NSdWxlLnBy
b3RvdHlwZS5kb1J1bi5ldmFsQ2FsbGJhY2suZG9jdW1lbnRMb2FkZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkF1ZGl0UnVsZXMuVW51c2VkQ3NzUnVsZS5wcm90b3R5cGUuZG9SdW4uZXZhbENh
bGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlVudXNlZENzc1J1bGUu
cHJvdG90eXBlLmRvUnVuLnN0eWxlU2hlZXRDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXVkaXRSdWxlcy5VbnVzZWRDc3NSdWxlLnByb3RvdHlwZS5kb1J1bi5hbGxTdHlsZXNDYWxs
YmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5VbnVzZWRDc3NSdWxlLnBy
b3RvdHlwZS5kb1J1bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5DYWNoZUNv
bnRyb2xSdWxlLnByb3RvdHlwZS5kb1J1bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRS
dWxlcy5JbWFnZURpbWVuc2lvbnNSdWxlLnByb3RvdHlwZS5kb1J1bik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQXVkaXRSdWxlcy5Dc3NJbkhlYWRSdWxlLnByb3RvdHlwZS5kb1J1bik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Dc3NJbkhlYWRSdWxlLnByb3RvdHlwZS5kb1J1
bi5leHRlcm5hbFN0eWxlc2hlZXRzUmVjZWl2ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1
ZGl0UnVsZXMuQ3NzSW5IZWFkUnVsZS5wcm90b3R5cGUuZG9SdW4uaW5saW5lU3R5bGVzUmVjZWl2
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ3NzSW5IZWFkUnVsZS5wcm90
b3R5cGUuZG9SdW4ub25Eb2N1bWVudEF2YWlsYWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QXVkaXRSdWxlcy5TdHlsZXNTY3JpcHRzT3JkZXJSdWxlLnByb3RvdHlwZS5kb1J1bik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5TdHlsZXNTY3JpcHRzT3JkZXJSdWxlLnByb3Rv
dHlwZS5kb1J1bi5jc3NCZWZvcmVJbmxpbmVSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXVkaXRSdWxlcy5TdHlsZXNTY3JpcHRzT3JkZXJSdWxlLnByb3RvdHlwZS5kb1J1bi5sYXRl
U3R5bGVzUmVjZWl2ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuU3R5bGVz
U2NyaXB0c09yZGVyUnVsZS5wcm90b3R5cGUuZG9SdW4ub25Eb2N1bWVudEF2YWlsYWJsZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Db29raWVSdWxlQmFzZS5wcm90b3R5cGUu
ZG9SdW4ucmVzdWx0Q2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMu
Q29va2llUnVsZUJhc2UucHJvdG90eXBlLmRvUnVuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0F1ZGl0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUuX2V4ZWN1dGVB
dWRpdC5ydWxlUmVzdWx0UmVhZHlDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVk
aXRzUGFuZWwucHJvdG90eXBlLl9leGVjdXRlQXVkaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkF1ZGl0c1BhbmVsLnByb3RvdHlwZS5fYXVkaXRGaW5pc2hlZENhbGxiYWNrKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUudGVybWluYXRlQXVkaXQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnkucHJvdG90eXBlLnJ1bik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlLnByb3RvdHlwZS5ydW4pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkF1ZGl0UnVsZS5wcm90b3R5cGUuZG9SdW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkF1ZGl0UHJvZ3Jlc3NNb25pdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFByb2dy
ZXNzTW9uaXRvci5wcm90b3R5cGUuc2V0VG90YWxXb3JrKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5BdWRpdFByb2dyZXNzTW9uaXRvci5wcm90b3R5cGUud29ya2VkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5BdWRpdFByb2dyZXNzTW9uaXRvci5wcm90b3R5cGUuZ2V0IGluZGV0ZXJtaW5hdGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UHJvZ3Jlc3NNb25pdG9yLnByb3RvdHlwZS5p
c0RvbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UHJvZ3Jlc3NNb25pdG9yLnByb3Rv
dHlwZS5nZXQgY2FuY2VsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0UHJvZ3Jlc3NN
b25pdG9yLnByb3RvdHlwZS5zZXQgY2FuY2VsZWQpOgorCiAyMDExLTEyLTA1ICBTaGlueWEgS2F3
YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CiAKICAgICAgICAgQXN5bmNocm9ub3VzIFNwZWxs
Q2hlY2tlciBzaG91bGQgY29uc2lkZXIgbXVsdGlwbGUgcmVxdWVzdHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggYjg3YTQ3NjRj
ZDI2Mjk4M2I1MDBmMDUyMDhjYmM3MmU2YWQ2YThiZC4uZmU5ZTQ5MWEzY2Q2MGIwZTYyYzg3NjRh
NDQxZWU5M2M2NzQzYjhhNCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAyNgprY21WKyMw
T2tMPnRefE91MWg4dFFsWXBmWmxOOU1IbGtsSmZ2dTM1I2FqUXJUNComb0YKCmRlbHRhIDE0Cldj
bVpveiYkNFNCJVo5OV9uPlFASVB6VjR1a19WXiYKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcwppbmRleCA0YjEwYjQ2
MjM1ZDQxYmI5OTg3YzkyYTAxMWEzMWYxYmQzNjlmMzgwLi4yNTg3YjVkYmNjNjA0M2IyMTdhMjFm
ODk4YjQxN2ZmMDZhZjZkY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanMKQEAgLTMyLDEwICszMiwxMSBAQAog
ICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9CiAgKi8KLVdl
Ykluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyA9IGZ1bmN0aW9uKHJ1bm5lckNhbGxiYWNrKQor
V2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3ID0gZnVuY3Rpb24ocnVubmVyQ2FsbGJhY2ss
IHN0b3BDYWxsYmFjaykKIHsKICAgICBXZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwogICAg
IHRoaXMuX3J1bm5lckNhbGxiYWNrID0gcnVubmVyQ2FsbGJhY2s7CisgICAgdGhpcy5fc3RvcENh
bGxiYWNrID0gc3RvcENhbGxiYWNrOwogICAgIHRoaXMuX2NhdGVnb3J5SWRQcmVmaXggPSAiYXVk
aXQtY2F0ZWdvcnktaXRlbS0iOwogICAgIHRoaXMuX2F1ZGl0UnVubmluZyA9IGZhbHNlOwogCkBA
IC0xMTUsMjEgKzExNiwyOCBAQCBXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90
eXBlID0gewogICAgICAgICBpZiAodGhpcy5fYXVkaXRSdW5uaW5nID09PSBhdWRpdFJ1bm5pbmcp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX2F1ZGl0UnVubmluZyA9IGF1ZGl0
UnVubmluZzsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3N0b3BSZXF1ZXN0ZWQ7CiAgICAgICAgIHRo
aXMuX3VwZGF0ZUJ1dHRvbigpOwogICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZVByb2dyZXNz
KCk7CiAgICAgfSwKIAogICAgIF9sYXVuY2hCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkK
ICAgICB7Ci0gICAgICAgIHZhciBjYXRJZHMgPSBbXTsKLSAgICAgICAgdmFyIGNoaWxkTm9kZXMg
PSB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5jaGlsZE5vZGVzOwotICAgICAgICBmb3IgKHZhciBj
YXRlZ29yeSA9IDA7IGNhdGVnb3J5IDwgdGhpcy5fc29ydGVkQ2F0ZWdvcmllcy5sZW5ndGg7ICsr
Y2F0ZWdvcnkpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9zb3J0ZWRDYXRlZ29yaWVzW2NhdGVn
b3J5XS5fY2hlY2tib3hFbGVtZW50LmNoZWNrZWQpCi0gICAgICAgICAgICAgICAgY2F0SWRzLnB1
c2godGhpcy5fc29ydGVkQ2F0ZWdvcmllc1tjYXRlZ29yeV0uaWQpOworICAgICAgICBpZiAoIXRo
aXMuX2F1ZGl0UnVubmluZykgeworICAgICAgICAgICAgdmFyIGNhdElkcyA9IFtdOworICAgICAg
ICAgICAgdmFyIGNoaWxkTm9kZXMgPSB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5jaGlsZE5vZGVz
OworICAgICAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgPSAwOyBjYXRlZ29yeSA8IHRoaXMuX3Nv
cnRlZENhdGVnb3JpZXMubGVuZ3RoOyArK2NhdGVnb3J5KSB7CisgICAgICAgICAgICAgICAgaWYg
KHRoaXMuX3NvcnRlZENhdGVnb3JpZXNbY2F0ZWdvcnldLl9jaGVja2JveEVsZW1lbnQuY2hlY2tl
ZCkKKyAgICAgICAgICAgICAgICAgICAgY2F0SWRzLnB1c2godGhpcy5fc29ydGVkQ2F0ZWdvcmll
c1tjYXRlZ29yeV0uaWQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9zZXRB
dWRpdFJ1bm5pbmcodHJ1ZSk7CisgICAgICAgICAgICB0aGlzLl9ydW5uZXJDYWxsYmFjayhjYXRJ
ZHMsIHRoaXMuX3Jlc291cmNlUHJvZ3Jlc3NFbGVtZW50LCB0aGlzLl9hdWRpdFByZXNlbnRTdGF0
ZUVsZW1lbnQuY2hlY2tlZCwgdGhpcy5fc2V0QXVkaXRSdW5uaW5nLmJpbmQodGhpcywgZmFsc2Up
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX3N0b3BSZXF1ZXN0ZWQgPSB0
cnVlOworICAgICAgICAgICAgdGhpcy5fc3RvcENhbGxiYWNrKHRoaXMuX3NldEF1ZGl0UnVubmlu
Zy5iaW5kKHRoaXMsIGZhbHNlKSk7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVCdXR0b24oKTsK
ICAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX3NldEF1ZGl0UnVubmluZyh0cnVlKTsKLSAgICAg
ICAgdGhpcy5fcnVubmVyQ2FsbGJhY2soY2F0SWRzLCB0aGlzLl9hdWRpdFByZXNlbnRTdGF0ZUVs
ZW1lbnQuY2hlY2tlZCwgdGhpcy5fc2V0QXVkaXRSdW5uaW5nLmJpbmQodGhpcywgZmFsc2UpKTsK
ICAgICB9LAogCiAgICAgX3NlbGVjdEFsbENsaWNrZWQ6IGZ1bmN0aW9uKGNoZWNrQ2F0ZWdvcmll
cykKQEAgLTE4NCw1MiArMTkyLDM2IEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NlbGVjdEFsbENoZWNrYm94RWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIGhhbmRsZVNlbGVjdEFsbENsaWNrLmJpbmQodGhpcyksIGZh
bHNlKTsKICAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2F0ZWdvcnlF
bGVtZW50KTsKIAotICAgICAgICB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5jbGFz
c05hbWUgPSAiYXVkaXQtY2F0ZWdvcmllcy1jb250YWluZXIiOwotICAgICAgICB0aGlzLl9jb250
ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jYXRlZ29yaWVzRWxlbWVudCk7Ci0KKyAgICAg
ICAgdGhpcy5fY2F0ZWdvcmllc0VsZW1lbnQgPSB0aGlzLl9jb250ZW50RWxlbWVudC5jcmVhdGVD
aGlsZCgiZGl2IiwgImF1ZGl0LWNhdGVnb3JpZXMtY29udGFpbmVyIik7CiAgICAgICAgIHRoaXMu
X2N1cnJlbnRDYXRlZ29yaWVzQ291bnQgPSAwOwogCi0gICAgICAgIHZhciBmbGV4aWJsZVNwYWNl
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBmbGV4aWJs
ZVNwYWNlRWxlbWVudC5jbGFzc05hbWUgPSAiZmxleGlibGUtc3BhY2UiOwotICAgICAgICB0aGlz
Ll9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChmbGV4aWJsZVNwYWNlRWxlbWVudCk7CisgICAg
ICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiLCAiZmxleGlibGUtc3Bh
Y2UiKTsKIAotICAgICAgICB0aGlzLl9idXR0b25Db250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2J1dHRvbkNvbnRhaW5lckVsZW1l
bnQuY2xhc3NOYW1lID0gImJ1dHRvbi1jb250YWluZXIiOworICAgICAgICB0aGlzLl9idXR0b25D
b250YWluZXJFbGVtZW50ID0gdGhpcy5fY29udGVudEVsZW1lbnQuY3JlYXRlQ2hpbGQoImRpdiIs
ICJidXR0b24tY29udGFpbmVyIik7CiAKLSAgICAgICAgdmFyIGxhYmVsRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7Ci0gICAgICAgIHRoaXMuX2F1ZGl0UHJlc2VudFN0
YXRlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgIHZh
ciBsYWJlbEVsZW1lbnQgPSB0aGlzLl9idXR0b25Db250YWluZXJFbGVtZW50LmNyZWF0ZUNoaWxk
KCJsYWJlbCIpOworICAgICAgICB0aGlzLl9hdWRpdFByZXNlbnRTdGF0ZUVsZW1lbnQgPSBsYWJl
bEVsZW1lbnQuY3JlYXRlQ2hpbGQoImlucHV0Iik7CiAgICAgICAgIHRoaXMuX2F1ZGl0UHJlc2Vu
dFN0YXRlRWxlbWVudC5uYW1lID0gImF1ZGl0LW1vZGUiOwogICAgICAgICB0aGlzLl9hdWRpdFBy
ZXNlbnRTdGF0ZUVsZW1lbnQudHlwZSA9ICJyYWRpbyI7CiAgICAgICAgIHRoaXMuX2F1ZGl0UHJl
c2VudFN0YXRlRWxlbWVudC5jaGVja2VkID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fYXVkaXRQcmVz
ZW50U3RhdGVMYWJlbEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkF1ZGl0IFByZXNlbnQgU3RhdGUiKSk7Ci0gICAgICAgIGxhYmVsRWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9hdWRpdFByZXNlbnRTdGF0ZUVsZW1lbnQpOwogICAgICAgICBs
YWJlbEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fYXVkaXRQcmVzZW50U3RhdGVMYWJlbEVsZW1l
bnQpOwotICAgICAgICB0aGlzLl9idXR0b25Db250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKGxh
YmVsRWxlbWVudCk7CiAKLSAgICAgICAgbGFiZWxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgibGFiZWwiKTsKLSAgICAgICAgdGhpcy5hdWRpdFJlbG9hZGVkU3RhdGVFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgbGFiZWxFbGVtZW50ID0g
dGhpcy5fYnV0dG9uQ29udGFpbmVyRWxlbWVudC5jcmVhdGVDaGlsZCgibGFiZWwiKTsKKyAgICAg
ICAgdGhpcy5hdWRpdFJlbG9hZGVkU3RhdGVFbGVtZW50ID0gbGFiZWxFbGVtZW50LmNyZWF0ZUNo
aWxkKCJpbnB1dCIpOwogICAgICAgICB0aGlzLmF1ZGl0UmVsb2FkZWRTdGF0ZUVsZW1lbnQubmFt
ZSA9ICJhdWRpdC1tb2RlIjsKICAgICAgICAgdGhpcy5hdWRpdFJlbG9hZGVkU3RhdGVFbGVtZW50
LnR5cGUgPSAicmFkaW8iOwotICAgICAgICBsYWJlbEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5h
dWRpdFJlbG9hZGVkU3RhdGVFbGVtZW50KTsKICAgICAgICAgbGFiZWxFbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJSZWxvYWQgUGFnZSBhbmQgQXVkaXQgb24gTG9h
ZCIpKTsKLSAgICAgICAgdGhpcy5fYnV0dG9uQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChs
YWJlbEVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX2xhdW5jaEJ1dHRvbiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwotICAgICAgICB0aGlzLl9sYXVuY2hCdXR0b24udHlwZSA9
ICJidXR0b24iOworICAgICAgICB0aGlzLl9sYXVuY2hCdXR0b24gPSB0aGlzLl9idXR0b25Db250
YWluZXJFbGVtZW50LmNyZWF0ZUNoaWxkKCJidXR0b24iKTsKICAgICAgICAgdGhpcy5fbGF1bmNo
QnV0dG9uLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSdW4iKTsKICAgICAg
ICAgdGhpcy5fbGF1bmNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbGF1
bmNoQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2J1dHRv
bkNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGF1bmNoQnV0dG9uKTsKIAotICAg
ICAgICB0aGlzLl9yZXNvdXJjZVByb2dyZXNzQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic3BhbiIpOwotICAgICAgICB0aGlzLl9yZXNvdXJjZVByb2dyZXNzQ29udGFpbmVyLmNs
YXNzTmFtZSA9ICJyZXNvdXJjZS1wcm9ncmVzcyI7Ci0gICAgICAgIHZhciByZXNvdXJjZVByb2dy
ZXNzSW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKLSAgICAgICAgdGhpcy5f
cmVzb3VyY2VQcm9ncmVzc0NvbnRhaW5lci5hcHBlbmRDaGlsZChyZXNvdXJjZVByb2dyZXNzSW1h
Z2UpOwotICAgICAgICB0aGlzLl9yZXNvdXJjZVByb2dyZXNzVGV4dEVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlUHJvZ3Jlc3ND
b250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fcmVzb3VyY2VQcm9ncmVzc1RleHRFbGVtZW50KTsK
LSAgICAgICAgdGhpcy5fYnV0dG9uQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9y
ZXNvdXJjZVByb2dyZXNzQ29udGFpbmVyKTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VQcm9ncmVz
c0NvbnRhaW5lciA9IHRoaXMuX2J1dHRvbkNvbnRhaW5lckVsZW1lbnQuY3JlYXRlQ2hpbGQoInNw
YW4iLCAicmVzb3VyY2UtcHJvZ3Jlc3MiKTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VQcm9ncmVz
c0VsZW1lbnQgPSB0aGlzLl9yZXNvdXJjZVByb2dyZXNzQ29udGFpbmVyLmNyZWF0ZUNoaWxkKCJw
cm9ncmVzcyIpOworICAgICAgICB0aGlzLl9yZXNvdXJjZVByb2dyZXNzQ29udGFpbmVyLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIikpOworICAgICAgICB0aGlzLl9yZXNv
dXJjZVByb2dyZXNzVGV4dEVsZW1lbnQgPSB0aGlzLl9yZXNvdXJjZVByb2dyZXNzQ29udGFpbmVy
LmNyZWF0ZUNoaWxkKCJzcGFuIik7CiAKLSAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fYnV0dG9uQ29udGFpbmVyRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5f
c2VsZWN0QWxsQ2xpY2tlZCh0aGlzLl9zZWxlY3RBbGxDaGVja2JveEVsZW1lbnQuY2hlY2tlZCk7
CiAgICAgICAgIHRoaXMuX3VwZGF0ZUJ1dHRvbigpOwpAQCAtMjQxLDE3ICsyMzMsMjEgQEAgV2Vi
SW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF0
aGlzLl9yZXNvdXJjZVByb2dyZXNzQ29udGFpbmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGlmICghdGhpcy5fYXVkaXRSdW5uaW5nKSB7CisgICAgICAgIGlmICghdGhpcy5fYXVk
aXRSdW5uaW5nIHx8IHRoaXMuX3N0b3BSZXF1ZXN0ZWQpIHsKICAgICAgICAgICAgIHRoaXMuX3Jl
c2V0UmVzb3VyY2VDb3VudCgpOwogICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VQcm9ncmVzc0Nv
bnRhaW5lci5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICB0aGlzLl9yZXNvdXJjZVByb2dyZXNzQ29udGFpbmVyLnJlbW92ZVN0eWxlQ2xhc3MoImhp
ZGRlbiIpOwotICAgICAgICB0aGlzLl9yZXNvdXJjZVByb2dyZXNzVGV4dEVsZW1lbnQudGV4dENv
bnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvYWRpbmcgKCVkIG9mICVkKSIsIHRoaXMu
X2xvYWRlZFJlc291cmNlcywgdGhpcy5fdG90YWxSZXNvdXJjZXMpOworICAgICAgICBpZiAodGhp
cy5fbG9hZGVkUmVzb3VyY2VzKQorICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VQcm9ncmVzc1Rl
eHRFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2FkaW5nICgl
ZCBvZiAlZCkiLCB0aGlzLl9sb2FkZWRSZXNvdXJjZXMsIHRoaXMuX3RvdGFsUmVzb3VyY2VzKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VQcm9ncmVzc1RleHRFbGVt
ZW50LnRleHRDb250ZW50ID0gIiI7CiAgICAgfSwKIAogICAgIF91cGRhdGVCdXR0b246IGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2xhdW5jaEJ1dHRvbi5kaXNhYmxlZCA9ICF0aGlz
Ll9jdXJyZW50Q2F0ZWdvcmllc0NvdW50IHx8IHRoaXMuX2F1ZGl0UnVubmluZzsKKyAgICAgICAg
dGhpcy5fbGF1bmNoQnV0dG9uLnRleHRDb250ZW50ID0gdGhpcy5fYXVkaXRSdW5uaW5nID8gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIikgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJ1biIp
OworICAgICAgICB0aGlzLl9sYXVuY2hCdXR0b24uZGlzYWJsZWQgPSAhdGhpcy5fY3VycmVudENh
dGVnb3JpZXNDb3VudCB8fCAodGhpcy5fYXVkaXRSdW5uaW5nICYmIHRoaXMuX3N0b3BSZXF1ZXN0
ZWQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9BdWRpdFJ1bGVzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9BdWRpdFJ1bGVzLmpzCmluZGV4IGI3M2M3YTkxNzJiOWIxMmFhNDIwMTlkNzUzN2IzY2Y2Zjdj
NzRiZWQuLjkzN2E4NzI0M2E1NWRlZWUwMDgwNDAxNjA4NmU1ZWMwNjVlNGRmZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMKQEAgLTcz
LDcgKzczLDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuR3ppcFJ1bGUgPSBmdW5jdGlvbigp
CiB9CiAKIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkd6aXBSdWxlLnByb3RvdHlwZSA9IHsKLSAg
ICBkb1J1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1bHQsIGNhbGxiYWNrKQorICAgIGRvUnVu
OiBmdW5jdGlvbihyZXNvdXJjZXMsIHJlc3VsdCwgY2FsbGJhY2ssIHByb2dyZXNzTW9uaXRvcikK
ICAgICB7CiAgICAgICAgIHZhciB0b3RhbFNhdmluZ3MgPSAwOwogICAgICAgICB2YXIgY29tcHJl
c3NlZFNpemUgPSAwOwpAQCAtMTMyLDcgKzEzMiw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVz
LkNvbWJpbmVFeHRlcm5hbFJlc291cmNlc1J1bGUgPSBmdW5jdGlvbihpZCwgbmFtZSwgdHlwZSwK
IH0KIAogV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ29tYmluZUV4dGVybmFsUmVzb3VyY2VzUnVs
ZS5wcm90b3R5cGUgPSB7Ci0gICAgZG9SdW46IGZ1bmN0aW9uKHJlc291cmNlcywgcmVzdWx0LCBj
YWxsYmFjaykKKyAgICBkb1J1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1bHQsIGNhbGxiYWNr
LCBwcm9ncmVzc01vbml0b3IpCiAgICAgewogICAgICAgICB2YXIgZG9tYWluVG9SZXNvdXJjZXNN
YXAgPSBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5nZXREb21haW5Ub1Jlc291cmNlc01hcChyZXNv
dXJjZXMsIFt0aGlzLl90eXBlXSwgZmFsc2UpOwogICAgICAgICB2YXIgcGVuYWxpemVkUmVzb3Vy
Y2VDb3VudCA9IDA7CkBAIC0xODcsNyArMTg3LDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMu
TWluaW1pemVEbnNMb29rdXBzUnVsZSA9IGZ1bmN0aW9uKGhvc3RDb3VudFRocmVzaG9sZCkgewog
fQogCiBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5NaW5pbWl6ZURuc0xvb2t1cHNSdWxlLnByb3Rv
dHlwZSA9IHsKLSAgICBkb1J1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1bHQsIGNhbGxiYWNr
KQorICAgIGRvUnVuOiBmdW5jdGlvbihyZXNvdXJjZXMsIHJlc3VsdCwgY2FsbGJhY2ssIHByb2dy
ZXNzTW9uaXRvcikKICAgICB7CiAgICAgICAgIHZhciBzdW1tYXJ5ID0gcmVzdWx0LmFkZENoaWxk
KCIiKTsKICAgICAgICAgdmFyIGRvbWFpblRvUmVzb3VyY2VzTWFwID0gV2ViSW5zcGVjdG9yLkF1
ZGl0UnVsZXMuZ2V0RG9tYWluVG9SZXNvdXJjZXNNYXAocmVzb3VyY2VzLCB1bmRlZmluZWQsIGZh
bHNlKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5QYXJhbGxl
bGl6ZURvd25sb2FkUnVsZSA9IGZ1bmN0aW9uKG9wdGltYWxIb3N0bmFtZUNvdW50LAogfQogCiBX
ZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5QYXJhbGxlbGl6ZURvd25sb2FkUnVsZS5wcm90b3R5cGUg
PSB7Ci0gICAgZG9SdW46IGZ1bmN0aW9uKHJlc291cmNlcywgcmVzdWx0LCBjYWxsYmFjaykKKyAg
ICBkb1J1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1bHQsIGNhbGxiYWNrLCBwcm9ncmVzc01v
bml0b3IpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBob3N0U29ydGVyKGEsIGIpCiAgICAgICAg
IHsKQEAgLTI5NCwxMSArMjk0LDE0IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlVudXNlZENz
c1J1bGUgPSBmdW5jdGlvbigpCiB9CiAKIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlVudXNlZENz
c1J1bGUucHJvdG90eXBlID0gewotICAgIGRvUnVuOiBmdW5jdGlvbihyZXNvdXJjZXMsIHJlc3Vs
dCwgY2FsbGJhY2spCisgICAgZG9SdW46IGZ1bmN0aW9uKHJlc291cmNlcywgcmVzdWx0LCBjYWxs
YmFjaywgcHJvZ3Jlc3NNb25pdG9yKQogICAgIHsKICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwog
CiAgICAgICAgIGZ1bmN0aW9uIGV2YWxDYWxsYmFjayhzdHlsZVNoZWV0cykgeworICAgICAgICAg
ICAgaWYgKHByb2dyZXNzTW9uaXRvci5jYW5jZWxlZCkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKICAgICAgICAgICAgIGlmICghc3R5bGVTaGVldHMubGVuZ3RoKQogICAgICAgICAgICAgICAg
IHJldHVybiBjYWxsYmFjayhudWxsKTsKIApAQCAtMzE4LDYgKzMyMSw5IEBAIFdlYkluc3BlY3Rv
ci5BdWRpdFJ1bGVzLlVudXNlZENzc1J1bGUucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBm
dW5jdGlvbiBzZWxlY3RvcnNDYWxsYmFjayhjYWxsYmFjaywgc3R5bGVTaGVldHMsIHRlc3RlZFNl
bGVjdG9ycywgZm91bmRTZWxlY3RvcnMpCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
aWYgKHByb2dyZXNzTW9uaXRvci5jYW5jZWxlZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworCiAgICAgICAgICAgICAgICAgdmFyIGlubGluZUJsb2NrT3JkaW5hbCA9IDA7CiAgICAgICAg
ICAgICAgICAgdmFyIHRvdGFsU3R5bGVzaGVldFNpemUgPSAwOwogICAgICAgICAgICAgICAgIHZh
ciB0b3RhbFVudXNlZFN0eWxlc2hlZXRTaXplID0gMDsKQEAgLTM3OSw4ICszODUsMTEgQEAgV2Vi
SW5zcGVjdG9yLkF1ZGl0UnVsZXMuVW51c2VkQ3NzUnVsZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRvY3VtZW50TG9hZGVkKHNlbGVjdG9ycywg
ZG9jdW1lbnQpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVjdG9y
cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVj
dG9ycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocHJvZ3Jlc3NNb25p
dG9yLmNhbmNlbGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucXVlcnlTZWxlY3Rvcihkb2N1bWVudC5p
ZCwgc2VsZWN0b3JzW2ldLCBxdWVyeUNhbGxiYWNrLmJpbmQobnVsbCwgaSA9PT0gc2VsZWN0b3Jz
Lmxlbmd0aCAtIDEgPyBzZWxlY3RvcnNDYWxsYmFjay5iaW5kKG51bGwsIGNhbGxiYWNrLCBzdHls
ZVNoZWV0cywgdGVzdGVkU2VsZWN0b3JzKSA6IG51bGwsIHNlbGVjdG9yc1tpXSwgc3R5bGVTaGVl
dHMsIHRlc3RlZFNlbGVjdG9ycykpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChkb2N1
bWVudExvYWRlZC5iaW5kKG51bGwsIHNlbGVjdG9ycykpOwpAQCAtMzg4LDYgKzM5Nyw5IEBAIFdl
Ykluc3BlY3Rvci5BdWRpdFJ1bGVzLlVudXNlZENzc1J1bGUucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGZ1bmN0aW9uIHN0eWxlU2hlZXRDYWxsYmFjayhzdHlsZVNoZWV0cywgc291cmNlVVJMLCBj
b250aW51YXRpb24sIHN0eWxlU2hlZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwcm9n
cmVzc01vbml0b3IuY2FuY2VsZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAg
ICAgICBpZiAoc3R5bGVTaGVldCkgewogICAgICAgICAgICAgICAgIHN0eWxlU2hlZXQuc291cmNl
VVJMID0gc291cmNlVVJMOwogICAgICAgICAgICAgICAgIHN0eWxlU2hlZXRzLnB1c2goc3R5bGVT
aGVldCk7CkBAIC0zOTgsNiArNDEwLDkgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuVW51c2Vk
Q3NzUnVsZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gYWxsU3R5bGVzQ2FsbGJh
Y2soZXJyb3IsIHN0eWxlU2hlZXRJbmZvcykKICAgICAgICAgeworICAgICAgICAgICAgaWYgKHBy
b2dyZXNzTW9uaXRvci5jYW5jZWxlZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAg
ICAgICAgIGlmIChlcnJvciB8fCAhc3R5bGVTaGVldEluZm9zIHx8ICFzdHlsZVNoZWV0SW5mb3Mu
bGVuZ3RoKQogICAgICAgICAgICAgICAgIHJldHVybiBldmFsQ2FsbGJhY2soW10pOwogICAgICAg
ICAgICAgdmFyIHN0eWxlU2hlZXRzID0gW107CkBAIC00MjYsNyArNDQxLDcgQEAgV2ViSW5zcGVj
dG9yLkF1ZGl0UnVsZXMuQ2FjaGVDb250cm9sUnVsZS5NaWxsaXNQZXJNb250aCA9IDEwMDAgKiA2
MCAqIDYwICogMjQgKgogCiBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5DYWNoZUNvbnRyb2xSdWxl
LnByb3RvdHlwZSA9IHsKIAotICAgIGRvUnVuOiBmdW5jdGlvbihyZXNvdXJjZXMsIHJlc3VsdCwg
Y2FsbGJhY2spCisgICAgZG9SdW46IGZ1bmN0aW9uKHJlc291cmNlcywgcmVzdWx0LCBjYWxsYmFj
aywgcHJvZ3Jlc3NNb25pdG9yKQogICAgIHsKICAgICAgICAgdmFyIGNhY2hlYWJsZUFuZE5vbkNh
Y2hlYWJsZVJlc291cmNlcyA9IHRoaXMuX2NhY2hlYWJsZUFuZE5vbkNhY2hlYWJsZVJlc291cmNl
cyhyZXNvdXJjZXMpOwogICAgICAgICBpZiAoY2FjaGVhYmxlQW5kTm9uQ2FjaGVhYmxlUmVzb3Vy
Y2VzWzBdLmxlbmd0aCkKQEAgLTY3Myw3ICs2ODgsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxl
cy5JbWFnZURpbWVuc2lvbnNSdWxlID0gZnVuY3Rpb24oKQogfQogCiBXZWJJbnNwZWN0b3IuQXVk
aXRSdWxlcy5JbWFnZURpbWVuc2lvbnNSdWxlLnByb3RvdHlwZSA9IHsKLSAgICBkb1J1bjogZnVu
Y3Rpb24ocmVzb3VyY2VzLCByZXN1bHQsIGNhbGxiYWNrKQorICAgIGRvUnVuOiBmdW5jdGlvbihy
ZXNvdXJjZXMsIHJlc3VsdCwgY2FsbGJhY2ssIHByb2dyZXNzTW9uaXRvcikKICAgICB7CiAgICAg
ICAgIHZhciB1cmxUb05vRGltZW5zaW9uQ291bnQgPSB7fTsKIApAQCAtNjkyLDYgKzcwNyw5IEBA
IFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkltYWdlRGltZW5zaW9uc1J1bGUucHJvdG90eXBlID0g
ewogCiAgICAgICAgIGZ1bmN0aW9uIGltYWdlU3R5bGVzUmVhZHkoaW1hZ2VJZCwgc3R5bGVzLCBp
c0xhc3RTdHlsZSwgY29tcHV0ZWRTdHlsZSkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKHBy
b2dyZXNzTW9uaXRvci5jYW5jZWxlZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAg
ICAgICAgIGNvbnN0IG5vZGUgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQubm9kZUZvcklkKGltYWdl
SWQpOwogICAgICAgICAgICAgdmFyIHNyYyA9IG5vZGUuZ2V0QXR0cmlidXRlKCJzcmMiKTsKICAg
ICAgICAgICAgIGlmICghc3JjLmFzUGFyc2VkVVJMKCkpIHsKQEAgLTc0Myw2ICs3NjEsOCBAQCBX
ZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5JbWFnZURpbWVuc2lvbnNSdWxlLnByb3RvdHlwZSA9IHsK
IAogICAgICAgICBmdW5jdGlvbiBnZXRTdHlsZXMobm9kZUlkcykKICAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHByb2dyZXNzTW9uaXRvci5jYW5jZWxlZCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB2YXIgdGFyZ2V0UmVzdWx0ID0ge307CiAKICAgICAgICAgICAgIGZ1
bmN0aW9uIGlubGluZUNhbGxiYWNrKGlubGluZVN0eWxlLCBzdHlsZUF0dHJpYnV0ZXMpCkBAIC03
NjksOSArNzg5LDEzIEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkltYWdlRGltZW5zaW9uc1J1
bGUucHJvdG90eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9uIG9uRG9jdW1lbnRBdmFpbGFibGUo
cm9vdCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKHByb2dyZXNzTW9uaXRvci5jYW5jZWxl
ZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
QWdlbnQucXVlcnlTZWxlY3RvckFsbChyb290LmlkLCAiaW1nW3NyY10iLCBnZXRTdHlsZXMpOwog
ICAgICAgICB9CiAKKyAgICAgICAgaWYgKHByb2dyZXNzTW9uaXRvci5jYW5jZWxlZCkKKyAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1
bWVudChvbkRvY3VtZW50QXZhaWxhYmxlKTsKICAgICB9CiB9CkBAIC03ODgsMTAgKzgxMiwxMyBA
QCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Dc3NJbkhlYWRSdWxlID0gZnVuY3Rpb24oKQogfQog
CiBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Dc3NJbkhlYWRSdWxlLnByb3RvdHlwZSA9IHsKLSAg
ICBkb1J1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1bHQsIGNhbGxiYWNrKQorICAgIGRvUnVu
OiBmdW5jdGlvbihyZXNvdXJjZXMsIHJlc3VsdCwgY2FsbGJhY2ssIHByb2dyZXNzTW9uaXRvcikK
ICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGV2YWxDYWxsYmFjayhldmFsUmVzdWx0KQogICAgICAg
ICB7CisgICAgICAgICAgICBpZiAocHJvZ3Jlc3NNb25pdG9yLmNhbmNlbGVkKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgaWYgKCFldmFsUmVzdWx0KQogICAgICAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTsKIApAQCAtODE0LDYgKzg0MSw5IEBAIFdlYklu
c3BlY3Rvci5BdWRpdFJ1bGVzLkNzc0luSGVhZFJ1bGUucHJvdG90eXBlID0gewogCiAgICAgICAg
IGZ1bmN0aW9uIGV4dGVybmFsU3R5bGVzaGVldHNSZWNlaXZlZChyb290LCBpbmxpbmVTdHlsZU5v
ZGVJZHMsIG5vZGVJZHMpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwcm9ncmVzc01vbml0
b3IuY2FuY2VsZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICBpZiAo
IW5vZGVJZHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgdmFyIGV4dGVy
bmFsU3R5bGVzaGVldE5vZGVJZHMgPSBub2RlSWRzOwpAQCAtODM0LDYgKzg2NCw5IEBAIFdlYklu
c3BlY3Rvci5BdWRpdFJ1bGVzLkNzc0luSGVhZFJ1bGUucHJvdG90eXBlID0gewogCiAgICAgICAg
IGZ1bmN0aW9uIGlubGluZVN0eWxlc1JlY2VpdmVkKHJvb3QsIG5vZGVJZHMpCiAgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChwcm9ncmVzc01vbml0b3IuY2FuY2VsZWQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCiAgICAgICAgICAgICBpZiAoIW5vZGVJZHMpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnF1ZXJ5U2VsZWN0b3JB
bGwocm9vdC5pZCwgImJvZHkgbGlua1tyZWx+PSdzdHlsZXNoZWV0J11baHJlZl0iLCBleHRlcm5h
bFN0eWxlc2hlZXRzUmVjZWl2ZWQuYmluZChudWxsLCByb290LCBub2RlSWRzKSk7CkBAIC04NDEs
NiArODc0LDkgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ3NzSW5IZWFkUnVsZS5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gb25Eb2N1bWVudEF2YWlsYWJsZShyb290KQogICAg
ICAgICB7CisgICAgICAgICAgICBpZiAocHJvZ3Jlc3NNb25pdG9yLmNhbmNlbGVkKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnF1
ZXJ5U2VsZWN0b3JBbGwocm9vdC5pZCwgImJvZHkgc3R5bGUiLCBpbmxpbmVTdHlsZXNSZWNlaXZl
ZC5iaW5kKG51bGwsIHJvb3QpKTsKICAgICAgICAgfQogCkBAIC04NjAsMTAgKzg5NiwxMyBAQCBX
ZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5TdHlsZXNTY3JpcHRzT3JkZXJSdWxlID0gZnVuY3Rpb24o
KQogfQogCiBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5TdHlsZXNTY3JpcHRzT3JkZXJSdWxlLnBy
b3RvdHlwZSA9IHsKLSAgICBkb1J1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCByZXN1bHQsIGNhbGxi
YWNrKQorICAgIGRvUnVuOiBmdW5jdGlvbihyZXNvdXJjZXMsIHJlc3VsdCwgY2FsbGJhY2ssIHBy
b2dyZXNzTW9uaXRvcikKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGV2YWxDYWxsYmFjayhyZXN1
bHRWYWx1ZSkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKHByb2dyZXNzTW9uaXRvci5jYW5j
ZWxlZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgIGlmICghcmVzdWx0
VmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpOwogCkBAIC04ODMs
NiArOTIyLDkgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuU3R5bGVzU2NyaXB0c09yZGVyUnVs
ZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gY3NzQmVmb3JlSW5saW5lUmVjZWl2
ZWQobGF0ZVN0eWxlSWRzLCBub2RlSWRzKQogICAgICAgICB7CisgICAgICAgICAgICBpZiAocHJv
Z3Jlc3NNb25pdG9yLmNhbmNlbGVkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAg
ICAgICAgaWYgKCFub2RlSWRzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtOTAzLDYg
Kzk0NSw5IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLlN0eWxlc1NjcmlwdHNPcmRlclJ1bGUu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9uIGxhdGVTdHlsZXNSZWNlaXZlZChyb290
LCBub2RlSWRzKQogICAgICAgICB7CisgICAgICAgICAgICBpZiAocHJvZ3Jlc3NNb25pdG9yLmNh
bmNlbGVkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgaWYgKCFub2Rl
SWRzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtOTExLDYgKzk1Niw5IEBAIFdlYklu
c3BlY3Rvci5BdWRpdFJ1bGVzLlN0eWxlc1NjcmlwdHNPcmRlclJ1bGUucHJvdG90eXBlID0gewog
CiAgICAgICAgIGZ1bmN0aW9uIG9uRG9jdW1lbnRBdmFpbGFibGUocm9vdCkKICAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHByb2dyZXNzTW9uaXRvci5jYW5jZWxlZCkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5xdWVyeVNlbGVj
dG9yQWxsKHJvb3QuaWQsICJoZWFkIHNjcmlwdFtzcmNdIH4gbGlua1tyZWx+PSdzdHlsZXNoZWV0
J11baHJlZl0iLCBsYXRlU3R5bGVzUmVjZWl2ZWQuYmluZChudWxsLCByb290KSk7CiAgICAgICAg
IH0KIApAQCAtOTMwLDEzICs5NzgsMTcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMuQ29va2ll
UnVsZUJhc2UgPSBmdW5jdGlvbihpZCwgbmFtZSkKIH0KIAogV2ViSW5zcGVjdG9yLkF1ZGl0UnVs
ZXMuQ29va2llUnVsZUJhc2UucHJvdG90eXBlID0gewotICAgIGRvUnVuOiBmdW5jdGlvbihyZXNv
dXJjZXMsIHJlc3VsdCwgY2FsbGJhY2spCisgICAgZG9SdW46IGZ1bmN0aW9uKHJlc291cmNlcywg
cmVzdWx0LCBjYWxsYmFjaywgcHJvZ3Jlc3NNb25pdG9yKQogICAgIHsKICAgICAgICAgdmFyIHNl
bGYgPSB0aGlzOwogICAgICAgICBmdW5jdGlvbiByZXN1bHRDYWxsYmFjayhyZWNlaXZlZENvb2tp
ZXMsIGlzQWR2YW5jZWQpIHsKKyAgICAgICAgICAgIGlmIChwcm9ncmVzc01vbml0b3IuY2FuY2Vs
ZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICBzZWxmLnByb2Nlc3ND
b29raWVzKGlzQWR2YW5jZWQgPyByZWNlaXZlZENvb2tpZXMgOiBbXSwgcmVzb3VyY2VzLCByZXN1
bHQpOwogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKICAgICAgICAgfQorCiAgICAgICAg
IFdlYkluc3BlY3Rvci5Db29raWVzLmdldENvb2tpZXNBc3luYyhyZXN1bHRDYWxsYmFjayk7CiAg
ICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRz
UGFuZWwuanMKaW5kZXggZGYyN2RhZjE5ODI4YjRlYjYxYjcwYjBhN2Q5NTViMGI2YjEwMDQ0Zi4u
ODFmZjUxNThiYTBhZDMwMjViYWQyYWMxMmNkMDk1OTViNGUyMjQ3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCkBAIC01Nyw3ICs1
Nyw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbCA9IGZ1bmN0aW9uKCkKIAogICAgIHRoaXMu
X2NvbnN0cnVjdENhdGVnb3JpZXMoKTsKIAotICAgIHRoaXMuX2xhdW5jaGVyVmlldyA9IG5ldyBX
ZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcodGhpcy5pbml0aWF0ZUF1ZGl0LmJpbmQodGhp
cykpOworICAgIHRoaXMuX2xhdW5jaGVyVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRMYXVu
Y2hlclZpZXcodGhpcy5pbml0aWF0ZUF1ZGl0LmJpbmQodGhpcyksIHRoaXMudGVybWluYXRlQXVk
aXQuYmluZCh0aGlzKSk7CiAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy5jYXRlZ29yaWVzQnlJZCkK
ICAgICAgICAgdGhpcy5fbGF1bmNoZXJWaWV3LmFkZENhdGVnb3J5KHRoaXMuY2F0ZWdvcmllc0J5
SWRbaWRdKTsKIApAQCAtMTMxLDIxICsxMzEsMjcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxl
bmd0aDsgKytpKQogICAgICAgICAgICAgcnVsZXNSZW1haW5pbmcgKz0gY2F0ZWdvcmllc1tpXS5y
dWxlQ291bnQ7CiAKKyAgICAgICAgdGhpcy5fcHJvZ3Jlc3NNb25pdG9yLnNldFRvdGFsV29yayhy
dWxlc1JlbWFpbmluZyk7CisKICAgICAgICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgICAgICAgdmFy
IG1haW5SZXNvdXJjZVVSTCA9IFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJMOwogCiAgICAg
ICAgIGZ1bmN0aW9uIHJ1bGVSZXN1bHRSZWFkeUNhbGxiYWNrKGNhdGVnb3J5UmVzdWx0LCBydWxl
UmVzdWx0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAodGhpcy5fcHJvZ3Jlc3NNb25pdG9y
LmNhbmNlbGVkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgaWYgKHJ1
bGVSZXN1bHQgJiYgcnVsZVJlc3VsdC5jaGlsZHJlbikKICAgICAgICAgICAgICAgICBjYXRlZ29y
eVJlc3VsdC5hZGRSdWxlUmVzdWx0KHJ1bGVSZXN1bHQpOwogCiAgICAgICAgICAgICAtLXJ1bGVz
UmVtYWluaW5nOworICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3NNb25pdG9yLndvcmtlZCgxKTsK
IAotICAgICAgICAgICAgaWYgKCFydWxlc1JlbWFpbmluZyAmJiByZXN1bHRDYWxsYmFjaykKKyAg
ICAgICAgICAgIGlmICh0aGlzLl9wcm9ncmVzc01vbml0b3IuaXNEb25lKCkgJiYgcmVzdWx0Q2Fs
bGJhY2spCiAgICAgICAgICAgICAgICAgcmVzdWx0Q2FsbGJhY2sobWFpblJlc291cmNlVVJMLCBy
ZXN1bHRzKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghcnVsZXNSZW1haW5pbmcpIHsKKyAg
ICAgICAgaWYgKHRoaXMuX3Byb2dyZXNzTW9uaXRvci5pc0RvbmUoKSkgewogICAgICAgICAgICAg
cmVzdWx0Q2FsbGJhY2sobWFpblJlc291cmNlVVJMLCByZXN1bHRzKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtMTU0LDcgKzE2MCw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgY2F0ZWdvcnkgPSBjYXRlZ29yaWVz
W2ldOwogICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRDYXRl
Z29yeVJlc3VsdChjYXRlZ29yeSk7CiAgICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTsK
LSAgICAgICAgICAgIGNhdGVnb3J5LnJ1bihyZXNvdXJjZXMsIHJ1bGVSZXN1bHRSZWFkeUNhbGxi
YWNrLmJpbmQobnVsbCwgcmVzdWx0KSk7CisgICAgICAgICAgICBjYXRlZ29yeS5ydW4ocmVzb3Vy
Y2VzLCBydWxlUmVzdWx0UmVhZHlDYWxsYmFjay5iaW5kKHRoaXMsIHJlc3VsdCksIHRoaXMuX3By
b2dyZXNzTW9uaXRvcik7CiAgICAgICAgIH0KICAgICB9LAogCkBAIC0xNzAsMTUgKzE3NiwxNyBA
QCBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgcmVz
dWx0VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkF1ZGl0UmVzdWx0U2lkZWJhclRyZWVF
bGVtZW50KHJlc3VsdHMsIG1haW5SZXNvdXJjZVVSTCwgb3JkaW5hbCk7CiAgICAgICAgIHRoaXMu
YXVkaXRSZXN1bHRzVHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQocmVzdWx0VHJlZUVsZW1lbnQpOwog
ICAgICAgICByZXN1bHRUcmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QoKTsKLSAgICAgICAgaWYg
KGxhdW5jaGVyQ2FsbGJhY2spCisgICAgICAgIGlmICghdGhpcy5fcHJvZ3Jlc3NNb25pdG9yLmNh
bmNlbGVkICYmIGxhdW5jaGVyQ2FsbGJhY2spCiAgICAgICAgICAgICBsYXVuY2hlckNhbGxiYWNr
KCk7CiAgICAgfSwKIAotICAgIGluaXRpYXRlQXVkaXQ6IGZ1bmN0aW9uKGNhdGVnb3J5SWRzLCBy
dW5JbW1lZGlhdGVseSwgbGF1bmNoZXJDYWxsYmFjaykKKyAgICBpbml0aWF0ZUF1ZGl0OiBmdW5j
dGlvbihjYXRlZ29yeUlkcywgcHJvZ3Jlc3NFbGVtZW50LCBydW5JbW1lZGlhdGVseSwgbGF1bmNo
ZXJDYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICghY2F0ZWdvcnlJZHMgfHwgIWNhdGVnb3J5
SWRzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICB0aGlzLl9wcm9ncmVz
c01vbml0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLkF1ZGl0UHJvZ3Jlc3NNb25pdG9yKHByb2dyZXNz
RWxlbWVudCk7CisKICAgICAgICAgdmFyIGNhdGVnb3JpZXMgPSBbXTsKICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBjYXRlZ29yeUlkcy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIGNhdGVn
b3JpZXMucHVzaCh0aGlzLmNhdGVnb3JpZXNCeUlkW2NhdGVnb3J5SWRzW2ldXSk7CkBAIC0xOTYs
NiArMjA0LDEyIEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci51c2VyTWV0cmljcy5BdWRpdHNTdGFydGVkLnJlY29yZCgpOwogICAg
IH0sCiAKKyAgICB0ZXJtaW5hdGVBdWRpdDogZnVuY3Rpb24obGF1bmNoZXJDYWxsYmFjaykKKyAg
ICB7CisgICAgICAgIHRoaXMuX3Byb2dyZXNzTW9uaXRvci5jYW5jZWxlZCA9IHRydWU7CisgICAg
ICAgIGxhdW5jaGVyQ2FsbGJhY2soKTsKKyAgICB9LAorCiAgICAgX3JlbG9hZFJlc291cmNlczog
ZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9wYWdlUmVsb2FkQ2FsbGJh
Y2sgPSBjYWxsYmFjazsKQEAgLTI5MiwxMSArMzA2LDExIEBAIFdlYkluc3BlY3Rvci5BdWRpdENh
dGVnb3J5LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcnVsZXMucHVzaChydWxlKTsKICAg
ICB9LAogCi0gICAgcnVuOiBmdW5jdGlvbihyZXNvdXJjZXMsIGNhbGxiYWNrKQorICAgIHJ1bjog
ZnVuY3Rpb24ocmVzb3VyY2VzLCBjYWxsYmFjaywgcHJvZ3Jlc3NNb25pdG9yKQogICAgIHsKICAg
ICAgICAgdGhpcy5fZW5zdXJlSW5pdGlhbGl6ZWQoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLl9ydWxlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX3J1bGVzW2ld
LnJ1bihyZXNvdXJjZXMsIGNhbGxiYWNrKTsKKyAgICAgICAgICAgIHRoaXMuX3J1bGVzW2ldLnJ1
bihyZXNvdXJjZXMsIGNhbGxiYWNrLCBwcm9ncmVzc01vbml0b3IpOwogICAgIH0sCiAKICAgICBf
ZW5zdXJlSW5pdGlhbGl6ZWQ6IGZ1bmN0aW9uKCkKQEAgLTM0NiwxNCArMzYwLDE3IEBAIFdlYklu
c3BlY3Rvci5BdWRpdFJ1bGUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zZXZlcml0eSA9
IHNldmVyaXR5OwogICAgIH0sCiAKLSAgICBydW46IGZ1bmN0aW9uKHJlc291cmNlcywgY2FsbGJh
Y2spCisgICAgcnVuOiBmdW5jdGlvbihyZXNvdXJjZXMsIGNhbGxiYWNrLCBwcm9ncmVzc01vbml0
b3IpCiAgICAgeworICAgICAgICBpZiAocHJvZ3Jlc3NNb25pdG9yLmNhbmNlbGVkKQorICAgICAg
ICAgICAgcmV0dXJuOworCiAgICAgICAgIHZhciByZXN1bHQgPSBuZXcgV2ViSW5zcGVjdG9yLkF1
ZGl0UnVsZVJlc3VsdCh0aGlzLmRpc3BsYXlOYW1lKTsKICAgICAgICAgcmVzdWx0LnNldmVyaXR5
ID0gdGhpcy5fc2V2ZXJpdHk7Ci0gICAgICAgIHRoaXMuZG9SdW4ocmVzb3VyY2VzLCByZXN1bHQs
IGNhbGxiYWNrKTsKKyAgICAgICAgdGhpcy5kb1J1bihyZXNvdXJjZXMsIHJlc3VsdCwgY2FsbGJh
Y2ssIHByb2dyZXNzTW9uaXRvcik7CiAgICAgfSwKIAotICAgIGRvUnVuOiBmdW5jdGlvbihyZXNv
dXJjZXMsIHJlc3VsdCwgY2FsbGJhY2spCisgICAgZG9SdW46IGZ1bmN0aW9uKHJlc291cmNlcywg
cmVzdWx0LCBjYWxsYmFjaywgcHJvZ3Jlc3NNb25pdG9yKQogICAgIHsKICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJkb1J1bigpIG5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0KQEAgLTQ2MCw2ICs0
NzcsNjcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3VsdC5wcm90b3R5cGUgPSB7CiAKIC8q
KgogICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge0VsZW1lbnR9IHByb2dyZXNzRWxlbWVudAor
ICovCitXZWJJbnNwZWN0b3IuQXVkaXRQcm9ncmVzc01vbml0b3IgPSBmdW5jdGlvbihwcm9ncmVz
c0VsZW1lbnQpCit7CisgICAgdGhpcy5fZWxlbWVudCA9IHByb2dyZXNzRWxlbWVudDsKKyAgICB0
aGlzLnNldFRvdGFsV29yayhXZWJJbnNwZWN0b3IuQXVkaXRQcm9ncmVzc01vbml0b3IuSU5ERVRF
Uk1JTkFURSk7Cit9CisKK1dlYkluc3BlY3Rvci5BdWRpdFByb2dyZXNzTW9uaXRvci5JTkRFVEVS
TUlOQVRFID0gLTE7CisKK1dlYkluc3BlY3Rvci5BdWRpdFByb2dyZXNzTW9uaXRvci5wcm90b3R5
cGUgPSB7CisgICAgc2V0VG90YWxXb3JrOiBmdW5jdGlvbih0b3RhbCkKKyAgICB7CisgICAgICAg
IGlmICh0aGlzLmNhbmNlbGVkIHx8IHRoaXMuX3RvdGFsID09PSB0b3RhbCkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgdGhpcy5fdG90YWwgPSB0b3RhbDsKKyAgICAgICAgdGhpcy5fdmFs
dWUgPSAwOworICAgICAgICB0aGlzLl9lbGVtZW50Lm1heCA9IHRvdGFsOworICAgICAgICBpZiAo
dG90YWwgPT09IFdlYkluc3BlY3Rvci5BdWRpdFByb2dyZXNzTW9uaXRvci5JTkRFVEVSTUlOQVRF
KQorICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoInZhbHVlIik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQudmFsdWUgPSAwOworICAgIH0s
CisKKyAgICB3b3JrZWQ6IGZ1bmN0aW9uKGl0ZW1zKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
Y2FuY2VsZWQgfHwgdGhpcy5pbmRldGVybWluYXRlIHx8IHRoaXMuaXNEb25lKCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3ZhbHVlICs9IGl0ZW1zOworICAgICAgICBpZiAo
dGhpcy5fdmFsdWUgPiB0aGlzLl90b3RhbCkKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhp
cy5fdG90YWw7CisgICAgICAgIHRoaXMuX2VsZW1lbnQudmFsdWUgPSB0aGlzLl92YWx1ZTsKKyAg
ICB9LAorCisgICAgZ2V0IGluZGV0ZXJtaW5hdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3RvdGFsID09PSBXZWJJbnNwZWN0b3IuQXVkaXRQcm9ncmVzc01vbml0b3IuSU5ERVRFUk1J
TkFURTsKKyAgICB9LAorCisgICAgaXNEb25lOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBy
ZXR1cm4gIXRoaXMuaW5kZXRlcm1pbmF0ZSAmJiAodGhpcy5jYW5jZWxlZCB8fCB0aGlzLl92YWx1
ZSA9PT0gdGhpcy5fdG90YWwpOworICAgIH0sCisKKyAgICBnZXQgY2FuY2VsZWQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuICEhdGhpcy5fY2FuY2VsZWQ7CisgICAgfSwKKworICAgIHNldCBjYW5j
ZWxlZCh4KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2NhbmNlbGVkID09PSB4KQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBpZiAoeCkKKyAgICAgICAgICAgIHRoaXMuc2V0VG90YWxX
b3JrKFdlYkluc3BlY3Rvci5BdWRpdFByb2dyZXNzTW9uaXRvci5JTkRFVEVSTUlOQVRFKTsKKyAg
ICAgICAgdGhpcy5fY2FuY2VsZWQgPSB4OworICAgIH0KK30KKworLyoqCisgKiBAY29uc3RydWN0
b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuU2lkZWJhclRyZWVFbGVtZW50fQogICovCiBX
ZWJJbnNwZWN0b3IuQXVkaXRzU2lkZWJhclRyZWVFbGVtZW50ID0gZnVuY3Rpb24oKQo=
</data>
<flag name="review"
          id="117450"
          type_id="1"
          status="+"
          setter="yurys"
    />
    <flag name="commit-queue"
          id="117456"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>