<?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>31291</bug_id>
          
          <creation_ts>2009-11-10 06:30:45 -0800</creation_ts>
          <short_desc>Web Inspector: Speed up syntax highlighter</short_desc>
          <delta_ts>2009-11-10 13:04: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>0</everconfirmed>
          <reporter name="Keishi Hattori">keishi</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>162029</commentid>
    <comment_count>0</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-11-10 06:30:45 -0800</bug_when>
    <thetext>I discovered that DocumentFragment is much slower than using Node when it has many childNodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162047</commentid>
    <comment_count>1</comment_count>
      <attachid>42865</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-11-10 07:52:46 -0800</bug_when>
    <thetext>Created attachment 42865
proposed patch

Removed use of DocumentFragment. Chromium scrolls like butter even while syntax highlighting huge minified files. 

WebKit Nightly is not much faster. The DOM performance issue occurs for Node.appendChild(Node) too.
https://bugs.webkit.org/show_bug.cgi?id=31237
We can bump up the line length limit when this is resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162069</commentid>
    <comment_count>2</comment_count>
      <attachid>42865</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-10 09:26:36 -0800</bug_when>
    <thetext>Comment on attachment 42865
proposed patch

&gt; -                while (node.firstChild)
&gt; -                    node.removeChild(node.firstChild);

Why isn&apos;t this needed in the loop anymore? (I see removeChildren was added outside the loop.)


&gt; -                this.lineFragment =null;
&gt; +                this.newLine =null;

Add a space before null.


&gt; -        action: identOrKeywordAction,
&gt; -        dontAppendNonToken: true
&gt; +        action: identOrKeywordAction

Why this change?

r- for the missing space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162070</commentid>
    <comment_count>3</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-11-10 09:26:57 -0800</bug_when>
    <thetext>Did you file WebCore bugs about the slow downs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162079</commentid>
    <comment_count>4</comment_count>
      <attachid>42871</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-11-10 09:59:42 -0800</bug_when>
    <thetext>Created attachment 42871
proposed patch 2

