<?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>130701</bug_id>
          
          <creation_ts>2014-03-24 16:23:25 -0700</creation_ts>
          <short_desc>Web Inspector: reduce per-protocol method function creation in InspectorBackend</short_desc>
          <delta_ts>2014-04-29 22:52:36 -0700</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</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>burg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>994008</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-03-24 16:23:25 -0700</bug_when>
    <thetext>We should be able to create a ProtocolMethod object to store method-specific signature, and stick .promise, .invoke, .supports on the prototype. This will save 3 * (number of protocol commands) function instances on startup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994010</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-03-24 16:24:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/16412894&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005104</commentid>
    <comment_count>2</comment_count>
      <attachid>230415</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-29 14:13:47 -0700</bug_when>
    <thetext>Created attachment 230415
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005174</commentid>
    <comment_count>3</comment_count>
      <attachid>230415</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-04-29 15:32:15 -0700</bug_when>
    <thetext>Comment on attachment 230415
the patch

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

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:246
&gt; +    var callable = function() {

function callable()
{

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:248
&gt; +    };

No ;

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:292
&gt; +        console.log(&quot;invoke args: &quot;, args, &quot;len: &quot;, args.length);
&gt; +        console.log(&quot;signature: &quot;, JSON.stringify(instance._callSignature));

Debug? Or this.dumpInspectorProtocolMessages?

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:295
&gt; +        console.log(&quot;callback:&quot;, callback);

Ditto.

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:310
&gt; +            console.log(&quot;processing arg &quot; + i + &quot;:&quot;, value);

Ditto.

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:313
&gt; +            if (optionalFlag &amp;&amp; typeof value === &quot;undefined&quot;) {
&gt; +                continue;
&gt; +            }

No braces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005235</commentid>
    <comment_count>4</comment_count>
      <attachid>230446</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-29 17:54:37 -0700</bug_when>
    <thetext>Created attachment 230446
address review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005292</commentid>
    <comment_count>5</comment_count>
      <attachid>230446</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-29 22:52:32 -0700</bug_when>
    <thetext>Comment on attachment 230446
address review comments

Clearing flags on attachment: 230446

Committed r167984: &lt;http://trac.webkit.org/changeset/167984&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005293</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-29 22:52:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230415</attachid>
            <date>2014-04-29 14:13:47 -0700</date>
            <delta_ts>2014-04-29 17:54:34 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>bug-130701-20140429141325.patch</filename>
            <type>text/plain</type>
            <size>12626</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3OTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBk
OTQ3OWJmMjE0Mjc2NTY1YTFhMDM5ODQzYzc0YTBhMWFjMTc2MWJiLi5jN2EwMGQ3ZGQ4Mjg3NzBm
YjY1MzFlMzVjNzY0M2Q0OWI2ODE3ZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxNC0wNC0yOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVkdWNlIHBlci1wcm90b2NvbCBtZXRo
b2QgZnVuY3Rpb24gY3JlYXRpb24gaW4gSW5zcGVjdG9yQmFja2VuZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzAxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBjcmVhdGluZyA0IGJv
dW5kIGZ1bmN0aW9ucyBmb3IgZXZlcnkgYmFja2VuZCBtZXRob2Qgb24gc3RhcnR1cCwgd2UKKyAg
ICAgICAgY2FuIHNoYXJlIGNvbW1vbiBmdW5jdGlvbmFsaXR5IG9uIHRoZSBJbnNwZWN0b3JCYWNr
ZW5kQ29tbWFuZCBwcm90b3R5cGUuIFRoaXMKKyAgICAgICAgYWxzbyBzcGxpdHMgdGhlIHZhcmlv
dXMgY2xpZW50LWZhY2luZyBwcm90b2NvbCBpbnRyb3NwZWN0aW9uIG1lY2hhbmlzbXMgZnJvbQor
ICAgICAgICB0aGUgbWVzc2FnZSBlbmNvZGluZy9kZWNvZGluZyBjb2RlLgorCisgICAgICAgIFdl
IHVzZSBhIHdvcmthcm91bmQgdG8gbWFrZSB0aGUgY29tbWFuZCBpbnN0YW5jZXMgdGhlbXNlbHZl
cyBjYWxsYWJsZSBhcyB3ZWxsCisgICAgICAgIGFzIGhhdmluZyAuaW52b2tlLCAucHJvbWlzZSwg
YW5kIC5zdXBwb3J0cy4gSW5zcGVjdG9yQWdlbnQubWV0aG9kTmFtZSByZXR1cm5zIGEKKyAgICAg
ICAgdHJhbXBvbGluZSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIHRoZSBkZWZhdWx0IG1ldGhvZCBp
bnZvY2F0aW9uLiBUaGUgdHJhbXBvbGluZSdzCisgICAgICAgIF9fcHJvdG9fXyBpcyBwYXRjaGVk
IHRvIHBvaW50IHRvIEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUsIGFuZCB0aGUgY29t
bWFuZAorICAgICAgICBpbnN0YW5jZSBpcyBzYXZlZCBpbiB0aGUgY2xvc3VyZSBhbmQgb24gdGhl
IHRyYW1wb2xpbmUgZnVuY3Rpb24gaXRzZWxmLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Q
cm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENs
YXNzLnByb3RvdHlwZS5fcmVnaXN0ZXJQZW5kaW5nUmVzcG9uc2UpOgorICAgICAgICAoSW5zcGVj
dG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5faW52b2tlTWV0aG9kKToKKyAgICAgICAgKEluc3Bl
Y3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUucmVnaXN0ZXJDb21tYW5kKToKKyAgICAgICAgKElu
c3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUucmVnaXN0ZXJFdmVudCk6CisgICAgICAgIChJ
bnNwZWN0b3JCYWNrZW5kQ29tbWFuZCk6CisgICAgICAgICguY2FsbGFibGUpOgorICAgICAgICAo
SW5zcGVjdG9yQmFja2VuZENvbW1hbmQuY3JlYXRlKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tl
bmRDb21tYW5kLnByb3RvdHlwZS5pbnZva2UpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENv
bW1hbmQucHJvdG90eXBlLnByb21pc2UpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZENvbW1h
bmQucHJvdG90eXBlLnN1cHBvcnRzKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmRDb21tYW5k
LnByb3RvdHlwZS5faW52b2tlV2l0aEFyZ3VtZW50cyk6CisgICAgICAgIChJbnNwZWN0b3JCYWNr
ZW5kQ2xhc3MucHJvdG90eXBlLl93cmFwKTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3RvckJh
Y2tlbmRDbGFzcy5wcm90b3R5cGUuX2ludm9rZSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0
b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLl9wcm9taXNlKTogRGVsZXRlZC4KKyAgICAgICAgKElu
c3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuX3N1cHBvcnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuX3NlbmRNZXNzYWdlVG9CYWNrZW5k
KTogRGVsZXRlZC4KKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuX3dy
YXBDYWxsYmFja0FuZFNlbmRNZXNzYWdlT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKEluc3Bl
Y3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuc2VuZE1lc3NhZ2VPYmplY3RUb0JhY2tlbmQpOiBE
ZWxldGVkLgorCiAyMDE0LTA0LTI1ICBKb25hdGhhbiBXZWxscyAgPGpvbm93ZWxsc0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRE9NIFRyZWUgZGVidWdnZXIgcG9wb3ZlciBv
YnNjdXJlcyBkYXNoYm9hcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzCmluZGV4IDU5
ODc4MDhjNjFiZWQ4YTIxNjIzNGZjZjAyMGZiYjljN2IxNmE5MmMuLmJlMWEzYTIzNzAzZTk4ZGE5
ZGE3MjMzNzIwNzVhMmZkNTNmZTYzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5q
cwpAQCAtNDcsMjAgKzQ3LDM3IEBAIGZ1bmN0aW9uIEluc3BlY3RvckJhY2tlbmRDbGFzcygpCiB9
CiAKIEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7Ci0gICAgX3dyYXA6IGZ1bmN0
aW9uKGNhbGxiYWNrLCBtZXRob2QpCisgICAgX3JlZ2lzdGVyUGVuZGluZ1Jlc3BvbnNlOiBmdW5j
dGlvbihjYWxsYmFjaywgbWV0aG9kTmFtZSkKICAgICB7CiAgICAgICAgIHZhciBjYWxsYmFja0lk
ID0gdGhpcy5fbGFzdENhbGxiYWNrSWQrKzsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAgICAg
ICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24oKSB7fTsKIAogICAgICAgICB0aGlzLl9jYWxsYmFj
a3NbY2FsbGJhY2tJZF0gPSBjYWxsYmFjazsKLSAgICAgICAgY2FsbGJhY2subWV0aG9kTmFtZSA9
IG1ldGhvZDsKKyAgICAgICAgY2FsbGJhY2subWV0aG9kTmFtZSA9IG1ldGhvZE5hbWU7CiAgICAg
ICAgIGlmICh0aGlzLmR1bXBJbnNwZWN0b3JUaW1lU3RhdHMpCiAgICAgICAgICAgICBjYWxsYmFj
ay5zZW5kUmVxdWVzdFRpbWUgPSBEYXRlLm5vdygpOwogCisgICAgICAgICsrdGhpcy5fcGVuZGlu
Z1Jlc3BvbnNlc0NvdW50OworCiAgICAgICAgIHJldHVybiBjYWxsYmFja0lkOwogICAgIH0sCiAK
KyAgICBfaW52b2tlTWV0aG9kOiBmdW5jdGlvbihjb21tYW5kLCBwYXJhbWV0ZXJzLCBjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIHZhciBtZXNzYWdlT2JqZWN0ID0ge307CisgICAgICAgIG1lc3Nh
Z2VPYmplY3RbIm1ldGhvZCJdID0gY29tbWFuZC5tZXRob2ROYW1lOworICAgICAgICBpZiAocGFy
YW1ldGVycykKKyAgICAgICAgICAgIG1lc3NhZ2VPYmplY3RbInBhcmFtcyJdID0gcGFyYW1ldGVy
czsKKyAgICAgICAgbWVzc2FnZU9iamVjdFsiaWQiXSA9IHRoaXMuX3JlZ2lzdGVyUGVuZGluZ1Jl
c3BvbnNlKGNhbGxiYWNrLCBjb21tYW5kLm1ldGhvZE5hbWUpOworCisgICAgICAgIHZhciBzdHJp
bmdpZmllZE1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeShtZXNzYWdlT2JqZWN0KTsKKyAgICAgICAg
aWYgKHRoaXMuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMpCisgICAgICAgICAgICBjb25z
b2xlLmxvZygiZnJvbnRlbmQ6ICIgKyBzdHJpbmdpZmllZE1lc3NhZ2UpOworCisgICAgICAgIElu
c3BlY3RvckZyb250ZW5kSG9zdC5zZW5kTWVzc2FnZVRvQmFja2VuZChzdHJpbmdpZmllZE1lc3Nh
Z2UpOworICAgIH0sCisKICAgICBfZ2V0QWdlbnQ6IGZ1bmN0aW9uKGRvbWFpbikKICAgICB7CiAg
ICAgICAgIHZhciBhZ2VudE5hbWUgPSBkb21haW4gKyAiQWdlbnQiOwpAQCAtNzMsMTEgKzkwLDgg
QEAgSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZh
ciBkb21haW5BbmRNZXRob2QgPSBtZXRob2Quc3BsaXQoIi4iKTsKICAgICAgICAgdmFyIGFnZW50
ID0gdGhpcy5fZ2V0QWdlbnQoZG9tYWluQW5kTWV0aG9kWzBdKTsKKyAgICAgICAgYWdlbnRbZG9t
YWluQW5kTWV0aG9kWzFdXSA9IEluc3BlY3RvckJhY2tlbmRDb21tYW5kLmNyZWF0ZSh0aGlzLCBt
ZXRob2QsIHNpZ25hdHVyZSk7CiAKLSAgICAgICAgYWdlbnRbZG9tYWluQW5kTWV0aG9kWzFdXSA9
IHRoaXMuX3NlbmRNZXNzYWdlVG9CYWNrZW5kLmJpbmQodGhpcywgbWV0aG9kLCBzaWduYXR1cmUp
OwotICAgICAgICBhZ2VudFtkb21haW5BbmRNZXRob2RbMV1dWyJpbnZva2UiXSA9IHRoaXMuX2lu
dm9rZS5iaW5kKHRoaXMsIG1ldGhvZCwgc2lnbmF0dXJlKTsKLSAgICAgICAgYWdlbnRbZG9tYWlu
QW5kTWV0aG9kWzFdXVsicHJvbWlzZSJdID0gdGhpcy5fcHJvbWlzZS5iaW5kKHRoaXMsIG1ldGhv
ZCwgc2lnbmF0dXJlKTsKLSAgICAgICAgYWdlbnRbZG9tYWluQW5kTWV0aG9kWzFdXVsic3VwcG9y
dHMiXSA9IHRoaXMuX3N1cHBvcnRzLmJpbmQodGhpcywgbWV0aG9kLCBzaWduYXR1cmUpOwogICAg
ICAgICB0aGlzLl9yZXBseUFyZ3NbbWV0aG9kXSA9IHJlcGx5QXJnczsKICAgICB9LAogCkBAIC04
OSwxMDMgKzEwMyw5IEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGFnZW50W2RvbWFpbkFuZE1ldGhvZFsxXV0gPSB2YWx1ZXM7CiAgICAgfSwKIAotICAgIHJl
Z2lzdGVyRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50TmFtZSwgcGFyYW1zKQotICAgIHsKLSAgICAgICAg
dGhpcy5fZXZlbnRBcmdzW2V2ZW50TmFtZV0gPSBwYXJhbXM7Ci0gICAgfSwKLQotICAgIF9pbnZv
a2U6IGZ1bmN0aW9uKG1ldGhvZCwgc2lnbmF0dXJlLCBhcmdzLCBjYWxsYmFjaykKLSAgICB7Ci0g
ICAgICAgIHRoaXMuX3dyYXBDYWxsYmFja0FuZFNlbmRNZXNzYWdlT2JqZWN0KG1ldGhvZCwgYXJn
cywgY2FsbGJhY2spOwotICAgIH0sCi0KLSAgICBfcHJvbWlzZTogZnVuY3Rpb24obWV0aG9kLCBz
aWduYXR1cmUpCisgICAgcmVnaXN0ZXJFdmVudDogZnVuY3Rpb24oZXZlbnROYW1lLCBwYXJhbWV0
ZXJzKQogICAgIHsKLSAgICAgICAgdmFyIGJhY2tlbmQgPSB0aGlzOwotICAgICAgICB2YXIgcHJv
bWlzZUFyZ3VtZW50cyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7Ci0g
ICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKLSAg
ICAgICAgICAgIGZ1bmN0aW9uIGNvbnZlcnRUb1Byb21pc2VDYWxsYmFjayhlcnJvciwgcGF5bG9h
ZCkgewotICAgICAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICAgICAgcmVq
ZWN0KGVycm9yKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJl
c29sdmUocGF5bG9hZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcm9taXNlQXJndW1l
bnRzLnB1c2goY29udmVydFRvUHJvbWlzZUNhbGxiYWNrKTsKLSAgICAgICAgICAgIGJhY2tlbmQu
X3NlbmRNZXNzYWdlVG9CYWNrZW5kLmFwcGx5KGJhY2tlbmQsIHByb21pc2VBcmd1bWVudHMpOwot
ICAgICAgICB9KTsKLSAgICB9LAotCi0gICAgX3N1cHBvcnRzOiBmdW5jdGlvbihtZXRob2QsIHNp
Z25hdHVyZSwgcGFyYW1OYW1lKQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBz
aWduYXR1cmUubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChzaWduYXR1cmVbaV1bIm5h
bWUiXSA9PT0gcGFyYW1OYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCi0KLSAgICBfc2VuZE1lc3NhZ2VU
b0JhY2tlbmQ6IGZ1bmN0aW9uKG1ldGhvZCwgc2lnbmF0dXJlLCB2YXJhcmcpCi0gICAgewotICAg
ICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMik7
Ci0gICAgICAgIHZhciBjYWxsYmFjayA9IHR5cGVvZiBhcmdzLmxhc3RWYWx1ZSA9PT0gImZ1bmN0
aW9uIiA/IGFyZ3MucG9wKCkgOiBudWxsOwotCi0gICAgICAgIHZhciBwYXJhbXMgPSB7fTsKLSAg
ICAgICAgdmFyIGhhc1BhcmFtcyA9IGZhbHNlOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHNpZ25hdHVyZS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHBhcmFtID0gc2lnbmF0
dXJlW2ldOwotICAgICAgICAgICAgdmFyIHBhcmFtTmFtZSA9IHBhcmFtWyJuYW1lIl07Ci0gICAg
ICAgICAgICB2YXIgdHlwZU5hbWUgPSBwYXJhbVsidHlwZSJdOwotICAgICAgICAgICAgdmFyIG9w
dGlvbmFsRmxhZyA9IHBhcmFtWyJvcHRpb25hbCJdOwotCi0gICAgICAgICAgICBpZiAoIWFyZ3Mu
bGVuZ3RoICYmICFvcHRpb25hbEZsYWcpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9y
KCJQcm90b2NvbCBFcnJvcjogSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBtZXRob2Qg
JyIgKyBtZXRob2QgKyAiJyBjYWxsLiBJdCBtdXN0IGhhdmUgdGhlIGZvbGxvd2luZyBhcmd1bWVu
dHMgJyIgKyBKU09OLnN0cmluZ2lmeShzaWduYXR1cmUpICsgIicuIik7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgdmFsdWUgPSBhcmdz
LnNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAob3B0aW9uYWxGbGFnICYmIHR5cGVvZiB2YWx1ZSA9
PT0gInVuZGVmaW5lZCIpIHsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gdHlwZU5hbWUpIHsKLSAgICAg
ICAgICAgICAgICBjb25zb2xlLmVycm9yKCJQcm90b2NvbCBFcnJvcjogSW52YWxpZCB0eXBlIG9m
IGFyZ3VtZW50ICciICsgcGFyYW1OYW1lICsgIicgZm9yIG1ldGhvZCAnIiArIG1ldGhvZCArICIn
IGNhbGwuIEl0IG11c3QgYmUgJyIgKyB0eXBlTmFtZSArICInIGJ1dCBpdCBpcyAnIiArIHR5cGVv
ZiB2YWx1ZSArICInLiIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgcGFyYW1zW3BhcmFtTmFtZV0gPSB2YWx1ZTsKLSAgICAgICAgICAgIGhh
c1BhcmFtcyA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09
IDEgJiYgIWNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3NbMF0gIT09ICJ1
bmRlZmluZWQiKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiUHJvdG9jb2wgRXJy
b3I6IE9wdGlvbmFsIGNhbGxiYWNrIGFyZ3VtZW50IGZvciBtZXRob2QgJyIgKyBtZXRob2QgKyAi
JyBjYWxsIG11c3QgYmUgYSBmdW5jdGlvbiBidXQgaXRzIHR5cGUgaXMgJyIgKyB0eXBlb2YgYXJn
c1swXSArICInLiIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIHRoaXMuX3dyYXBDYWxsYmFja0FuZFNlbmRNZXNzYWdlT2JqZWN0
KG1ldGhvZCwgaGFzUGFyYW1zID8gcGFyYW1zIDogbnVsbCwgY2FsbGJhY2spOwotICAgIH0sCi0K
LSAgICBfd3JhcENhbGxiYWNrQW5kU2VuZE1lc3NhZ2VPYmplY3Q6IGZ1bmN0aW9uKG1ldGhvZCwg
cGFyYW1zLCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHZhciBtZXNzYWdlT2JqZWN0ID0ge307
Ci0gICAgICAgIG1lc3NhZ2VPYmplY3QubWV0aG9kID0gbWV0aG9kOwotICAgICAgICBpZiAocGFy
YW1zKQotICAgICAgICAgICAgbWVzc2FnZU9iamVjdC5wYXJhbXMgPSBwYXJhbXM7Ci0gICAgICAg
IG1lc3NhZ2VPYmplY3QuaWQgPSB0aGlzLl93cmFwKGNhbGxiYWNrLCBtZXRob2QpOwotCi0gICAg
ICAgIGlmICh0aGlzLmR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzKQotICAgICAgICAgICAg
Y29uc29sZS5sb2coImZyb250ZW5kOiAiICsgSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCkp
OwotCi0gICAgICAgICsrdGhpcy5fcGVuZGluZ1Jlc3BvbnNlc0NvdW50OwotICAgICAgICB0aGlz
LnNlbmRNZXNzYWdlT2JqZWN0VG9CYWNrZW5kKG1lc3NhZ2VPYmplY3QpOwotICAgIH0sCi0KLSAg
ICBzZW5kTWVzc2FnZU9iamVjdFRvQmFja2VuZDogZnVuY3Rpb24obWVzc2FnZU9iamVjdCkKLSAg
ICB7Ci0gICAgICAgIHZhciBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVjdCk7
Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZW5kTWVzc2FnZVRvQmFja2VuZChtZXNz
YWdlKTsKKyAgICAgICAgdGhpcy5fZXZlbnRBcmdzW2V2ZW50TmFtZV0gPSBwYXJhbWV0ZXJzOwog
ICAgIH0sCiAKICAgICByZWdpc3RlckRvbWFpbkRpc3BhdGNoZXI6IGZ1bmN0aW9uKGRvbWFpbiwg
ZGlzcGF0Y2hlcikKQEAgLTMxMSwzICsyMzEsMTAyIEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcy5w
cm90b3R5cGUgPSB7CiB9CiAKIEluc3BlY3RvckJhY2tlbmQgPSBuZXcgSW5zcGVjdG9yQmFja2Vu
ZENsYXNzKCk7CisKK0luc3BlY3RvckJhY2tlbmRDb21tYW5kID0gZnVuY3Rpb24oYmFja2VuZCwg
bWV0aG9kTmFtZSwgY2FsbFNpZ25hdHVyZSkKK3sKKyAgICB0aGlzLl9iYWNrZW5kID0gYmFja2Vu
ZDsKKyAgICB0aGlzLm1ldGhvZE5hbWUgPSBtZXRob2ROYW1lOworICAgIHRoaXMuX2NhbGxTaWdu
YXR1cmUgPSBjYWxsU2lnbmF0dXJlOworICAgIHRoaXMuX2luc3RhbmNlID0gdGhpczsKK30KKwor
SW5zcGVjdG9yQmFja2VuZENvbW1hbmQuY3JlYXRlID0gZnVuY3Rpb24oYmFja2VuZCwgbWV0aG9k
TmFtZSwgY2FsbFNpZ25hdHVyZSkKK3sKKyAgICB2YXIgaW5zdGFuY2UgPSBuZXcgSW5zcGVjdG9y
QmFja2VuZENvbW1hbmQoYmFja2VuZCwgbWV0aG9kTmFtZSwgY2FsbFNpZ25hdHVyZSk7CisgICAg
dmFyIGNhbGxhYmxlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGluc3RhbmNlLl9pbnZva2VXaXRo
QXJndW1lbnRzLmFwcGx5KGluc3RhbmNlLCBhcmd1bWVudHMpOworICAgIH07CisgICAgY2FsbGFi
bGUuX2luc3RhbmNlID0gaW5zdGFuY2U7CisgICAgY2FsbGFibGUuX19wcm90b19fID0gSW5zcGVj
dG9yQmFja2VuZENvbW1hbmQucHJvdG90eXBlOworICAgIHJldHVybiBjYWxsYWJsZTsKK30KKwor
Ly8gQXMgcGFydCBvZiB0aGUgd29ya2Fyb3VuZCB0byBtYWtlIGNvbW1hbmRzIGNhbGxhYmxlLCB0
aGVzZSBmdW5jdGlvbnMgdXNlIHx0aGlzLl9pbnN0YW5jZXwuCisvLyB8dGhpc3wgY291bGQgcmVm
ZXIgdG8gdGhlIGNhbGxhYmxlIHRyYW1wb2xpbmUsIG9yIHRoZSBJbnNwZWN0b3JCYWNrZW5kQ29t
bWFuZCBpbnN0YW5jZS4KK0luc3BlY3RvckJhY2tlbmRDb21tYW5kLnByb3RvdHlwZSA9IHsKKyAg
ICBfX3Byb3RvX186IEZ1bmN0aW9uLnByb3RvdHlwZSwKKworICAgIGludm9rZTogZnVuY3Rpb24o
YXJncywgY2FsbGJhY2spCisgICAgeworICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzLl9pbnN0
YW5jZTsKKyAgICAgICAgaW5zdGFuY2UuX2JhY2tlbmQuX2ludm9rZU1ldGhvZChpbnN0YW5jZSwg
YXJncywgY2FsbGJhY2spOworICAgIH0sCisKKyAgICBwcm9taXNlOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzLl9pbnN0YW5jZTsKKyAgICAgICAgdmFyIHBy
b21pc2VBcmd1bWVudHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOwor
ICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7Cisg
ICAgICAgICAgICBmdW5jdGlvbiBjb252ZXJ0VG9Qcm9taXNlQ2FsbGJhY2soZXJyb3IsIHBheWxv
YWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IgPyByZWplY3QoZXJyb3IpIDogcmVz
b2x2ZShwYXlsb2FkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByb21pc2VBcmd1bWVu
dHMucHVzaChjb252ZXJ0VG9Qcm9taXNlQ2FsbGJhY2spOworICAgICAgICAgICAgaW5zdGFuY2Uu
X2ludm9rZVdpdGhBcmd1bWVudHMuYXBwbHkoaW5zdGFuY2UsIHByb21pc2VBcmd1bWVudHMpOwor
ICAgICAgICB9KTsKKyAgICB9LAorCisgICAgc3VwcG9ydHM6IGZ1bmN0aW9uKHBhcmFtZXRlck5h
bWUpCisgICAgeworICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzLl9pbnN0YW5jZTsKKyAgICAg
ICAgcmV0dXJuIGluc3RhbmNlLl9jYWxsU2lnbmF0dXJlLmFueShmdW5jdGlvbihwYXJhbWV0ZXIp
IHsKKyAgICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJbIm5hbWUiXSA9PT0gcGFyYW1ldGVyTmFt
ZQorICAgICAgICB9KTsKKyAgICB9LAorCisgICAgX2ludm9rZVdpdGhBcmd1bWVudHM6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXMuX2luc3RhbmNlOworICAg
ICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7CisK
KyAgICAgICAgY29uc29sZS5sb2coImludm9rZSBhcmdzOiAiLCBhcmdzLCAibGVuOiAiLCBhcmdz
Lmxlbmd0aCk7CisgICAgICAgIGNvbnNvbGUubG9nKCJzaWduYXR1cmU6ICIsIEpTT04uc3RyaW5n
aWZ5KGluc3RhbmNlLl9jYWxsU2lnbmF0dXJlKSk7CisKKyAgICAgICAgdmFyIGNhbGxiYWNrID0g
dHlwZW9mIGFyZ3MubGFzdFZhbHVlID09PSAiZnVuY3Rpb24iID8gYXJncy5wb3AoKSA6IG51bGw7
CisgICAgICAgIGNvbnNvbGUubG9nKCJjYWxsYmFjazoiLCBjYWxsYmFjayk7CisKKyAgICAgICAg
dmFyIHBhcmFtZXRlcnMgPSB7fTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnN0YW5j
ZS5fY2FsbFNpZ25hdHVyZS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHBhcmFtZXRl
ciA9IGluc3RhbmNlLl9jYWxsU2lnbmF0dXJlW2ldOworICAgICAgICAgICAgdmFyIHBhcmFtZXRl
ck5hbWUgPSBwYXJhbWV0ZXJbIm5hbWUiXTsKKyAgICAgICAgICAgIHZhciB0eXBlTmFtZSA9IHBh
cmFtZXRlclsidHlwZSJdOworICAgICAgICAgICAgdmFyIG9wdGlvbmFsRmxhZyA9IHBhcmFtZXRl
clsib3B0aW9uYWwiXTsKKworICAgICAgICAgICAgaWYgKCFhcmdzLmxlbmd0aCAmJiAhb3B0aW9u
YWxGbGFnKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiUHJvdG9jb2wgRXJyb3I6
IEludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgbWV0aG9kICciICsgaW5zdGFuY2UubWV0
aG9kTmFtZSArICInIGNhbGwuIEl0IG11c3QgaGF2ZSB0aGUgZm9sbG93aW5nIGFyZ3VtZW50cyAn
IiArIEpTT04uc3RyaW5naWZ5KHNpZ25hdHVyZSkgKyAiJy4iKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IGFyZ3Muc2hp
ZnQoKTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJwcm9jZXNzaW5nIGFyZyAiICsgaSArICI6
IiwgdmFsdWUpOworICAgICAgICAgICAgaWYgKG9wdGlvbmFsRmxhZyAmJiB0eXBlb2YgdmFsdWUg
PT09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IHR5cGVOYW1lKSB7CisgICAg
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiUHJvdG9jb2wgRXJyb3I6IEludmFsaWQgdHlwZSBv
ZiBhcmd1bWVudCAnIiArIHBhcmFtZXRlck5hbWUgKyAiJyBmb3IgbWV0aG9kICciICsgaW5zdGFu
Y2UubWV0aG9kTmFtZSArICInIGNhbGwuIEl0IG11c3QgYmUgJyIgKyB0eXBlTmFtZSArICInIGJ1
dCBpdCBpcyAnIiArIHR5cGVvZiB2YWx1ZSArICInLiIpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcGFyYW1ldGVyc1twYXJhbWV0ZXJOYW1l
XSA9IHZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYm
ICFjYWxsYmFjaykgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdICE9PSAidW5kZWZp
bmVkIikgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlByb3RvY29sIEVycm9yOiBP
cHRpb25hbCBjYWxsYmFjayBhcmd1bWVudCBmb3IgbWV0aG9kICciICsgaW5zdGFuY2UubWV0aG9k
TmFtZSArICInIGNhbGwgbXVzdCBiZSBhIGZ1bmN0aW9uIGJ1dCBpdHMgdHlwZSBpcyAnIiArIHR5
cGVvZiBhcmdzWzBdICsgIicuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgaW5zdGFuY2UuX2JhY2tlbmQuX2ludm9rZU1ldGhv
ZChpbnN0YW5jZSwgT2JqZWN0LmtleXMocGFyYW1ldGVycykubGVuZ3RoID8gcGFyYW1ldGVycyA6
IG51bGwsIGNhbGxiYWNrKTsKKyAgICB9LAorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230446</attachid>
            <date>2014-04-29 17:54:37 -0700</date>
            <delta_ts>2014-04-29 22:52:32 -0700</delta_ts>
            <desc>address review comments</desc>
            <filename>bug-130701-20140429175415.patch</filename>
            <type>text/plain</type>
            <size>12407</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3OTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA4
ODdhOGRkNTcwYmNhNzc4YjRiMDUyMGY2ZGNkNGMxODk4MmRmM2M1Li40M2FjM2FhNzE1OTg5NWI2
MmMwMzE2ODU1NDA3MWUwY2YzMzgxYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0MyBAQAogMjAxNC0wNC0yOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVkdWNlIHBlci1wcm90b2NvbCBtZXRo
b2QgZnVuY3Rpb24gY3JlYXRpb24gaW4gSW5zcGVjdG9yQmFja2VuZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzAxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIEluc3RlYWQgb2YgY3JlYXRpbmcgNCBi
b3VuZCBmdW5jdGlvbnMgZm9yIGV2ZXJ5IGJhY2tlbmQgbWV0aG9kIG9uIHN0YXJ0dXAsIHdlCisg
ICAgICAgIGNhbiBzaGFyZSBjb21tb24gZnVuY3Rpb25hbGl0eSBvbiB0aGUgSW5zcGVjdG9yQmFj
a2VuZENvbW1hbmQgcHJvdG90eXBlLiBUaGlzCisgICAgICAgIGFsc28gc3BsaXRzIHRoZSB2YXJp
b3VzIGNsaWVudC1mYWNpbmcgcHJvdG9jb2wgaW50cm9zcGVjdGlvbiBtZWNoYW5pc21zIGZyb20K
KyAgICAgICAgdGhlIG1lc3NhZ2UgZW5jb2RpbmcvZGVjb2RpbmcgY29kZS4KKworICAgICAgICBX
ZSB1c2UgYSB3b3JrYXJvdW5kIHRvIG1ha2UgdGhlIGNvbW1hbmQgaW5zdGFuY2VzIHRoZW1zZWx2
ZXMgY2FsbGFibGUgYXMgd2VsbAorICAgICAgICBhcyBoYXZpbmcgLmludm9rZSwgLnByb21pc2Us
IGFuZCAuc3VwcG9ydHMuIEluc3BlY3RvckFnZW50Lm1ldGhvZE5hbWUgcmV0dXJucyBhCisgICAg
ICAgIHRyYW1wb2xpbmUgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyB0aGUgZGVmYXVsdCBtZXRob2Qg
aW52b2NhdGlvbi4gVGhlIHRyYW1wb2xpbmUncworICAgICAgICBfX3Byb3RvX18gaXMgcGF0Y2hl
ZCB0byBwb2ludCB0byBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLCBhbmQgdGhlIGNv
bW1hbmQKKyAgICAgICAgaW5zdGFuY2UgaXMgc2F2ZWQgaW4gdGhlIGNsb3N1cmUgYW5kIG9uIHRo
ZSB0cmFtcG9saW5lIGZ1bmN0aW9uIGl0c2VsZi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qczoKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmRD
bGFzcy5wcm90b3R5cGUuX3JlZ2lzdGVyUGVuZGluZ1Jlc3BvbnNlKToKKyAgICAgICAgKEluc3Bl
Y3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuX2ludm9rZU1ldGhvZCk6CisgICAgICAgIChJbnNw
ZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLnJlZ2lzdGVyQ29tbWFuZCk6CisgICAgICAgIChJ
bnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLnJlZ2lzdGVyRXZlbnQpOgorICAgICAgICAo
SW5zcGVjdG9yQmFja2VuZENvbW1hbmQpOgorICAgICAgICAoLmNhbGxhYmxlKToKKyAgICAgICAg
KEluc3BlY3RvckJhY2tlbmRDb21tYW5kLmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3JCYWNr
ZW5kQ29tbWFuZC5wcm90b3R5cGUuaW52b2tlKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmRD
b21tYW5kLnByb3RvdHlwZS5wcm9taXNlKToKKyAgICAgICAgKEluc3BlY3RvckJhY2tlbmRDb21t
YW5kLnByb3RvdHlwZS5zdXBwb3J0cyk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ29tbWFu
ZC5wcm90b3R5cGUuX2ludm9rZVdpdGhBcmd1bWVudHMpOgorICAgICAgICAoSW5zcGVjdG9yQmFj
a2VuZENsYXNzLnByb3RvdHlwZS5fd3JhcCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3JC
YWNrZW5kQ2xhc3MucHJvdG90eXBlLl9pbnZva2UpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVj
dG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5fcHJvbWlzZSk6IERlbGV0ZWQuCisgICAgICAgIChJ
bnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLl9zdXBwb3J0cyk6IERlbGV0ZWQuCisgICAg
ICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLl9zZW5kTWVzc2FnZVRvQmFja2Vu
ZCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLl93
cmFwQ2FsbGJhY2tBbmRTZW5kTWVzc2FnZU9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNw
ZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLnNlbmRNZXNzYWdlT2JqZWN0VG9CYWNrZW5kKTog
RGVsZXRlZC4KKworMjAxNC0wNC0yOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogRGF0YUdyaWQgY29sdW1ucyBzaG91bGQg
YmUgb2JqZWN0cyBub3QgTWFwcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI5MzgzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzCmluZGV4
IDU5ODc4MDhjNjFiZWQ4YTIxNjIzNGZjZjAyMGZiYjljN2IxNmE5MmMuLmM2NTBiMTkzY2M1MWUx
MzI4NzdiZjZhNmFiZGVjNmQ4YTczYzVhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2Vu
ZC5qcwpAQCAtNDcsMjAgKzQ3LDM3IEBAIGZ1bmN0aW9uIEluc3BlY3RvckJhY2tlbmRDbGFzcygp
CiB9CiAKIEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7Ci0gICAgX3dyYXA6IGZ1
bmN0aW9uKGNhbGxiYWNrLCBtZXRob2QpCisgICAgX3JlZ2lzdGVyUGVuZGluZ1Jlc3BvbnNlOiBm
dW5jdGlvbihjYWxsYmFjaywgbWV0aG9kTmFtZSkKICAgICB7CiAgICAgICAgIHZhciBjYWxsYmFj
a0lkID0gdGhpcy5fbGFzdENhbGxiYWNrSWQrKzsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAg
ICAgICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24oKSB7fTsKIAogICAgICAgICB0aGlzLl9jYWxs
YmFja3NbY2FsbGJhY2tJZF0gPSBjYWxsYmFjazsKLSAgICAgICAgY2FsbGJhY2subWV0aG9kTmFt
ZSA9IG1ldGhvZDsKKyAgICAgICAgY2FsbGJhY2subWV0aG9kTmFtZSA9IG1ldGhvZE5hbWU7CiAg
ICAgICAgIGlmICh0aGlzLmR1bXBJbnNwZWN0b3JUaW1lU3RhdHMpCiAgICAgICAgICAgICBjYWxs
YmFjay5zZW5kUmVxdWVzdFRpbWUgPSBEYXRlLm5vdygpOwogCisgICAgICAgICsrdGhpcy5fcGVu
ZGluZ1Jlc3BvbnNlc0NvdW50OworCiAgICAgICAgIHJldHVybiBjYWxsYmFja0lkOwogICAgIH0s
CiAKKyAgICBfaW52b2tlTWV0aG9kOiBmdW5jdGlvbihjb21tYW5kLCBwYXJhbWV0ZXJzLCBjYWxs
YmFjaykKKyAgICB7CisgICAgICAgIHZhciBtZXNzYWdlT2JqZWN0ID0ge307CisgICAgICAgIG1l
c3NhZ2VPYmplY3RbIm1ldGhvZCJdID0gY29tbWFuZC5tZXRob2ROYW1lOworICAgICAgICBpZiAo
cGFyYW1ldGVycykKKyAgICAgICAgICAgIG1lc3NhZ2VPYmplY3RbInBhcmFtcyJdID0gcGFyYW1l
dGVyczsKKyAgICAgICAgbWVzc2FnZU9iamVjdFsiaWQiXSA9IHRoaXMuX3JlZ2lzdGVyUGVuZGlu
Z1Jlc3BvbnNlKGNhbGxiYWNrLCBjb21tYW5kLm1ldGhvZE5hbWUpOworCisgICAgICAgIHZhciBz
dHJpbmdpZmllZE1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeShtZXNzYWdlT2JqZWN0KTsKKyAgICAg
ICAgaWYgKHRoaXMuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMpCisgICAgICAgICAgICBj
b25zb2xlLmxvZygiZnJvbnRlbmQ6ICIgKyBzdHJpbmdpZmllZE1lc3NhZ2UpOworCisgICAgICAg
IEluc3BlY3RvckZyb250ZW5kSG9zdC5zZW5kTWVzc2FnZVRvQmFja2VuZChzdHJpbmdpZmllZE1l
c3NhZ2UpOworICAgIH0sCisKICAgICBfZ2V0QWdlbnQ6IGZ1bmN0aW9uKGRvbWFpbikKICAgICB7
CiAgICAgICAgIHZhciBhZ2VudE5hbWUgPSBkb21haW4gKyAiQWdlbnQiOwpAQCAtNzMsMTEgKzkw
LDggQEAgSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IHZhciBkb21haW5BbmRNZXRob2QgPSBtZXRob2Quc3BsaXQoIi4iKTsKICAgICAgICAgdmFyIGFn
ZW50ID0gdGhpcy5fZ2V0QWdlbnQoZG9tYWluQW5kTWV0aG9kWzBdKTsKKyAgICAgICAgYWdlbnRb
ZG9tYWluQW5kTWV0aG9kWzFdXSA9IEluc3BlY3RvckJhY2tlbmRDb21tYW5kLmNyZWF0ZSh0aGlz
LCBtZXRob2QsIHNpZ25hdHVyZSk7CiAKLSAgICAgICAgYWdlbnRbZG9tYWluQW5kTWV0aG9kWzFd
XSA9IHRoaXMuX3NlbmRNZXNzYWdlVG9CYWNrZW5kLmJpbmQodGhpcywgbWV0aG9kLCBzaWduYXR1
cmUpOwotICAgICAgICBhZ2VudFtkb21haW5BbmRNZXRob2RbMV1dWyJpbnZva2UiXSA9IHRoaXMu
X2ludm9rZS5iaW5kKHRoaXMsIG1ldGhvZCwgc2lnbmF0dXJlKTsKLSAgICAgICAgYWdlbnRbZG9t
YWluQW5kTWV0aG9kWzFdXVsicHJvbWlzZSJdID0gdGhpcy5fcHJvbWlzZS5iaW5kKHRoaXMsIG1l
dGhvZCwgc2lnbmF0dXJlKTsKLSAgICAgICAgYWdlbnRbZG9tYWluQW5kTWV0aG9kWzFdXVsic3Vw
cG9ydHMiXSA9IHRoaXMuX3N1cHBvcnRzLmJpbmQodGhpcywgbWV0aG9kLCBzaWduYXR1cmUpOwog
ICAgICAgICB0aGlzLl9yZXBseUFyZ3NbbWV0aG9kXSA9IHJlcGx5QXJnczsKICAgICB9LAogCkBA
IC04OSwxMDMgKzEwMyw5IEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGFnZW50W2RvbWFpbkFuZE1ldGhvZFsxXV0gPSB2YWx1ZXM7CiAgICAgfSwKIAotICAg
IHJlZ2lzdGVyRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50TmFtZSwgcGFyYW1zKQotICAgIHsKLSAgICAg
ICAgdGhpcy5fZXZlbnRBcmdzW2V2ZW50TmFtZV0gPSBwYXJhbXM7Ci0gICAgfSwKLQotICAgIF9p
bnZva2U6IGZ1bmN0aW9uKG1ldGhvZCwgc2lnbmF0dXJlLCBhcmdzLCBjYWxsYmFjaykKLSAgICB7
Ci0gICAgICAgIHRoaXMuX3dyYXBDYWxsYmFja0FuZFNlbmRNZXNzYWdlT2JqZWN0KG1ldGhvZCwg
YXJncywgY2FsbGJhY2spOwotICAgIH0sCi0KLSAgICBfcHJvbWlzZTogZnVuY3Rpb24obWV0aG9k
LCBzaWduYXR1cmUpCi0gICAgewotICAgICAgICB2YXIgYmFja2VuZCA9IHRoaXM7Ci0gICAgICAg
IHZhciBwcm9taXNlQXJndW1lbnRzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1l
bnRzKTsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVj
dCkgewotICAgICAgICAgICAgZnVuY3Rpb24gY29udmVydFRvUHJvbWlzZUNhbGxiYWNrKGVycm9y
LCBwYXlsb2FkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAg
ICAgICByZWplY3QoZXJyb3IpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgcmVzb2x2ZShwYXlsb2FkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHByb21p
c2VBcmd1bWVudHMucHVzaChjb252ZXJ0VG9Qcm9taXNlQ2FsbGJhY2spOwotICAgICAgICAgICAg
YmFja2VuZC5fc2VuZE1lc3NhZ2VUb0JhY2tlbmQuYXBwbHkoYmFja2VuZCwgcHJvbWlzZUFyZ3Vt
ZW50cyk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBfc3VwcG9ydHM6IGZ1bmN0aW9uKG1l
dGhvZCwgc2lnbmF0dXJlLCBwYXJhbU5hbWUpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHNpZ25hdHVyZS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKHNpZ25hdHVy
ZVtpXVsibmFtZSJdID09PSBwYXJhbU5hbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQotICAgIF9zZW5k
TWVzc2FnZVRvQmFja2VuZDogZnVuY3Rpb24obWV0aG9kLCBzaWduYXR1cmUsIHZhcmFyZykKLSAg
ICB7Ci0gICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1l
bnRzLCAyKTsKLSAgICAgICAgdmFyIGNhbGxiYWNrID0gdHlwZW9mIGFyZ3MubGFzdFZhbHVlID09
PSAiZnVuY3Rpb24iID8gYXJncy5wb3AoKSA6IG51bGw7Ci0KLSAgICAgICAgdmFyIHBhcmFtcyA9
IHt9OwotICAgICAgICB2YXIgaGFzUGFyYW1zID0gZmFsc2U7Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgc2lnbmF0dXJlLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgcGFyYW0g
PSBzaWduYXR1cmVbaV07Ci0gICAgICAgICAgICB2YXIgcGFyYW1OYW1lID0gcGFyYW1bIm5hbWUi
XTsKLSAgICAgICAgICAgIHZhciB0eXBlTmFtZSA9IHBhcmFtWyJ0eXBlIl07Ci0gICAgICAgICAg
ICB2YXIgb3B0aW9uYWxGbGFnID0gcGFyYW1bIm9wdGlvbmFsIl07Ci0KLSAgICAgICAgICAgIGlm
ICghYXJncy5sZW5ndGggJiYgIW9wdGlvbmFsRmxhZykgewotICAgICAgICAgICAgICAgIGNvbnNv
bGUuZXJyb3IoIlByb3RvY29sIEVycm9yOiBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgZm9y
IG1ldGhvZCAnIiArIG1ldGhvZCArICInIGNhbGwuIEl0IG11c3QgaGF2ZSB0aGUgZm9sbG93aW5n
IGFyZ3VtZW50cyAnIiArIEpTT04uc3RyaW5naWZ5KHNpZ25hdHVyZSkgKyAiJy4iKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciB2YWx1
ZSA9IGFyZ3Muc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChvcHRpb25hbEZsYWcgJiYgdHlwZW9m
IHZhbHVlID09PSAidW5kZWZpbmVkIikgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSB0eXBlTmFtZSkg
ewotICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlByb3RvY29sIEVycm9yOiBJbnZhbGlk
IHR5cGUgb2YgYXJndW1lbnQgJyIgKyBwYXJhbU5hbWUgKyAiJyBmb3IgbWV0aG9kICciICsgbWV0
aG9kICsgIicgY2FsbC4gSXQgbXVzdCBiZSAnIiArIHR5cGVOYW1lICsgIicgYnV0IGl0IGlzICci
ICsgdHlwZW9mIHZhbHVlICsgIicuIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBwYXJhbXNbcGFyYW1OYW1lXSA9IHZhbHVlOwotICAgICAg
ICAgICAgaGFzUGFyYW1zID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChhcmdzLmxl
bmd0aCA9PT0gMSAmJiAhY2FsbGJhY2spIHsKLSAgICAgICAgICAgIGlmICh0eXBlb2YgYXJnc1sw
XSAhPT0gInVuZGVmaW5lZCIpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJQcm90
b2NvbCBFcnJvcjogT3B0aW9uYWwgY2FsbGJhY2sgYXJndW1lbnQgZm9yIG1ldGhvZCAnIiArIG1l
dGhvZCArICInIGNhbGwgbXVzdCBiZSBhIGZ1bmN0aW9uIGJ1dCBpdHMgdHlwZSBpcyAnIiArIHR5
cGVvZiBhcmdzWzBdICsgIicuIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fd3JhcENhbGxiYWNrQW5kU2VuZE1lc3Nh
Z2VPYmplY3QobWV0aG9kLCBoYXNQYXJhbXMgPyBwYXJhbXMgOiBudWxsLCBjYWxsYmFjayk7Ci0g
ICAgfSwKLQotICAgIF93cmFwQ2FsbGJhY2tBbmRTZW5kTWVzc2FnZU9iamVjdDogZnVuY3Rpb24o
bWV0aG9kLCBwYXJhbXMsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdmFyIG1lc3NhZ2VPYmpl
Y3QgPSB7fTsKLSAgICAgICAgbWVzc2FnZU9iamVjdC5tZXRob2QgPSBtZXRob2Q7Ci0gICAgICAg
IGlmIChwYXJhbXMpCi0gICAgICAgICAgICBtZXNzYWdlT2JqZWN0LnBhcmFtcyA9IHBhcmFtczsK
LSAgICAgICAgbWVzc2FnZU9iamVjdC5pZCA9IHRoaXMuX3dyYXAoY2FsbGJhY2ssIG1ldGhvZCk7
Ci0KLSAgICAgICAgaWYgKHRoaXMuZHVtcEluc3BlY3RvclByb3RvY29sTWVzc2FnZXMpCi0gICAg
ICAgICAgICBjb25zb2xlLmxvZygiZnJvbnRlbmQ6ICIgKyBKU09OLnN0cmluZ2lmeShtZXNzYWdl
T2JqZWN0KSk7Ci0KLSAgICAgICAgKyt0aGlzLl9wZW5kaW5nUmVzcG9uc2VzQ291bnQ7Ci0gICAg
ICAgIHRoaXMuc2VuZE1lc3NhZ2VPYmplY3RUb0JhY2tlbmQobWVzc2FnZU9iamVjdCk7Ci0gICAg
fSwKLQotICAgIHNlbmRNZXNzYWdlT2JqZWN0VG9CYWNrZW5kOiBmdW5jdGlvbihtZXNzYWdlT2Jq
ZWN0KQorICAgIHJlZ2lzdGVyRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50TmFtZSwgcGFyYW1ldGVycykK
ICAgICB7Ci0gICAgICAgIHZhciBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVj
dCk7Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZW5kTWVzc2FnZVRvQmFja2VuZCht
ZXNzYWdlKTsKKyAgICAgICAgdGhpcy5fZXZlbnRBcmdzW2V2ZW50TmFtZV0gPSBwYXJhbWV0ZXJz
OwogICAgIH0sCiAKICAgICByZWdpc3RlckRvbWFpbkRpc3BhdGNoZXI6IGZ1bmN0aW9uKGRvbWFp
biwgZGlzcGF0Y2hlcikKQEAgLTMxMSwzICsyMzEsOTYgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNz
LnByb3RvdHlwZSA9IHsKIH0KIAogSW5zcGVjdG9yQmFja2VuZCA9IG5ldyBJbnNwZWN0b3JCYWNr
ZW5kQ2xhc3MoKTsKKworSW5zcGVjdG9yQmFja2VuZENvbW1hbmQgPSBmdW5jdGlvbihiYWNrZW5k
LCBtZXRob2ROYW1lLCBjYWxsU2lnbmF0dXJlKQoreworICAgIHRoaXMuX2JhY2tlbmQgPSBiYWNr
ZW5kOworICAgIHRoaXMubWV0aG9kTmFtZSA9IG1ldGhvZE5hbWU7CisgICAgdGhpcy5fY2FsbFNp
Z25hdHVyZSA9IGNhbGxTaWduYXR1cmU7CisgICAgdGhpcy5faW5zdGFuY2UgPSB0aGlzOworfQor
CitJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZC5jcmVhdGUgPSBmdW5jdGlvbihiYWNrZW5kLCBtZXRo
b2ROYW1lLCBjYWxsU2lnbmF0dXJlKQoreworICAgIHZhciBpbnN0YW5jZSA9IG5ldyBJbnNwZWN0
b3JCYWNrZW5kQ29tbWFuZChiYWNrZW5kLCBtZXRob2ROYW1lLCBjYWxsU2lnbmF0dXJlKTsKKwor
ICAgIGZ1bmN0aW9uIGNhbGxhYmxlKCkgeworICAgICAgICBpbnN0YW5jZS5faW52b2tlV2l0aEFy
Z3VtZW50cy5hcHBseShpbnN0YW5jZSwgYXJndW1lbnRzKTsKKyAgICB9CisgICAgY2FsbGFibGUu
X2luc3RhbmNlID0gaW5zdGFuY2U7CisgICAgY2FsbGFibGUuX19wcm90b19fID0gSW5zcGVjdG9y
QmFja2VuZENvbW1hbmQucHJvdG90eXBlOworICAgIHJldHVybiBjYWxsYWJsZTsKK30KKworLy8g
QXMgcGFydCBvZiB0aGUgd29ya2Fyb3VuZCB0byBtYWtlIGNvbW1hbmRzIGNhbGxhYmxlLCB0aGVz
ZSBmdW5jdGlvbnMgdXNlIHx0aGlzLl9pbnN0YW5jZXwuCisvLyB8dGhpc3wgY291bGQgcmVmZXIg
dG8gdGhlIGNhbGxhYmxlIHRyYW1wb2xpbmUsIG9yIHRoZSBJbnNwZWN0b3JCYWNrZW5kQ29tbWFu
ZCBpbnN0YW5jZS4KK0luc3BlY3RvckJhY2tlbmRDb21tYW5kLnByb3RvdHlwZSA9IHsKKyAgICBf
X3Byb3RvX186IEZ1bmN0aW9uLnByb3RvdHlwZSwKKworICAgIGludm9rZTogZnVuY3Rpb24oYXJn
cywgY2FsbGJhY2spCisgICAgeworICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzLl9pbnN0YW5j
ZTsKKyAgICAgICAgaW5zdGFuY2UuX2JhY2tlbmQuX2ludm9rZU1ldGhvZChpbnN0YW5jZSwgYXJn
cywgY2FsbGJhY2spOworICAgIH0sCisKKyAgICBwcm9taXNlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzLl9pbnN0YW5jZTsKKyAgICAgICAgdmFyIHByb21p
c2VBcmd1bWVudHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOworICAg
ICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAg
ICAgICAgICBmdW5jdGlvbiBjb252ZXJ0VG9Qcm9taXNlQ2FsbGJhY2soZXJyb3IsIHBheWxvYWQp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IgPyByZWplY3QoZXJyb3IpIDogcmVzb2x2
ZShwYXlsb2FkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByb21pc2VBcmd1bWVudHMu
cHVzaChjb252ZXJ0VG9Qcm9taXNlQ2FsbGJhY2spOworICAgICAgICAgICAgaW5zdGFuY2UuX2lu
dm9rZVdpdGhBcmd1bWVudHMuYXBwbHkoaW5zdGFuY2UsIHByb21pc2VBcmd1bWVudHMpOworICAg
ICAgICB9KTsKKyAgICB9LAorCisgICAgc3VwcG9ydHM6IGZ1bmN0aW9uKHBhcmFtZXRlck5hbWUp
CisgICAgeworICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzLl9pbnN0YW5jZTsKKyAgICAgICAg
cmV0dXJuIGluc3RhbmNlLl9jYWxsU2lnbmF0dXJlLmFueShmdW5jdGlvbihwYXJhbWV0ZXIpIHsK
KyAgICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJbIm5hbWUiXSA9PT0gcGFyYW1ldGVyTmFtZQor
ICAgICAgICB9KTsKKyAgICB9LAorCisgICAgX2ludm9rZVdpdGhBcmd1bWVudHM6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXMuX2luc3RhbmNlOworICAgICAg
ICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7CisgICAg
ICAgIHZhciBjYWxsYmFjayA9IHR5cGVvZiBhcmdzLmxhc3RWYWx1ZSA9PT0gImZ1bmN0aW9uIiA/
IGFyZ3MucG9wKCkgOiBudWxsOworCisgICAgICAgIHZhciBwYXJhbWV0ZXJzID0ge307CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5zdGFuY2UuX2NhbGxTaWduYXR1cmUubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgIHZhciBwYXJhbWV0ZXIgPSBpbnN0YW5jZS5fY2FsbFNpZ25hdHVy
ZVtpXTsKKyAgICAgICAgICAgIHZhciBwYXJhbWV0ZXJOYW1lID0gcGFyYW1ldGVyWyJuYW1lIl07
CisgICAgICAgICAgICB2YXIgdHlwZU5hbWUgPSBwYXJhbWV0ZXJbInR5cGUiXTsKKyAgICAgICAg
ICAgIHZhciBvcHRpb25hbEZsYWcgPSBwYXJhbWV0ZXJbIm9wdGlvbmFsIl07CisKKyAgICAgICAg
ICAgIGlmICghYXJncy5sZW5ndGggJiYgIW9wdGlvbmFsRmxhZykgeworICAgICAgICAgICAgICAg
IGNvbnNvbGUuZXJyb3IoIlByb3RvY29sIEVycm9yOiBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVu
dHMgZm9yIG1ldGhvZCAnIiArIGluc3RhbmNlLm1ldGhvZE5hbWUgKyAiJyBjYWxsLiBJdCBtdXN0
IGhhdmUgdGhlIGZvbGxvd2luZyBhcmd1bWVudHMgJyIgKyBKU09OLnN0cmluZ2lmeShzaWduYXR1
cmUpICsgIicuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgdmFsdWUgPSBhcmdzLnNoaWZ0KCk7CisgICAgICAgICAgICBpZiAob3B0
aW9uYWxGbGFnICYmIHR5cGVvZiB2YWx1ZSA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IHR5cGVOYW1l
KSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiUHJvdG9jb2wgRXJyb3I6IEludmFs
aWQgdHlwZSBvZiBhcmd1bWVudCAnIiArIHBhcmFtZXRlck5hbWUgKyAiJyBmb3IgbWV0aG9kICci
ICsgaW5zdGFuY2UubWV0aG9kTmFtZSArICInIGNhbGwuIEl0IG11c3QgYmUgJyIgKyB0eXBlTmFt
ZSArICInIGJ1dCBpdCBpcyAnIiArIHR5cGVvZiB2YWx1ZSArICInLiIpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcGFyYW1ldGVyc1twYXJh
bWV0ZXJOYW1lXSA9IHZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3Ro
ID09PSAxICYmICFjYWxsYmFjaykgeworICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdICE9
PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlByb3RvY29s
IEVycm9yOiBPcHRpb25hbCBjYWxsYmFjayBhcmd1bWVudCBmb3IgbWV0aG9kICciICsgaW5zdGFu
Y2UubWV0aG9kTmFtZSArICInIGNhbGwgbXVzdCBiZSBhIGZ1bmN0aW9uIGJ1dCBpdHMgdHlwZSBp
cyAnIiArIHR5cGVvZiBhcmdzWzBdICsgIicuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaW5zdGFuY2UuX2JhY2tlbmQuX2lu
dm9rZU1ldGhvZChpbnN0YW5jZSwgT2JqZWN0LmtleXMocGFyYW1ldGVycykubGVuZ3RoID8gcGFy
YW1ldGVycyA6IG51bGwsIGNhbGxiYWNrKTsKKyAgICB9LAorfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>