(In reply to comment #2)
&gt; (From update of attachment 42865 [details])
&gt; &gt; -                while (node.firstChild)
&gt; &gt; -                    node.removeChild(node.firstChild);
&gt; 
&gt; Why isn&apos;t this needed in the loop anymore? (I see removeChildren was added
&gt; outside the loop.)

I removeChildren before the loop and use that directly for this.newLine, eliminating the need for a intermediate node.

&gt; &gt; -                this.lineFragment =null;
&gt; &gt; +                this.newLine =null;
&gt; 
&gt; Add a space before null.

Fixed.

&gt; &gt; -        action: identOrKeywordAction,
&gt; &gt; -        dontAppendNonToken: true
&gt; &gt; +        action: identOrKeywordAction
&gt; 
&gt; Why this change?

I fixed a mistake here. 
I was going to treat ident as a non-token so dontAppendNonToken was set to true to cut down on the number of TextNodes. 
However the current code treats both ident and keyword as proper tokens. So I removed the two &quot;this.appendNonToken();&quot;  from identOrKeywordAction and set dontAppendNonToken to false so this.appendNonToken will get called inside lex().

&gt; Did you file WebCore bugs about the slow downs?

I filed Bug 31237. I&apos;ll try to add some more data and a reduced test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162183</commentid>
    <comment_count>5</comment_count>
      <attachid>42871</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-10 13:04:14 -0800</bug_when>
    <thetext>Comment on attachment 42871
proposed patch 2

Clearing flags on attachment: 42871

Committed r50755: &lt;http://trac.webkit.org/changeset/50755&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162184</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-10 13:04:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42865</attachid>
            <date>2009-11-10 07:52:46 -0800</date>
            <delta_ts>2009-11-10 09:59:42 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>speedup.diff</filename>
            <type>text/plain</type>
            <size>18543</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDczNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMTEtMTAgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogU3BlZWQgdXAgc3ludGF4IGhpZ2hsaWdodGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTI5MQorCisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuX2xvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU291cmNlU3ludGF4SGlnaGxpZ2h0ZXIucHJvdG90eXBlLnByb2Nlc3MubW92ZVRvTmV4dExp
bmUpOiBSZXBsYWNlIHRoZSBsaW5lIGNvbnRlbnQgbm9kZS4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Tb3VyY2VTeW50YXhIaWdobGlnaHRlci5wcm90b3R5cGUucHJvY2Vzcyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU291cmNlU3ludGF4SGlnaGxpZ2h0ZXIucHJvdG90eXBlLmFwcGVuZE5vblRv
a2VuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VTeW50YXhIaWdobGlnaHRlci5wcm90
b3R5cGUuc3ludGF4SGlnaGxpZ2h0Tm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU291
cmNlU3ludGF4SGlnaGxpZ2h0ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRT
b3VyY2VTeW50YXhIaWdobGlnaHRlcik6CisKIDIwMDktMTEtMTAgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwkocmV2
aXNpb24gNTA3MzcpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUu
anMJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw2ICsyNjQsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNl
RnJhbWUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jb250ZW50V2luZG93
LkVsZW1lbnQucHJvdG90eXBlLmFkZFN0eWxlQ2xhc3MgPSBFbGVtZW50LnByb3RvdHlwZS5hZGRT
dHlsZUNsYXNzOwogICAgICAgICB0aGlzLmVsZW1lbnQuY29udGVudFdpbmRvdy5FbGVtZW50LnBy
b3RvdHlwZS5yZW1vdmVTdHlsZUNsYXNzID0gRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlU3R5bGVD
bGFzczsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNvbnRlbnRXaW5kb3cuRWxlbWVudC5wcm90b3R5
cGUucmVtb3ZlQ2hpbGRyZW4gPSBFbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbjsKICAg
ICAgICAgdGhpcy5lbGVtZW50LmNvbnRlbnRXaW5kb3cuRWxlbWVudC5wcm90b3R5cGUucG9zaXRp
b25BdCA9IEVsZW1lbnQucHJvdG90eXBlLnBvc2l0aW9uQXQ7CiAgICAgICAgIHRoaXMuZWxlbWVu
dC5jb250ZW50V2luZG93LkVsZW1lbnQucHJvdG90eXBlLnJlbW92ZU1hdGNoaW5nU3R5bGVDbGFz
c2VzID0gRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlTWF0Y2hpbmdTdHlsZUNsYXNzZXM7CiAgICAg
ICAgIHRoaXMuZWxlbWVudC5jb250ZW50V2luZG93LkVsZW1lbnQucHJvdG90eXBlLmhhc1N0eWxl
Q2xhc3MgPSBFbGVtZW50LnByb3RvdHlwZS5oYXNTdHlsZUNsYXNzOwpAQCAtNzkyLDEzICs3OTMs
MTYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZVN5bnRheEhpZ2hsaWdodGVyLnBybwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICB2YXIgcm93ID0gcm93c1t0aGlzLmxpbmVJbmRleF07CiAgICAgICAg
ICAgICB2YXIgbGluZSA9IHJvdyA/IHJvdy5jZWxsc1sxXSA6IG51bGw7Ci0gICAgICAgICAgICBp
ZiAobGluZSAmJiB0aGlzLmxpbmVGcmFnbWVudCkgewotICAgICAgICAgICAgICAgIEVsZW1lbnQu
cHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuLmNhbGwobGluZSk7CisgICAgICAgICAgICBpZiAobGlu
ZSAmJiB0aGlzLm5ld0xpbmUpIHsKKyAgICAgICAgICAgICAgICBsaW5lLnJlbW92ZUNoaWxkcmVu
KCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbGluZS5hcHBlbmRDaGlsZCh0
aGlzLmxpbmVGcmFnbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWVzc2FnZUJ1YmJs
ZSkKLSAgICAgICAgICAgICAgICAgICAgbGluZS5hcHBlbmRDaGlsZCh0aGlzLm1lc3NhZ2VCdWJi
bGUpOwotICAgICAgICAgICAgICAgIHRoaXMubGluZUZyYWdtZW50ID0gbnVsbDsKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxkKHRoaXMubWVzc2FnZUJ1YmJsZSk7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbGluZS5wYXJlbnROb2RlLmluc2Vy
dEJlZm9yZSh0aGlzLm5ld0xpbmUsIGxpbmUpOworICAgICAgICAgICAgICAgIGxpbmUucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZChsaW5lKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICB0aGlzLm5ld0xpbmUgPSBudWxsOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdGhpcy5s
aW5lSW5kZXgrKzsKICAgICAgICAgICAgIGlmICh0aGlzLmxpbmVJbmRleCA+PSByb3dzTGVuZ3Ro
ICYmIHByb2Nlc3NDaHVua0ludGVydmFsKSB7CkBAIC04MTYsNyArODIwLDcgQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZVN5bnRheEhpZ2hsaWdodGVyLnBybwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICB0aGlzLmxpbmVDb2RlID0gbGluZS50ZXh0Q29udGVudDsKLSAgICAgICAgICAgIHRoaXMu
bGluZUZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgICAg
ICAgICAgdGhpcy5uZXdMaW5lID0gbGluZS5jbG9uZU5vZGUoZmFsc2UpOwogICAgICAgICAgICAg
dGhpcy5jdXJzb3IgPSAwOwogICAgICAgICAgICAgaWYgKCFsaW5lKQogICAgICAgICAgICAgICAg
IG1vdmVUb05leHRMaW5lKCk7CkBAIC04NTIsNyArODU2LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZVN5bnRheEhpZ2hsaWdodGVyLnBybwogICAgIGFwcGVuZE5vblRva2VuOiBmdW5jdGlvbiAoKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMubm9uVG9rZW4ubGVuZ3RoID4gMCkgewotICAgICAgICAg
ICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
dGhpcy5ub25Ub2tlbikpOworICAgICAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMubm9uVG9rZW4pKTsKICAgICAgICAgICAgIHRoaXMu
bm9uVG9rZW4gPSAiIjsKICAgICAgICAgfQogICAgIH0sCkBAIC04NjAsNyArODY0LDggQEAgV2Vi
SW5zcGVjdG9yLlNvdXJjZVN5bnRheEhpZ2hsaWdodGVyLnBybwogICAgIHN5bnRheEhpZ2hsaWdo
dE5vZGU6IGZ1bmN0aW9uKG5vZGUpCiAgICAgewogICAgICAgICB0aGlzLmxpbmVDb2RlID0gbm9k
ZS50ZXh0Q29udGVudDsKLSAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQgPSBkb2N1bWVudC5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGRyZW4oKTsKKyAg
ICAgICAgdGhpcy5uZXdMaW5lID0gbm9kZTsKICAgICAgICAgdGhpcy5jdXJzb3IgPSAwOwogICAg
ICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yID49IHRoaXMu
bGluZUNvZGUubGVuZ3RoKSB7CkBAIC04NjgsMTAgKzg3Myw3IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VTeW50YXhIaWdobGlnaHRlci5wcm8KICAgICAgICAgICAgICAgICB0aGlzLm5vblRva2VuICs9
IGNvZGVGcmFnbWVudDsKICAgICAgICAgICAgICAgICB0aGlzLmN1cnNvciArPSBjb2RlRnJhZ21l
bnQubGVuZ3RoOwogICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kTm9uVG9rZW4oKTsKLSAgICAg
ICAgICAgICAgICB3aGlsZSAobm9kZS5maXJzdENoaWxkKQotICAgICAgICAgICAgICAgICAgICBu
b2RlLnJlbW92ZUNoaWxkKG5vZGUuZmlyc3RDaGlsZCk7Ci0gICAgICAgICAgICAgICAgbm9kZS5h
cHBlbmRDaGlsZCh0aGlzLmxpbmVGcmFnbWVudCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5saW5l
RnJhZ21lbnQgPW51bGw7CisgICAgICAgICAgICAgICAgdGhpcy5uZXdMaW5lID1udWxsOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtOTAwLDcgKzkwMiw3IEBA
IFdlYkluc3BlY3Rvci5DU1NTb3VyY2VTeW50YXhIaWdobGlnaHRlciAKICAgICB0aGlzLmN1cnNv
ciA9IDA7CiAgICAgdGhpcy5saW5lSW5kZXggPSAtMTsKICAgICB0aGlzLmxpbmVDb2RlID0gIiI7
Ci0gICAgdGhpcy5saW5lRnJhZ21lbnQgPSBudWxsOworICAgIHRoaXMubmV3TGluZSA9IG51bGw7
CiAgICAgdGhpcy5sZXhTdGF0ZSA9IHRoaXMuTGV4U3RhdGUuSW5pdGlhbDsKICAgICB0aGlzLmNv
bnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuTm9uZTsKICAgICAKQEAgLTEwNDAsMzMg
KzEwNDIsMzMgQEAgV2ViSW5zcGVjdG9yLkNTU1NvdXJjZVN5bnRheEhpZ2hsaWdodGVyIAogICAg
IGZ1bmN0aW9uIGNvbW1lbnRBY3Rpb24odG9rZW4pCiAgICAgewogICAgICAgICB0aGlzLmN1cnNv
ciArPSB0b2tlbi5sZW5ndGg7Ci0gICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxk
KHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1jc3MtY29tbWVudCIpKTsKKyAgICAgICAg
dGhpcy5uZXdMaW5lLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1j
c3MtY29tbWVudCIpKTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gY29tbWVudFN0YXJ0QWN0
aW9uKHRva2VuKQogICAgIHsKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwot
ICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9r
ZW4sICJ3ZWJraXQtY3NzLWNvbW1lbnQiKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5hcHBlbmRD
aGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtY3NzLWNvbW1lbnQiKSk7CiAgICAg
ICAgIHRoaXMuY29udGludWVTdGF0ZSA9IHRoaXMuQ29udGludWVTdGF0ZS5Db21tZW50OwogICAg
IH0KICAgICAKICAgICBmdW5jdGlvbiBjb21tZW50RW5kQWN0aW9uKHRva2VuKQogICAgIHsKICAg
ICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwotICAgICAgICB0aGlzLmxpbmVGcmFn
bWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtY3NzLWNvbW1l
bnQiKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4o
dG9rZW4sICJ3ZWJraXQtY3NzLWNvbW1lbnQiKSk7CiAgICAgICAgIHRoaXMuY29udGludWVTdGF0
ZSA9IHRoaXMuQ29udGludWVTdGF0ZS5Ob25lOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGNvbW1l
bnRNaWRkbGVBY3Rpb24odG9rZW4pCiAgICAgewogICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tl
bi5sZW5ndGg7Ci0gICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3Jl
YXRlU3Bhbih0b2tlbiwgIndlYmtpdC1jc3MtY29tbWVudCIpKTsKKyAgICAgICAgdGhpcy5uZXdM
aW5lLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1jc3MtY29tbWVu
dCIpKTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gc2VsZWN0b3JBY3Rpb24odG9rZW4pCiAg
ICAgewogICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0gICAgICAgIHRoaXMu
bGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1j
c3Mtc2VsZWN0b3IiKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5hcHBlbmRDaGlsZCh0aGlzLmNy
ZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtY3NzLXNlbGVjdG9yIikpOwogICAgIH0KICAgICAKICAg
ICBmdW5jdGlvbiBzdGFydFJ1bGVzZXRCbG9ja0FjdGlvbih0b2tlbikKQEAgLTEzMzAsNyArMTMz
Miw3IEBAIFdlYkluc3BlY3Rvci5DU1NTb3VyY2VTeW50YXhIaWdobGlnaHRlciAKICAgICAgICAg
dGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwogICAgICAgICBpZiAodG9rZW4gaW4gcHJvcGVy
dHlLZXl3b3JkcykgewogICAgICAgICAgICAgdGhpcy5hcHBlbmROb25Ub2tlbi5jYWxsKHRoaXMp
OwotICAgICAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVT
cGFuKHRva2VuLCAid2Via2l0LWNzcy1wcm9wZXJ0eSIpKTsKKyAgICAgICAgICAgIHRoaXMubmV3
TGluZS5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtY3NzLXByb3Bl
cnR5IikpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRoaXMubm9uVG9rZW4gKz0gdG9r
ZW47CiAgICAgfQpAQCAtMTczMCw3ICsxNzMyLDcgQEAgV2ViSW5zcGVjdG9yLkNTU1NvdXJjZVN5
bnRheEhpZ2hsaWdodGVyIAogICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7CiAg
ICAgICAgIGlmICh0b2tlbiBpbiB2YWx1ZUtleXdvcmRzKSB7CiAgICAgICAgICAgICB0aGlzLmFw
cGVuZE5vblRva2VuLmNhbGwodGhpcyk7Ci0gICAgICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5h
cHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtY3NzLWtleXdvcmQiKSk7
CisgICAgICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRv
a2VuLCAid2Via2l0LWNzcy1rZXl3b3JkIikpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IHRoaXMubm9uVG9rZW4gKz0gdG9rZW47CiAgICAgfQpAQCAtMTczOCw3ICsxNzQwLDcgQEAgV2Vi
SW5zcGVjdG9yLkNTU1NvdXJjZVN5bnRheEhpZ2hsaWdodGVyIAogICAgIGZ1bmN0aW9uIG51bXZh
bHVlQWN0aW9uKHRva2VuKQogICAgIHsKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVu
Z3RoOwotICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNw
YW4odG9rZW4sICJ3ZWJraXQtY3NzLW51bWJlciIpKTsKKyAgICAgICAgdGhpcy5uZXdMaW5lLmFw
cGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1jc3MtbnVtYmVyIikpOwog
ICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBkZWNsYXJhdGlvblNlbWljb2xvbkFjdGlvbih0b2tl
bikKQEAgLTE3NTEsMzEgKzE3NTMsMzEgQEAgV2ViSW5zcGVjdG9yLkNTU1NvdXJjZVN5bnRheEhp
Z2hsaWdodGVyIAogICAgIGZ1bmN0aW9uIHVybEFjdGlvbih0b2tlbikKICAgICB7CiAgICAgICAg
IHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQu
YXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWNzcy11cmwiKSk7Cisg
ICAgICAgIHRoaXMubmV3TGluZS5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3
ZWJraXQtY3NzLXVybCIpKTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gc3RyaW5nQWN0aW9u
KHRva2VuKQogICAgIHsKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwotICAg
ICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4s
ICJ3ZWJraXQtY3NzLXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxk
KHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1jc3Mtc3RyaW5nIikpOwogICAgIH0KICAg
ICAKICAgICBmdW5jdGlvbiBjb2xvckFjdGlvbih0b2tlbikKICAgICB7CiAgICAgICAgIHRoaXMu
Y3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5k
Q2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWNzcy1jb2xvciIpKTsKKyAgICAg
ICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtp
dC1jc3MtY29sb3IiKSk7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIGltcG9ydGFudEFjdGlv
bih0b2tlbikKICAgICB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAg
ICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2Vu
LCAid2Via2l0LWNzcy1pbXBvcnRhbnQiKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5hcHBlbmRD
aGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtY3NzLWltcG9ydGFudCIpKTsKICAg
ICB9CiAgICAgCiAgICAgZnVuY3Rpb24gYXRNZWRpYUFjdGlvbih0b2tlbikKICAgICB7CiAgICAg
ICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAgICAgICAgdGhpcy5saW5lRnJhZ21l
bnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWNzcy1hdC1ydWxl
IikpOworICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRv
a2VuLCAid2Via2l0LWNzcy1hdC1ydWxlIikpOwogICAgICAgICB0aGlzLmxleFN0YXRlID0gdGhp
cy5MZXhTdGF0ZS5BdE1lZGlhOwogICAgIH0KICAgICAKQEAgLTE3ODksNyArMTc5MSw3IEBAIFdl
Ykluc3BlY3Rvci5DU1NTb3VyY2VTeW50YXhIaWdobGlnaHRlciAKICAgICBmdW5jdGlvbiBhdEtl
eWZyYW1lc0FjdGlvbih0b2tlbikKICAgICB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2Vu
Lmxlbmd0aDsKLSAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVh
dGVTcGFuKHRva2VuLCAid2Via2l0LWNzcy1hdC1ydWxlIikpOworICAgICAgICB0aGlzLm5ld0xp
bmUuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWNzcy1hdC1ydWxl
IikpOwogICAgICAgICB0aGlzLmxleFN0YXRlID0gdGhpcy5MZXhTdGF0ZS5BdEtleWZyYW1lczsK
ICAgICB9CiAgICAgCkBAIC0xODAyLDcgKzE4MDQsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU291cmNl
U3ludGF4SGlnaGxpZ2h0ZXIgCiAgICAgCiAgICAgZnVuY3Rpb24gYXRSdWxlQWN0aW9uKHRva2Vu
KSB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAgICAgICAgdGhpcy5s
aW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWNz
cy1hdC1ydWxlIikpOworICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5kQ2hpbGQodGhpcy5jcmVh
dGVTcGFuKHRva2VuLCAid2Via2l0LWNzcy1hdC1ydWxlIikpOwogICAgICAgICB0aGlzLmxleFN0
YXRlID0gdGhpcy5MZXhTdGF0ZS5BdFJ1bGU7CiAgICAgfQogICAgIApAQCAtMTgyNiw3ICsxODI4
LDcgQEAgV2ViSW5zcGVjdG9yLkNTU1NvdXJjZVN5bnRheEhpZ2hsaWdodGVyIAogICAgICAgICAg
ICAgdGhpcy5ub25Ub2tlbiArPSB0b2tlbjsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB0
aGlzLmFwcGVuZE5vblRva2VuLmNhbGwodGhpcyk7Ci0gICAgICAgICAgICB0aGlzLmxpbmVGcmFn
bWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtY3NzLWtleXdv
cmQiKSk7CisgICAgICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVT
cGFuKHRva2VuLCAid2Via2l0LWNzcy1rZXl3b3JkIikpOwogICAgICAgICB9CiAgICAgfQogfQpA
QCAtMTg1Miw3ICsxODU0LDcgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VTeW50YXhI
aWdobAogICAgIHRoaXMuY3Vyc29yID0gMDsKICAgICB0aGlzLmxpbmVJbmRleCA9IC0xOwogICAg
IHRoaXMubGluZUNvZGUgPSAiIjsKLSAgICB0aGlzLmxpbmVGcmFnbWVudCA9IG51bGw7CisgICAg
dGhpcy5uZXdMaW5lID0gbnVsbDsKICAgICB0aGlzLmxleFN0YXRlID0gdGhpcy5MZXhTdGF0ZS5J
bml0aWFsOwogICAgIHRoaXMuY29udGludWVTdGF0ZSA9IHRoaXMuQ29udGludWVTdGF0ZS5Ob25l
OwogICAgIApAQCAtMTkwMyw4ICsxOTA1LDcgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3Vy
Y2VTeW50YXhIaWdobAogICAgICAgICBjb250aW51ZVN0YXRlQ29uZGl0aW9uOiB0aGlzLkNvbnRp
bnVlU3RhdGUuRG91YmxlUXVvdGVTdHJpbmcKICAgICB9LCB7CiAgICAgICAgIHBhdHRlcm46IC9e
KD86KD86W2EtekEtWl18WyRfXXxcXCg/OnVbMC05YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEt
Rl1bMC05YS1mQS1GXSkpKD86KD86W2EtekEtWl18WyRfXXxcXCg/OnVbMC05YS1mQS1GXVswLTlh
LWZBLUZdWzAtOWEtZkEtRl1bMC05YS1mQS1GXSkpfFswLTldKSopLywKLSAgICAgICAgYWN0aW9u
OiBpZGVudE9yS2V5d29yZEFjdGlvbiwKLSAgICAgICAgZG9udEFwcGVuZE5vblRva2VuOiB0cnVl
CisgICAgICAgIGFjdGlvbjogaWRlbnRPcktleXdvcmRBY3Rpb24KICAgICB9LCB7CiAgICAgICAg
IHBhdHRlcm46IC9eXCkvLAogICAgICAgICBhY3Rpb246IHJpZ2h0UGFyZW5BY3Rpb24sCkBAIC0x
OTM3LDEzMCArMTkzOCwxNjcgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VTeW50YXhI
aWdobAogICAgIGZ1bmN0aW9uIHNpbmdsZUxpbmVDb21tZW50QWN0aW9uKHRva2VuKQogICAgIHsK
ICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwotICAgICAgICB0aGlzLmxpbmVG
cmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNj
cmlwdC1jb21tZW50IikpOworICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5kQ2hpbGQodGhpcy5j
cmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtY29tbWVudCIpKTsKICAgICB9CiAg
ICAgCiAgICAgZnVuY3Rpb24gbXVsdGlMaW5lU2luZ2xlTGluZUNvbW1lbnRBY3Rpb24odG9rZW4p
CiAgICAgewogICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0gICAgICAgIHRo
aXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtp
dC1qYXZhc2NyaXB0LWNvbW1lbnQiKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5hcHBlbmRDaGls
ZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50IikpOwog
ICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBtdWx0aUxpbmVDb21tZW50U3RhcnRBY3Rpb24odG9r
ZW4pCiAgICAgewogICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0gICAgICAg
IHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndl
YmtpdC1qYXZhc2NyaXB0LWNvbW1lbnQiKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5hcHBlbmRD
aGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50Iikp
OwogICAgICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuQ29tbWVu
dDsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gbXVsdGlMaW5lQ29tbWVudEVuZEFjdGlvbih0
b2tlbikKICAgICB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAgICAg
ICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAi
d2Via2l0LWphdmFzY3JpcHQtY29tbWVudCIpKTsKKyAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVu
ZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LWNvbW1lbnQi
KSk7CiAgICAgICAgIHRoaXMuY29udGludWVTdGF0ZSA9IHRoaXMuQ29udGludWVTdGF0ZS5Ob25l
OwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBtdWx0aUxpbmVDb21tZW50TWlkZGxlQWN0aW9u
KHRva2VuKQogICAgIHsKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwotICAg
ICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4s
ICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50IikpOworICAgICAgICB0aGlzLm5ld0xpbmUuYXBw
ZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtY29tbWVu
dCIpKTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gbnVtZXJpY0xpdGVyYWxBY3Rpb24odG9r
ZW4pCiAgICAgewogICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0gICAgICAg
IHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndl
YmtpdC1qYXZhc2NyaXB0LW51bWJlciIpKTsKKyAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENo
aWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LW51bWJlciIpKTsK
ICAgICAgICAgdGhpcy5sZXhTdGF0ZSA9IHRoaXMuTGV4U3RhdGUuRGl2aXNpb25BbGxvd2VkOwog
ICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBzdHJpbmdMaXRlcmFsQWN0aW9uKHRva2VuKQogICAg
IHsKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwotICAgICAgICB0aGlzLmxp
bmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2
YXNjcmlwdC1zdHJpbmciKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5hcHBlbmRDaGlsZCh0aGlz
LmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CiAgICAgICAg
IHRoaXMubGV4U3RhdGUgPSB0aGlzLkxleFN0YXRlLkluaXRpYWw7CiAgICAgfQogICAgIAogICAg
IGZ1bmN0aW9uIHNpbmdsZVF1b3RlU3RyaW5nU3RhcnRBY3Rpb24odG9rZW4pCiAgICAgewogICAg
ICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0gICAgICAgIHRoaXMubGluZUZyYWdt
ZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0
LXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRl
U3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKICAgICAgICAgdGhpcy5j
b250aW51ZVN0YXRlID0gdGhpcy5Db250aW51ZVN0YXRlLlNpbmdsZVF1b3RlU3RyaW5nOwogICAg
IH0KICAgICAKICAgICBmdW5jdGlvbiBzaW5nbGVRdW90ZVN0cmluZ0VuZEFjdGlvbih0b2tlbikK
ICAgICB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAgICAgICAgdGhp
cy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0
LWphdmFzY3JpcHQtc3RyaW5nIikpOworICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5kQ2hpbGQo
dGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIikpOwogICAg
ICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuTm9uZTsKICAgICB9
CiAgICAgCiAgICAgZnVuY3Rpb24gc2luZ2xlUXVvdGVTdHJpbmdNaWRkbGVBY3Rpb24odG9rZW4p
CiAgICAgewogICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0gICAgICAgIHRo
aXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtp
dC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxk
KHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKICAg
ICB9CiAgICAgCiAgICAgZnVuY3Rpb24gZG91YmxlUXVvdGVTdHJpbmdTdGFydEFjdGlvbih0b2tl
bikKICAgICB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAgICAgICAg
dGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Vi
a2l0LWphdmFzY3JpcHQtc3RyaW5nIikpOworICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5kQ2hp
bGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIikpOwog
ICAgICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuRG91YmxlUXVv
dGVTdHJpbmc7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIGRvdWJsZVF1b3RlU3RyaW5nRW5k
QWN0aW9uKHRva2VuKQogICAgIHsKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3Ro
OwotICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4o
dG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CisgICAgICAgIHRoaXMubmV3TGlu
ZS5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1z
dHJpbmciKSk7CiAgICAgICAgIHRoaXMuY29udGludWVTdGF0ZSA9IHRoaXMuQ29udGludWVTdGF0
ZS5Ob25lOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBkb3VibGVRdW90ZVN0cmluZ01pZGRs
ZUFjdGlvbih0b2tlbikKICAgICB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0
aDsKLSAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFu
KHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIikpOworICAgICAgICB0aGlzLm5ld0xp
bmUuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQt
c3RyaW5nIikpOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiByZWdFeHBMaXRlcmFsQWN0aW9u
KHRva2VuKQogICAgIHsKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwotICAg
ICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4s
ICJ3ZWJraXQtamF2YXNjcmlwdC1yZWdleHAiKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5hcHBl
bmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1yZWdleHAi
KSk7CiAgICAgICAgIHRoaXMubGV4U3RhdGUgPSB0aGlzLkxleFN0YXRlLkluaXRpYWw7CiAgICAg
fQogCiAgICAgZnVuY3Rpb24gcmVnRXhwU3RhcnRBY3Rpb24odG9rZW4pCiAgICAgewogICAgICAg
ICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0gICAgICAgIHRoaXMubGluZUZyYWdtZW50
LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXJl
Z2V4cCIpKTsKKyAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bh
bih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCIpKTsKICAgICAgICAgdGhpcy5jb250
aW51ZVN0YXRlID0gdGhpcy5Db250aW51ZVN0YXRlLlJlZ0V4cDsKICAgICB9CiAKICAgICBmdW5j
dGlvbiByZWdFeHBFbmRBY3Rpb24odG9rZW4pCiAgICAgewogICAgICAgICB0aGlzLmN1cnNvciAr
PSB0b2tlbi5sZW5ndGg7Ci0gICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRo
aXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXJlZ2V4cCIpKTsKKyAgICAg
ICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtp
dC1qYXZhc2NyaXB0LXJlZ2V4cCIpKTsKICAgICAgICAgdGhpcy5jb250aW51ZVN0YXRlID0gdGhp
cy5Db250aW51ZVN0YXRlLk5vbmU7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcmVnRXhwTWlkZGxl
QWN0aW9uKHRva2VuKQogICAgIHsKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3Ro
OwotICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4o
dG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1yZWdleHAiKSk7CisgICAgICAgIHRoaXMubmV3TGlu
ZS5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1y
ZWdleHAiKSk7CiAgICAgfQogICAgIAorICAgIGNvbnN0IGtleXdvcmRzID0geworICAgICAgICAi
bnVsbCI6IHRydWUsCisgICAgICAgICJ0cnVlIjogdHJ1ZSwKKyAgICAgICAgImZhbHNlIjogdHJ1
ZSwKKyAgICAgICAgImJyZWFrIjogdHJ1ZSwKKyAgICAgICAgImNhc2UiOiB0cnVlLAorICAgICAg
ICAiY2F0Y2giOiB0cnVlLAorICAgICAgICAiY29uc3QiOiB0cnVlLAorICAgICAgICAiZGVmYXVs
dCI6IHRydWUsCisgICAgICAgICJmaW5hbGx5IjogdHJ1ZSwKKyAgICAgICAgImZvciI6IHRydWUs
CisgICAgICAgICJpbnN0YW5jZW9mIjogdHJ1ZSwKKyAgICAgICAgIm5ldyI6IHRydWUsCisgICAg
ICAgICJ2YXIiOiB0cnVlLAorICAgICAgICAiY29udGludWUiOiB0cnVlLAorICAgICAgICAiZnVu
Y3Rpb24iOiB0cnVlLAorICAgICAgICAicmV0dXJuIjogdHJ1ZSwKKyAgICAgICAgInZvaWQiOiB0
cnVlLAorICAgICAgICAiZGVsZXRlIjogdHJ1ZSwKKyAgICAgICAgImlmIjogdHJ1ZSwKKyAgICAg
ICAgInRoaXMiOiB0cnVlLAorICAgICAgICAiZG8iOiB0cnVlLAorICAgICAgICAid2hpbGUiOiB0
cnVlLAorICAgICAgICAiZWxzZSI6IHRydWUsCisgICAgICAgICJpbiI6IHRydWUsCisgICAgICAg
ICJzd2l0Y2giOiB0cnVlLAorICAgICAgICAidGhyb3ciOiB0cnVlLAorICAgICAgICAidHJ5Ijog
dHJ1ZSwKKyAgICAgICAgInR5cGVvZiI6IHRydWUsCisgICAgICAgICJkZWJ1Z2dlciI6IHRydWUs
CisgICAgICAgICJjbGFzcyI6IHRydWUsCisgICAgICAgICJlbnVtIjogdHJ1ZSwKKyAgICAgICAg
ImV4cG9ydCI6IHRydWUsCisgICAgICAgICJleHRlbmRzIjogdHJ1ZSwKKyAgICAgICAgImltcG9y
dCI6IHRydWUsCisgICAgICAgICJzdXBlciI6IHRydWUsCisgICAgICAgICJnZXQiOiB0cnVlLAor
ICAgICAgICAic2V0IjogdHJ1ZQorICAgIH07CiAgICAgZnVuY3Rpb24gaWRlbnRPcktleXdvcmRB
Y3Rpb24odG9rZW4pCiAgICAgewotICAgICAgICBjb25zdCBrZXl3b3JkcyA9IFsibnVsbCIsICJ0
cnVlIiwgImZhbHNlIiwgImJyZWFrIiwgImNhc2UiLCAiY2F0Y2giLCAiY29uc3QiLCAiZGVmYXVs
dCIsICJmaW5hbGx5IiwgImZvciIsICJpbnN0YW5jZW9mIiwgIm5ldyIsICJ2YXIiLCAiY29udGlu
dWUiLCAiZnVuY3Rpb24iLCAicmV0dXJuIiwgInZvaWQiLCAiZGVsZXRlIiwgImlmIiwgInRoaXMi
LCAiZG8iLCAid2hpbGUiLCAiZWxzZSIsICJpbiIsICJzd2l0Y2giLCAidGhyb3ciLCAidHJ5Iiwg
InR5cGVvZiIsICJ3aXRoIiwgImRlYnVnZ2VyIiwgImNsYXNzIiwgImVudW0iLCAiZXhwb3J0Iiwg
ImV4dGVuZHMiLCAiaW1wb3J0IiwgInN1cGVyIiwgImdldCIsICJzZXQiXTsKICAgICAgICAgdGhp
cy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwotICAgICAgICBpZiAoa2V5d29yZHMuaW5kZXhPZih0
b2tlbikgPT09IC0xKSB7Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZE5vblRva2VuKCk7CisgICAg
ICAgIAorICAgICAgICBpZiAodG9rZW4gaW4ga2V5d29yZHMpIHsKKyAgICAgICAgICAgIHRoaXMu
bmV3TGluZS5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNj
cmlwdC1rZXl3b3JkIikpOworICAgICAgICAgICAgdGhpcy5sZXhTdGF0ZSA9IHRoaXMuTGV4U3Rh
dGUuSW5pdGlhbDsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHZhciBpZGVudEVsZW1l
bnQgPSB0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1pZGVudCIpOwog
ICAgICAgICAgICAgaWRlbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIHNo
b3dEYXRhdGlwLCBmYWxzZSk7Ci0gICAgICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRD
aGlsZChpZGVudEVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxk
KGlkZW50RWxlbWVudCk7CiAgICAgICAgICAgICB0aGlzLmxleFN0YXRlID0gdGhpcy5MZXhTdGF0
ZS5EaXZpc2lvbkFsbG93ZWQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aGlzLmFw
cGVuZE5vblRva2VuKCk7Ci0gICAgICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGls
ZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1rZXl3b3JkIikpOwot
ICAgICAgICAgICAgdGhpcy5sZXhTdGF0ZSA9IHRoaXMuTGV4U3RhdGUuSW5pdGlhbDsKICAgICAg
ICAgfQogICAgIH0KICAgICAK
</data>
<flag name="review"
          id="24480"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42871</attachid>
            <date>2009-11-10 09:59:42 -0800</date>
            <delta_ts>2009-11-10 13:04:14 -0800</delta_ts>
            <desc>proposed patch 2</desc>
            <filename>speedup.diff</filename>
            <type>text/plain</type>
            <size>18544</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDczNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMTEtMTAgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9y
aUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogU3BlZWQgdXAgc3ludGF4IGhpZ2hsaWdodGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTI5MQorCisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuX2xvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU291cmNlU3ludGF4SGlnaGxpZ2h0ZXIucHJvdG90eXBlLnByb2Nlc3MubW92ZVRvTmV4dExp
bmUpOiBSZXBsYWNlIHRoZSBsaW5lIGNvbnRlbnQgbm9kZS4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Tb3VyY2VTeW50YXhIaWdobGlnaHRlci5wcm90b3R5cGUucHJvY2Vzcyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU291cmNlU3ludGF4SGlnaGxpZ2h0ZXIucHJvdG90eXBlLmFwcGVuZE5vblRv
a2VuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VTeW50YXhIaWdobGlnaHRlci5wcm90
b3R5cGUuc3ludGF4SGlnaGxpZ2h0Tm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU291
cmNlU3ludGF4SGlnaGxpZ2h0ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRT
b3VyY2VTeW50YXhIaWdobGlnaHRlcik6CisKIDIwMDktMTEtMTAgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwkocmV2
aXNpb24gNTA3MzcpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUu
anMJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw2ICsyNjQsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNl
RnJhbWUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jb250ZW50V2luZG93
LkVsZW1lbnQucHJvdG90eXBlLmFkZFN0eWxlQ2xhc3MgPSBFbGVtZW50LnByb3RvdHlwZS5hZGRT
dHlsZUNsYXNzOwogICAgICAgICB0aGlzLmVsZW1lbnQuY29udGVudFdpbmRvdy5FbGVtZW50LnBy
b3RvdHlwZS5yZW1vdmVTdHlsZUNsYXNzID0gRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlU3R5bGVD
bGFzczsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNvbnRlbnRXaW5kb3cuRWxlbWVudC5wcm90b3R5
cGUucmVtb3ZlQ2hpbGRyZW4gPSBFbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbjsKICAg
ICAgICAgdGhpcy5lbGVtZW50LmNvbnRlbnRXaW5kb3cuRWxlbWVudC5wcm90b3R5cGUucG9zaXRp
b25BdCA9IEVsZW1lbnQucHJvdG90eXBlLnBvc2l0aW9uQXQ7CiAgICAgICAgIHRoaXMuZWxlbWVu
dC5jb250ZW50V2luZG93LkVsZW1lbnQucHJvdG90eXBlLnJlbW92ZU1hdGNoaW5nU3R5bGVDbGFz
c2VzID0gRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlTWF0Y2hpbmdTdHlsZUNsYXNzZXM7CiAgICAg
ICAgIHRoaXMuZWxlbWVudC5jb250ZW50V2luZG93LkVsZW1lbnQucHJvdG90eXBlLmhhc1N0eWxl
Q2xhc3MgPSBFbGVtZW50LnByb3RvdHlwZS5oYXNTdHlsZUNsYXNzOwpAQCAtNzkyLDEzICs3OTMs
MTYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZVN5bnRheEhpZ2hsaWdodGVyLnBybwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICB2YXIgcm93ID0gcm93c1t0aGlzLmxpbmVJbmRleF07CiAgICAgICAg
ICAgICB2YXIgbGluZSA9IHJvdyA/IHJvdy5jZWxsc1sxXSA6IG51bGw7Ci0gICAgICAgICAgICBp
ZiAobGluZSAmJiB0aGlzLmxpbmVGcmFnbWVudCkgewotICAgICAgICAgICAgICAgIEVsZW1lbnQu
cHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuLmNhbGwobGluZSk7CisgICAgICAgICAgICBpZiAobGlu
ZSAmJiB0aGlzLm5ld0xpbmUpIHsKKyAgICAgICAgICAgICAgICBsaW5lLnJlbW92ZUNoaWxkcmVu
KCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbGluZS5hcHBlbmRDaGlsZCh0
aGlzLmxpbmVGcmFnbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWVzc2FnZUJ1YmJs
ZSkKLSAgICAgICAgICAgICAgICAgICAgbGluZS5hcHBlbmRDaGlsZCh0aGlzLm1lc3NhZ2VCdWJi
bGUpOwotICAgICAgICAgICAgICAgIHRoaXMubGluZUZyYWdtZW50ID0gbnVsbDsKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxkKHRoaXMubWVzc2FnZUJ1YmJsZSk7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbGluZS5wYXJlbnROb2RlLmluc2Vy
dEJlZm9yZSh0aGlzLm5ld0xpbmUsIGxpbmUpOworICAgICAgICAgICAgICAgIGxpbmUucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZChsaW5lKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICB0aGlzLm5ld0xpbmUgPSBudWxsOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdGhpcy5s
aW5lSW5kZXgrKzsKICAgICAgICAgICAgIGlmICh0aGlzLmxpbmVJbmRleCA+PSByb3dzTGVuZ3Ro
ICYmIHByb2Nlc3NDaHVua0ludGVydmFsKSB7CkBAIC04MTYsNyArODIwLDcgQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZVN5bnRheEhpZ2hsaWdodGVyLnBybwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICB0aGlzLmxpbmVDb2RlID0gbGluZS50ZXh0Q29udGVudDsKLSAgICAgICAgICAgIHRoaXMu
bGluZUZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgICAg
ICAgICAgdGhpcy5uZXdMaW5lID0gbGluZS5jbG9uZU5vZGUoZmFsc2UpOwogICAgICAgICAgICAg
dGhpcy5jdXJzb3IgPSAwOwogICAgICAgICAgICAgaWYgKCFsaW5lKQogICAgICAgICAgICAgICAg
IG1vdmVUb05leHRMaW5lKCk7CkBAIC04NTIsNyArODU2LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZVN5bnRheEhpZ2hsaWdodGVyLnBybwogICAgIGFwcGVuZE5vblRva2VuOiBmdW5jdGlvbiAoKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMubm9uVG9rZW4ubGVuZ3RoID4gMCkgewotICAgICAgICAg
ICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
dGhpcy5ub25Ub2tlbikpOworICAgICAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMubm9uVG9rZW4pKTsKICAgICAgICAgICAgIHRoaXMu
bm9uVG9rZW4gPSAiIjsKICAgICAgICAgfQogICAgIH0sCkBAIC04NjAsNyArODY0LDggQEAgV2Vi
SW5zcGVjdG9yLlNvdXJjZVN5bnRheEhpZ2hsaWdodGVyLnBybwogICAgIHN5bnRheEhpZ2hsaWdo
dE5vZGU6IGZ1bmN0aW9uKG5vZGUpCiAgICAgewogICAgICAgICB0aGlzLmxpbmVDb2RlID0gbm9k
ZS50ZXh0Q29udGVudDsKLSAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQgPSBkb2N1bWVudC5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGRyZW4oKTsKKyAg
ICAgICAgdGhpcy5uZXdMaW5lID0gbm9kZTsKICAgICAgICAgdGhpcy5jdXJzb3IgPSAwOwogICAg
ICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgaWYgKHRoaXMuY3Vyc29yID49IHRoaXMu
bGluZUNvZGUubGVuZ3RoKSB7CkBAIC04NjgsMTAgKzg3Myw3IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VTeW50YXhIaWdobGlnaHRlci5wcm8KICAgICAgICAgICAgICAgICB0aGlzLm5vblRva2VuICs9
IGNvZGVGcmFnbWVudDsKICAgICAgICAgICAgICAgICB0aGlzLmN1cnNvciArPSBjb2RlRnJhZ21l
bnQubGVuZ3RoOwogICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kTm9uVG9rZW4oKTsKLSAgICAg
ICAgICAgICAgICB3aGlsZSAobm9kZS5maXJzdENoaWxkKQotICAgICAgICAgICAgICAgICAgICBu
b2RlLnJlbW92ZUNoaWxkKG5vZGUuZmlyc3RDaGlsZCk7Ci0gICAgICAgICAgICAgICAgbm9kZS5h
cHBlbmRDaGlsZCh0aGlzLmxpbmVGcmFnbWVudCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5saW5l
RnJhZ21lbnQgPW51bGw7CisgICAgICAgICAgICAgICAgdGhpcy5uZXdMaW5lID0gbnVsbDsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTkwMCw3ICs5MDIsNyBA
QCBXZWJJbnNwZWN0b3IuQ1NTU291cmNlU3ludGF4SGlnaGxpZ2h0ZXIgCiAgICAgdGhpcy5jdXJz
b3IgPSAwOwogICAgIHRoaXMubGluZUluZGV4ID0gLTE7CiAgICAgdGhpcy5saW5lQ29kZSA9ICIi
OwotICAgIHRoaXMubGluZUZyYWdtZW50ID0gbnVsbDsKKyAgICB0aGlzLm5ld0xpbmUgPSBudWxs
OwogICAgIHRoaXMubGV4U3RhdGUgPSB0aGlzLkxleFN0YXRlLkluaXRpYWw7CiAgICAgdGhpcy5j
b250aW51ZVN0YXRlID0gdGhpcy5Db250aW51ZVN0YXRlLk5vbmU7CiAgICAgCkBAIC0xMDQwLDMz
ICsxMDQyLDMzIEBAIFdlYkluc3BlY3Rvci5DU1NTb3VyY2VTeW50YXhIaWdobGlnaHRlciAKICAg
ICBmdW5jdGlvbiBjb21tZW50QWN0aW9uKHRva2VuKQogICAgIHsKICAgICAgICAgdGhpcy5jdXJz
b3IgKz0gdG9rZW4ubGVuZ3RoOwotICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGls
ZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtY3NzLWNvbW1lbnQiKSk7CisgICAgICAg
IHRoaXMubmV3TGluZS5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQt
Y3NzLWNvbW1lbnQiKSk7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIGNvbW1lbnRTdGFydEFj
dGlvbih0b2tlbikKICAgICB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsK
LSAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRv
a2VuLCAid2Via2l0LWNzcy1jb21tZW50IikpOworICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5k
Q2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWNzcy1jb21tZW50IikpOwogICAg
ICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuQ29tbWVudDsKICAg
ICB9CiAgICAgCiAgICAgZnVuY3Rpb24gY29tbWVudEVuZEFjdGlvbih0b2tlbikKICAgICB7CiAg
ICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAgICAgICAgdGhpcy5saW5lRnJh
Z21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWNzcy1jb21t
ZW50IikpOworICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFu
KHRva2VuLCAid2Via2l0LWNzcy1jb21tZW50IikpOwogICAgICAgICB0aGlzLmNvbnRpbnVlU3Rh
dGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuTm9uZTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBjb21t
ZW50TWlkZGxlQWN0aW9uKHRva2VuKQogICAgIHsKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9r
ZW4ubGVuZ3RoOwotICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNy
ZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtY3NzLWNvbW1lbnQiKSk7CisgICAgICAgIHRoaXMubmV3
TGluZS5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtY3NzLWNvbW1l
bnQiKSk7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHNlbGVjdG9yQWN0aW9uKHRva2VuKQog
ICAgIHsKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwotICAgICAgICB0aGlz
LmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQt
Y3NzLXNlbGVjdG9yIikpOworICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5kQ2hpbGQodGhpcy5j
cmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWNzcy1zZWxlY3RvciIpKTsKICAgICB9CiAgICAgCiAg
ICAgZnVuY3Rpb24gc3RhcnRSdWxlc2V0QmxvY2tBY3Rpb24odG9rZW4pCkBAIC0xMzMwLDcgKzEz
MzIsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU291cmNlU3ludGF4SGlnaGxpZ2h0ZXIgCiAgICAgICAg
IHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKICAgICAgICAgaWYgKHRva2VuIGluIHByb3Bl
cnR5S2V5d29yZHMpIHsKICAgICAgICAgICAgIHRoaXMuYXBwZW5kTm9uVG9rZW4uY2FsbCh0aGlz
KTsKLSAgICAgICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRl
U3Bhbih0b2tlbiwgIndlYmtpdC1jc3MtcHJvcGVydHkiKSk7CisgICAgICAgICAgICB0aGlzLm5l
d0xpbmUuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWNzcy1wcm9w
ZXJ0eSIpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlzLm5vblRva2VuICs9IHRv
a2VuOwogICAgIH0KQEAgLTE3MzAsNyArMTczMiw3IEBAIFdlYkluc3BlY3Rvci5DU1NTb3VyY2VT
eW50YXhIaWdobGlnaHRlciAKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwog
ICAgICAgICBpZiAodG9rZW4gaW4gdmFsdWVLZXl3b3JkcykgewogICAgICAgICAgICAgdGhpcy5h
cHBlbmROb25Ub2tlbi5jYWxsKHRoaXMpOwotICAgICAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQu
YXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWNzcy1rZXl3b3JkIikp
OworICAgICAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0
b2tlbiwgIndlYmtpdC1jc3Mta2V5d29yZCIpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICB0aGlzLm5vblRva2VuICs9IHRva2VuOwogICAgIH0KQEAgLTE3MzgsNyArMTc0MCw3IEBAIFdl
Ykluc3BlY3Rvci5DU1NTb3VyY2VTeW50YXhIaWdobGlnaHRlciAKICAgICBmdW5jdGlvbiBudW12
YWx1ZUFjdGlvbih0b2tlbikKICAgICB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxl
bmd0aDsKLSAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVT
cGFuKHRva2VuLCAid2Via2l0LWNzcy1udW1iZXIiKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5h
cHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtY3NzLW51bWJlciIpKTsK
ICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gZGVjbGFyYXRpb25TZW1pY29sb25BY3Rpb24odG9r
ZW4pCkBAIC0xNzUxLDMxICsxNzUzLDMxIEBAIFdlYkluc3BlY3Rvci5DU1NTb3VyY2VTeW50YXhI
aWdobGlnaHRlciAKICAgICBmdW5jdGlvbiB1cmxBY3Rpb24odG9rZW4pCiAgICAgewogICAgICAg
ICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0gICAgICAgIHRoaXMubGluZUZyYWdtZW50
LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1jc3MtdXJsIikpOwor
ICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAi
d2Via2l0LWNzcy11cmwiKSk7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHN0cmluZ0FjdGlv
bih0b2tlbikKICAgICB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAg
ICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2Vu
LCAid2Via2l0LWNzcy1zdHJpbmciKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5hcHBlbmRDaGls
ZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtY3NzLXN0cmluZyIpKTsKICAgICB9CiAg
ICAgCiAgICAgZnVuY3Rpb24gY29sb3JBY3Rpb24odG9rZW4pCiAgICAgewogICAgICAgICB0aGlz
LmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0gICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVu
ZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1jc3MtY29sb3IiKSk7CisgICAg
ICAgIHRoaXMubmV3TGluZS5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJr
aXQtY3NzLWNvbG9yIikpOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBpbXBvcnRhbnRBY3Rp
b24odG9rZW4pCiAgICAgewogICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0g
ICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tl
biwgIndlYmtpdC1jc3MtaW1wb3J0YW50IikpOworICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5k
Q2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWNzcy1pbXBvcnRhbnQiKSk7CiAg
ICAgfQogICAgIAogICAgIGZ1bmN0aW9uIGF0TWVkaWFBY3Rpb24odG9rZW4pCiAgICAgewogICAg
ICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0gICAgICAgIHRoaXMubGluZUZyYWdt
ZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1jc3MtYXQtcnVs
ZSIpKTsKKyAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0
b2tlbiwgIndlYmtpdC1jc3MtYXQtcnVsZSIpKTsKICAgICAgICAgdGhpcy5sZXhTdGF0ZSA9IHRo
aXMuTGV4U3RhdGUuQXRNZWRpYTsKICAgICB9CiAgICAgCkBAIC0xNzg5LDcgKzE3OTEsNyBAQCBX
ZWJJbnNwZWN0b3IuQ1NTU291cmNlU3ludGF4SGlnaGxpZ2h0ZXIgCiAgICAgZnVuY3Rpb24gYXRL
ZXlmcmFtZXNBY3Rpb24odG9rZW4pCiAgICAgewogICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tl
bi5sZW5ndGg7Ci0gICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3Jl
YXRlU3Bhbih0b2tlbiwgIndlYmtpdC1jc3MtYXQtcnVsZSIpKTsKKyAgICAgICAgdGhpcy5uZXdM
aW5lLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1jc3MtYXQtcnVs
ZSIpKTsKICAgICAgICAgdGhpcy5sZXhTdGF0ZSA9IHRoaXMuTGV4U3RhdGUuQXRLZXlmcmFtZXM7
CiAgICAgfQogICAgIApAQCAtMTgwMiw3ICsxODA0LDcgQEAgV2ViSW5zcGVjdG9yLkNTU1NvdXJj
ZVN5bnRheEhpZ2hsaWdodGVyIAogICAgIAogICAgIGZ1bmN0aW9uIGF0UnVsZUFjdGlvbih0b2tl
bikgewogICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0gICAgICAgIHRoaXMu
bGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1j
c3MtYXQtcnVsZSIpKTsKKyAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxkKHRoaXMuY3Jl
YXRlU3Bhbih0b2tlbiwgIndlYmtpdC1jc3MtYXQtcnVsZSIpKTsKICAgICAgICAgdGhpcy5sZXhT
dGF0ZSA9IHRoaXMuTGV4U3RhdGUuQXRSdWxlOwogICAgIH0KICAgICAKQEAgLTE4MjYsNyArMTgy
OCw3IEBAIFdlYkluc3BlY3Rvci5DU1NTb3VyY2VTeW50YXhIaWdobGlnaHRlciAKICAgICAgICAg
ICAgIHRoaXMubm9uVG9rZW4gKz0gdG9rZW47CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
dGhpcy5hcHBlbmROb25Ub2tlbi5jYWxsKHRoaXMpOwotICAgICAgICAgICAgdGhpcy5saW5lRnJh
Z21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWNzcy1rZXl3
b3JkIikpOworICAgICAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRl
U3Bhbih0b2tlbiwgIndlYmtpdC1jc3Mta2V5d29yZCIpKTsKICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTE4NTIsNyArMTg1NCw3IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4
SGlnaGwKICAgICB0aGlzLmN1cnNvciA9IDA7CiAgICAgdGhpcy5saW5lSW5kZXggPSAtMTsKICAg
ICB0aGlzLmxpbmVDb2RlID0gIiI7Ci0gICAgdGhpcy5saW5lRnJhZ21lbnQgPSBudWxsOworICAg
IHRoaXMubmV3TGluZSA9IG51bGw7CiAgICAgdGhpcy5sZXhTdGF0ZSA9IHRoaXMuTGV4U3RhdGUu
SW5pdGlhbDsKICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuTm9u
ZTsKICAgICAKQEAgLTE5MDMsOCArMTkwNSw3IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291
cmNlU3ludGF4SGlnaGwKICAgICAgICAgY29udGludWVTdGF0ZUNvbmRpdGlvbjogdGhpcy5Db250
aW51ZVN0YXRlLkRvdWJsZVF1b3RlU3RyaW5nCiAgICAgfSwgewogICAgICAgICBwYXR0ZXJuOiAv
Xig/Oig/OlthLXpBLVpdfFskX118XFwoPzp1WzAtOWEtZkEtRl1bMC05YS1mQS1GXVswLTlhLWZB
LUZdWzAtOWEtZkEtRl0pKSg/Oig/OlthLXpBLVpdfFskX118XFwoPzp1WzAtOWEtZkEtRl1bMC05
YS1mQS1GXVswLTlhLWZBLUZdWzAtOWEtZkEtRl0pKXxbMC05XSkqKS8sCi0gICAgICAgIGFjdGlv
bjogaWRlbnRPcktleXdvcmRBY3Rpb24sCi0gICAgICAgIGRvbnRBcHBlbmROb25Ub2tlbjogdHJ1
ZQorICAgICAgICBhY3Rpb246IGlkZW50T3JLZXl3b3JkQWN0aW9uCiAgICAgfSwgewogICAgICAg
ICBwYXR0ZXJuOiAvXlwpLywKICAgICAgICAgYWN0aW9uOiByaWdodFBhcmVuQWN0aW9uLApAQCAt
MTkzNywxMzAgKzE5MzgsMTY3IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlU3ludGF4
SGlnaGwKICAgICBmdW5jdGlvbiBzaW5nbGVMaW5lQ29tbWVudEFjdGlvbih0b2tlbikKICAgICB7
CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAgICAgICAgdGhpcy5saW5l
RnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFz
Y3JpcHQtY29tbWVudCIpKTsKKyAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxkKHRoaXMu
Y3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LWNvbW1lbnQiKSk7CiAgICAgfQog
ICAgIAogICAgIGZ1bmN0aW9uIG11bHRpTGluZVNpbmdsZUxpbmVDb21tZW50QWN0aW9uKHRva2Vu
KQogICAgIHsKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwotICAgICAgICB0
aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJr
aXQtamF2YXNjcmlwdC1jb21tZW50IikpOworICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5kQ2hp
bGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtY29tbWVudCIpKTsK
ICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gbXVsdGlMaW5lQ29tbWVudFN0YXJ0QWN0aW9uKHRv
a2VuKQogICAgIHsKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwotICAgICAg
ICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3
ZWJraXQtamF2YXNjcmlwdC1jb21tZW50IikpOworICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5k
Q2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtY29tbWVudCIp
KTsKICAgICAgICAgdGhpcy5jb250aW51ZVN0YXRlID0gdGhpcy5Db250aW51ZVN0YXRlLkNvbW1l
bnQ7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIG11bHRpTGluZUNvbW1lbnRFbmRBY3Rpb24o
dG9rZW4pCiAgICAgewogICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0gICAg
ICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwg
IndlYmtpdC1qYXZhc2NyaXB0LWNvbW1lbnQiKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5hcHBl
bmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1jb21tZW50
IikpOwogICAgICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3RhdGUuTm9u
ZTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gbXVsdGlMaW5lQ29tbWVudE1pZGRsZUFjdGlv
bih0b2tlbikKICAgICB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAg
ICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2Vu
LCAid2Via2l0LWphdmFzY3JpcHQtY29tbWVudCIpKTsKKyAgICAgICAgdGhpcy5uZXdMaW5lLmFw
cGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LWNvbW1l
bnQiKSk7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIG51bWVyaWNMaXRlcmFsQWN0aW9uKHRv
a2VuKQogICAgIHsKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwotICAgICAg
ICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3
ZWJraXQtamF2YXNjcmlwdC1udW1iZXIiKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5hcHBlbmRD
aGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1udW1iZXIiKSk7
CiAgICAgICAgIHRoaXMubGV4U3RhdGUgPSB0aGlzLkxleFN0YXRlLkRpdmlzaW9uQWxsb3dlZDsK
ICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gc3RyaW5nTGl0ZXJhbEFjdGlvbih0b2tlbikKICAg
ICB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAgICAgICAgdGhpcy5s
aW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWph
dmFzY3JpcHQtc3RyaW5nIikpOworICAgICAgICB0aGlzLm5ld0xpbmUuYXBwZW5kQ2hpbGQodGhp
cy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIikpOwogICAgICAg
ICB0aGlzLmxleFN0YXRlID0gdGhpcy5MZXhTdGF0ZS5Jbml0aWFsOwogICAgIH0KICAgICAKICAg
ICBmdW5jdGlvbiBzaW5nbGVRdW90ZVN0cmluZ1N0YXJ0QWN0aW9uKHRva2VuKQogICAgIHsKICAg
ICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwotICAgICAgICB0aGlzLmxpbmVGcmFn
bWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlw
dC1zdHJpbmciKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0
ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CiAgICAgICAgIHRoaXMu
Y29udGludWVTdGF0ZSA9IHRoaXMuQ29udGludWVTdGF0ZS5TaW5nbGVRdW90ZVN0cmluZzsKICAg
ICB9CiAgICAgCiAgICAgZnVuY3Rpb24gc2luZ2xlUXVvdGVTdHJpbmdFbmRBY3Rpb24odG9rZW4p
CiAgICAgewogICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0gICAgICAgIHRo
aXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtp
dC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENoaWxk
KHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKICAg
ICAgICAgdGhpcy5jb250aW51ZVN0YXRlID0gdGhpcy5Db250aW51ZVN0YXRlLk5vbmU7CiAgICAg
fQogICAgIAogICAgIGZ1bmN0aW9uIHNpbmdsZVF1b3RlU3RyaW5nTWlkZGxlQWN0aW9uKHRva2Vu
KQogICAgIHsKICAgICAgICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwotICAgICAgICB0
aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJr
aXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5hcHBlbmRDaGls
ZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1zdHJpbmciKSk7CiAg
ICAgfQogICAgIAogICAgIGZ1bmN0aW9uIGRvdWJsZVF1b3RlU3RyaW5nU3RhcnRBY3Rpb24odG9r
ZW4pCiAgICAgewogICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5ndGg7Ci0gICAgICAg
IHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndl
YmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5uZXdMaW5lLmFwcGVuZENo
aWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpKTsK
ICAgICAgICAgdGhpcy5jb250aW51ZVN0YXRlID0gdGhpcy5Db250aW51ZVN0YXRlLkRvdWJsZVF1
b3RlU3RyaW5nOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBkb3VibGVRdW90ZVN0cmluZ0Vu
ZEFjdGlvbih0b2tlbikKICAgICB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0
aDsKLSAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFu
KHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtc3RyaW5nIikpOworICAgICAgICB0aGlzLm5ld0xp
bmUuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQt
c3RyaW5nIikpOwogICAgICAgICB0aGlzLmNvbnRpbnVlU3RhdGUgPSB0aGlzLkNvbnRpbnVlU3Rh
dGUuTm9uZTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gZG91YmxlUXVvdGVTdHJpbmdNaWRk
bGVBY3Rpb24odG9rZW4pCiAgICAgewogICAgICAgICB0aGlzLmN1cnNvciArPSB0b2tlbi5sZW5n
dGg7Ci0gICAgICAgIHRoaXMubGluZUZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bh
bih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0LXN0cmluZyIpKTsKKyAgICAgICAgdGhpcy5uZXdM
aW5lLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRlU3Bhbih0b2tlbiwgIndlYmtpdC1qYXZhc2NyaXB0
LXN0cmluZyIpKTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gcmVnRXhwTGl0ZXJhbEFjdGlv
bih0b2tlbikKICAgICB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAg
ICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2Vu
LCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIikpOworICAgICAgICB0aGlzLm5ld0xpbmUuYXBw
ZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhw
IikpOwogICAgICAgICB0aGlzLmxleFN0YXRlID0gdGhpcy5MZXhTdGF0ZS5Jbml0aWFsOwogICAg
IH0KIAogICAgIGZ1bmN0aW9uIHJlZ0V4cFN0YXJ0QWN0aW9uKHRva2VuKQogICAgIHsKICAgICAg
ICAgdGhpcy5jdXJzb3IgKz0gdG9rZW4ubGVuZ3RoOwotICAgICAgICB0aGlzLmxpbmVGcmFnbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1y
ZWdleHAiKSk7CisgICAgICAgIHRoaXMubmV3TGluZS5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNw
YW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1yZWdleHAiKSk7CiAgICAgICAgIHRoaXMuY29u
dGludWVTdGF0ZSA9IHRoaXMuQ29udGludWVTdGF0ZS5SZWdFeHA7CiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gcmVnRXhwRW5kQWN0aW9uKHRva2VuKQogICAgIHsKICAgICAgICAgdGhpcy5jdXJzb3Ig
Kz0gdG9rZW4ubGVuZ3RoOwotICAgICAgICB0aGlzLmxpbmVGcmFnbWVudC5hcHBlbmRDaGlsZCh0
aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJraXQtamF2YXNjcmlwdC1yZWdleHAiKSk7CisgICAg
ICAgIHRoaXMubmV3TGluZS5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZVNwYW4odG9rZW4sICJ3ZWJr
aXQtamF2YXNjcmlwdC1yZWdleHAiKSk7CiAgICAgICAgIHRoaXMuY29udGludWVTdGF0ZSA9IHRo
aXMuQ29udGludWVTdGF0ZS5Ob25lOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHJlZ0V4cE1pZGRs
ZUFjdGlvbih0b2tlbikKICAgICB7CiAgICAgICAgIHRoaXMuY3Vyc29yICs9IHRva2VuLmxlbmd0
aDsKLSAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFu
KHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtcmVnZXhwIikpOworICAgICAgICB0aGlzLm5ld0xp
bmUuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQt
cmVnZXhwIikpOwogICAgIH0KICAgICAKKyAgICBjb25zdCBrZXl3b3JkcyA9IHsKKyAgICAgICAg
Im51bGwiOiB0cnVlLAorICAgICAgICAidHJ1ZSI6IHRydWUsCisgICAgICAgICJmYWxzZSI6IHRy
dWUsCisgICAgICAgICJicmVhayI6IHRydWUsCisgICAgICAgICJjYXNlIjogdHJ1ZSwKKyAgICAg
ICAgImNhdGNoIjogdHJ1ZSwKKyAgICAgICAgImNvbnN0IjogdHJ1ZSwKKyAgICAgICAgImRlZmF1
bHQiOiB0cnVlLAorICAgICAgICAiZmluYWxseSI6IHRydWUsCisgICAgICAgICJmb3IiOiB0cnVl
LAorICAgICAgICAiaW5zdGFuY2VvZiI6IHRydWUsCisgICAgICAgICJuZXciOiB0cnVlLAorICAg
ICAgICAidmFyIjogdHJ1ZSwKKyAgICAgICAgImNvbnRpbnVlIjogdHJ1ZSwKKyAgICAgICAgImZ1
bmN0aW9uIjogdHJ1ZSwKKyAgICAgICAgInJldHVybiI6IHRydWUsCisgICAgICAgICJ2b2lkIjog
dHJ1ZSwKKyAgICAgICAgImRlbGV0ZSI6IHRydWUsCisgICAgICAgICJpZiI6IHRydWUsCisgICAg
ICAgICJ0aGlzIjogdHJ1ZSwKKyAgICAgICAgImRvIjogdHJ1ZSwKKyAgICAgICAgIndoaWxlIjog
dHJ1ZSwKKyAgICAgICAgImVsc2UiOiB0cnVlLAorICAgICAgICAiaW4iOiB0cnVlLAorICAgICAg
ICAic3dpdGNoIjogdHJ1ZSwKKyAgICAgICAgInRocm93IjogdHJ1ZSwKKyAgICAgICAgInRyeSI6
IHRydWUsCisgICAgICAgICJ0eXBlb2YiOiB0cnVlLAorICAgICAgICAiZGVidWdnZXIiOiB0cnVl
LAorICAgICAgICAiY2xhc3MiOiB0cnVlLAorICAgICAgICAiZW51bSI6IHRydWUsCisgICAgICAg
ICJleHBvcnQiOiB0cnVlLAorICAgICAgICAiZXh0ZW5kcyI6IHRydWUsCisgICAgICAgICJpbXBv
cnQiOiB0cnVlLAorICAgICAgICAic3VwZXIiOiB0cnVlLAorICAgICAgICAiZ2V0IjogdHJ1ZSwK
KyAgICAgICAgInNldCI6IHRydWUKKyAgICB9OwogICAgIGZ1bmN0aW9uIGlkZW50T3JLZXl3b3Jk
QWN0aW9uKHRva2VuKQogICAgIHsKLSAgICAgICAgY29uc3Qga2V5d29yZHMgPSBbIm51bGwiLCAi
dHJ1ZSIsICJmYWxzZSIsICJicmVhayIsICJjYXNlIiwgImNhdGNoIiwgImNvbnN0IiwgImRlZmF1
bHQiLCAiZmluYWxseSIsICJmb3IiLCAiaW5zdGFuY2VvZiIsICJuZXciLCAidmFyIiwgImNvbnRp
bnVlIiwgImZ1bmN0aW9uIiwgInJldHVybiIsICJ2b2lkIiwgImRlbGV0ZSIsICJpZiIsICJ0aGlz
IiwgImRvIiwgIndoaWxlIiwgImVsc2UiLCAiaW4iLCAic3dpdGNoIiwgInRocm93IiwgInRyeSIs
ICJ0eXBlb2YiLCAid2l0aCIsICJkZWJ1Z2dlciIsICJjbGFzcyIsICJlbnVtIiwgImV4cG9ydCIs
ICJleHRlbmRzIiwgImltcG9ydCIsICJzdXBlciIsICJnZXQiLCAic2V0Il07CiAgICAgICAgIHRo
aXMuY3Vyc29yICs9IHRva2VuLmxlbmd0aDsKLSAgICAgICAgaWYgKGtleXdvcmRzLmluZGV4T2Yo
dG9rZW4pID09PSAtMSkgewotICAgICAgICAgICAgdGhpcy5hcHBlbmROb25Ub2tlbigpOworICAg
ICAgICAKKyAgICAgICAgaWYgKHRva2VuIGluIGtleXdvcmRzKSB7CisgICAgICAgICAgICB0aGlz
Lm5ld0xpbmUuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFz
Y3JpcHQta2V5d29yZCIpKTsKKyAgICAgICAgICAgIHRoaXMubGV4U3RhdGUgPSB0aGlzLkxleFN0
YXRlLkluaXRpYWw7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB2YXIgaWRlbnRFbGVt
ZW50ID0gdGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQtaWRlbnQiKTsK
ICAgICAgICAgICAgIGlkZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCBz
aG93RGF0YXRpcCwgZmFsc2UpOwotICAgICAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5k
Q2hpbGQoaWRlbnRFbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMubmV3TGluZS5hcHBlbmRDaGls
ZChpZGVudEVsZW1lbnQpOwogICAgICAgICAgICAgdGhpcy5sZXhTdGF0ZSA9IHRoaXMuTGV4U3Rh
dGUuRGl2aXNpb25BbGxvd2VkOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy5h
cHBlbmROb25Ub2tlbigpOwotICAgICAgICAgICAgdGhpcy5saW5lRnJhZ21lbnQuYXBwZW5kQ2hp
bGQodGhpcy5jcmVhdGVTcGFuKHRva2VuLCAid2Via2l0LWphdmFzY3JpcHQta2V5d29yZCIpKTsK
LSAgICAgICAgICAgIHRoaXMubGV4U3RhdGUgPSB0aGlzLkxleFN0YXRlLkluaXRpYWw7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>