<?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>140709</bug_id>
          
          <creation_ts>2015-01-20 18:17:13 -0800</creation_ts>
          <short_desc>Web Inspector: Clean up InjectedScriptSource.js</short_desc>
          <delta_ts>2015-01-20 20:22:25 -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</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>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>burg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1062971</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-01-20 18:17:13 -0800</bug_when>
    <thetext>* SUMMARY
Clean up InjectedScriptSource.js.

1. Remove unused/stale ClosureCompiler comments
2. Simple formatting / style / logic cleanup
3. Port some fixes from Blink where they make sense</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062972</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-01-20 18:17:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/19542943&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062978</commentid>
    <comment_count>2</comment_count>
      <attachid>245039</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-01-20 18:31:51 -0800</bug_when>
    <thetext>Created attachment 245039
[PATCH] Proposed Fix

All tests stayed the same. Did some basic testing and everything worked as expected. Including verifying the fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062987</commentid>
    <comment_count>3</comment_count>
      <attachid>245039</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-20 20:22:21 -0800</bug_when>
    <thetext>Comment on attachment 245039
[PATCH] Proposed Fix

Clearing flags on attachment: 245039

Committed r178796: &lt;http://trac.webkit.org/changeset/178796&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062988</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-20 20:22:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245039</attachid>
            <date>2015-01-20 18:31:51 -0800</date>
            <delta_ts>2015-01-20 20:22:21 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>inject.patch</filename>
            <type>text/plain</type>
            <size>25452</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGM2OGJiMzUuLjliZTIxNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDE1LTAxLTIwICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ2xlYW4g
dXAgSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MDcwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgc29tZSByZWxldmFudCBCbGlu
ayBwYXRjaGVzIGFuZCBzbWFsbCBjaGFuZ2VzLgorICAgICAgICAKKyAgICAgICAgUGF0Y2ggYnkg
PGFhbmRyZXlAY2hyb21pdW0ub3JnPgorICAgICAgICBEZXZUb29sczogUmVtb3ZlIGNvbnNvbGUg
bGFzdCByZXN1bHQgJF8gb24gY29uc29sZSBjbGVhci4KKyAgICAgICAgaHR0cHM6Ly9zcmMuY2hy
b21pdW0ub3JnL3ZpZXd2Yy9ibGluaz9yZXZpc2lvbj0xNzkxNzkmdmlldz1yZXZpc2lvbgorCisg
ICAgICAgIFBhdGNoIGJ5IDxldXN0YXNAY2hyb21pdW0ub3JnPgorICAgICAgICBbSW5zcGVjdCBE
T00gcHJvcGVydGllc10gaW5jb3JyZWN0IENTUyBTZWxlY3RvciBTeW50YXgKKyAgICAgICAgaHR0
cHM6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9ibGluaz9yZXZpc2lvbj0xNTY5MDMmdmlldz1y
ZXZpc2lvbgorCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzOgor
CisyMDE1LTAxLTIwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogQ2xlYW51cCBSdW50aW1lQWdlbnQgYSBiaXQKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDcwNgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5qcwppbmRleCBjNzUxN2EzLi45M2Y5YmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTI4LDE5ICsy
OCwxMSBAQAogCiAvLyMgc291cmNlVVJMPV9fV2ViSW5zcGVjdG9ySW5qZWN0ZWRTY3JpcHRfXwog
Ci0vKioKLSAqIEBwYXJhbSB7SW5qZWN0ZWRTY3JpcHRIb3N0fSBJbmplY3RlZFNjcmlwdEhvc3QK
LSAqIEBwYXJhbSB7R2xvYmFsT2JqZWN0fSBpbnNwZWN0ZWRHbG9iYWxPYmplY3QKLSAqIEBwYXJh
bSB7bnVtYmVyfSBpbmplY3RlZFNjcmlwdElkCi0gKi8KIChmdW5jdGlvbiAoSW5qZWN0ZWRTY3Jp
cHRIb3N0LCBpbnNwZWN0ZWRHbG9iYWxPYmplY3QsIGluamVjdGVkU2NyaXB0SWQpIHsKIAogLy8g
UHJvdGVjdCBhZ2FpbnN0IE9iamVjdCBvdmVyd3JpdHRlbiBieSB0aGUgdXNlciBjb2RlLgogdmFy
IE9iamVjdCA9IHt9LmNvbnN0cnVjdG9yOwogCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICovCiB2
YXIgSW5qZWN0ZWRTY3JpcHQgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5fbGFzdEJvdW5kT2Jq
ZWN0SWQgPSAxOwpAQCAtNTAsMTAgKzQyLDYgQEAgdmFyIEluamVjdGVkU2NyaXB0ID0gZnVuY3Rp
b24oKQogICAgIHRoaXMuX21vZHVsZXMgPSB7fTsKIH0KIAotLyoqCi0gKiBAdHlwZSB7T2JqZWN0
LjxzdHJpbmcsIGJvb2xlYW4+fQotICogQGNvbnN0Ci0gKi8KIEluamVjdGVkU2NyaXB0LnByaW1p
dGl2ZVR5cGVzID0gewogICAgIHVuZGVmaW5lZDogdHJ1ZSwKICAgICBib29sZWFuOiB0cnVlLApA
QCAtNjIsMjMgKzUwLDEyIEBAIEluamVjdGVkU2NyaXB0LnByaW1pdGl2ZVR5cGVzID0gewogfQog
CiBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHsq
fSBvYmplY3QKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQotICAgICAqLwogICAgIGlzUHJpbWl0
aXZlVmFsdWU6IGZ1bmN0aW9uKG9iamVjdCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FKDMzNzE2
KTogdHlwZW9mIGRvY3VtZW50LmFsbCBpcyBhbHdheXMgJ3VuZGVmaW5lZCcuCiAgICAgICAgIHJl
dHVybiBJbmplY3RlZFNjcmlwdC5wcmltaXRpdmVUeXBlc1t0eXBlb2Ygb2JqZWN0XSAmJiAhdGhp
cy5faXNIVE1MQWxsQ29sbGVjdGlvbihvYmplY3QpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAg
KiBAcGFyYW0geyp9IG9iamVjdAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBncm91cE5hbWUKLSAg
ICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNhbkFjY2Vzc0luc3BlY3RlZEdsb2JhbE9iamVjdAotICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gZ2VuZXJhdGVQcmV2aWV3Ci0gICAgICogQHJldHVybiB7IVJ1
bnRpbWVBZ2VudC5SZW1vdGVPYmplY3R9Ci0gICAgICovCiAgICAgd3JhcE9iamVjdDogZnVuY3Rp
b24ob2JqZWN0LCBncm91cE5hbWUsIGNhbkFjY2Vzc0luc3BlY3RlZEdsb2JhbE9iamVjdCwgZ2Vu
ZXJhdGVQcmV2aWV3KQogICAgIHsKICAgICAgICAgaWYgKGNhbkFjY2Vzc0luc3BlY3RlZEdsb2Jh
bE9iamVjdCkKQEAgLTk2LDEwICs3Myw2IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgZGVsZXRlIHRoaXMuX2V4Y2VwdGlvblZhbHVlOwogICAgIH0sCiAKLSAgICAvKioK
LSAgICAgKiBAcGFyYW0geyp9IG9iamVjdAotICAgICAqIEByZXR1cm4geyFSdW50aW1lQWdlbnQu
UmVtb3RlT2JqZWN0fQotICAgICAqLwogICAgIF9mYWxsYmFja1dyYXBwZXI6IGZ1bmN0aW9uKG9i
amVjdCkKICAgICB7CiAgICAgICAgIHZhciByZXN1bHQgPSB7fTsKQEAgLTEwOCwxNSArODEsOSBA
QCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXN1bHQudmFsdWUg
PSBvYmplY3Q7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdC5kZXNjcmlwdGlvbiA9
IHRoaXMuX3RvU3RyaW5nKG9iamVjdCk7Ci0gICAgICAgIHJldHVybiAvKiogQHR5cGUgeyFSdW50
aW1lQWdlbnQuUmVtb3RlT2JqZWN0fSAqLyAocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtib29sZWFufSBjYW5BY2Nlc3NJ
bnNwZWN0ZWRHbG9iYWxPYmplY3QKLSAgICAgKiBAcGFyYW0ge09iamVjdH0gdGFibGUKLSAgICAg
KiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+fHN0cmluZ3xib29sZWFufSBjb2x1bW5zCi0gICAgICog
QHJldHVybiB7IVJ1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3R9Ci0gICAgICovCiAgICAgd3JhcFRh
YmxlOiBmdW5jdGlvbihjYW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3QsIHRhYmxlLCBjb2x1
bW5zKQogICAgIHsKICAgICAgICAgaWYgKCFjYW5BY2Nlc3NJbnNwZWN0ZWRHbG9iYWxPYmplY3Qp
CkBAIC0xMjQsNyArOTEsNyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBjb2x1bW5OYW1lcyA9IG51bGw7CiAgICAgICAgIGlmICh0eXBlb2YgY29sdW1ucyA9PT0g
InN0cmluZyIpCiAgICAgICAgICAgICBjb2x1bW5zID0gW2NvbHVtbnNdOwotICAgICAgICBpZiAo
SW5qZWN0ZWRTY3JpcHRIb3N0LnR5cGUoY29sdW1ucykgPT0gImFycmF5IikgeworICAgICAgICBp
ZiAoSW5qZWN0ZWRTY3JpcHRIb3N0LnR5cGUoY29sdW1ucykgPT09ICJhcnJheSIpIHsKICAgICAg
ICAgICAgIGNvbHVtbk5hbWVzID0gW107CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNvbHVtbnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICAgICAgY29sdW1uTmFtZXMucHVzaChT
dHJpbmcoY29sdW1uc1tpXSkpOwpAQCAtMTMyLDI1ICs5OSwxMiBAQCBJbmplY3RlZFNjcmlwdC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl93cmFwT2JqZWN0KHRhYmxlLCAiY29u
c29sZSIsIGZhbHNlLCB0cnVlLCBjb2x1bW5OYW1lcyk7CiAgICAgfSwKIAotICAgIC8qKgotICAg
ICAqIEBwYXJhbSB7Kn0gb2JqZWN0Ci0gICAgICovCiAgICAgaW5zcGVjdE9iamVjdDogZnVuY3Rp
b24ob2JqZWN0KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2NvbW1hbmRMaW5lQVBJSW1wbCkK
ICAgICAgICAgICAgIHRoaXMuX2NvbW1hbmRMaW5lQVBJSW1wbC5pbnNwZWN0KG9iamVjdCk7CiAg
ICAgfSwKIAotICAgIC8qKgotICAgICAqIFRoaXMgbWV0aG9kIGNhbm5vdCB0aHJvdy4KLSAgICAg
KiBAcGFyYW0geyp9IG9iamVjdAotICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gb2JqZWN0R3JvdXBO
YW1lCi0gICAgICogQHBhcmFtIHtib29sZWFuPX0gZm9yY2VWYWx1ZVR5cGUKLSAgICAgKiBAcGFy
YW0ge2Jvb2xlYW49fSBnZW5lcmF0ZVByZXZpZXcKLSAgICAgKiBAcGFyYW0gez9BcnJheS48c3Ry
aW5nPj19IGNvbHVtbk5hbWVzCi0gICAgICogQHJldHVybiB7IVJ1bnRpbWVBZ2VudC5SZW1vdGVP
YmplY3R9Ci0gICAgICogQHN1cHByZXNzIHtjaGVja1R5cGVzfQotICAgICAqLwogICAgIF93cmFw
T2JqZWN0OiBmdW5jdGlvbihvYmplY3QsIG9iamVjdEdyb3VwTmFtZSwgZm9yY2VWYWx1ZVR5cGUs
IGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMpCiAgICAgewogICAgICAgICB0cnkgewpAQCAt
MTY1LDExICsxMTksNiBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
ICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHsqfSBvYmplY3QKLSAgICAgKiBAcGFy
YW0ge3N0cmluZz19IG9iamVjdEdyb3VwTmFtZQotICAgICAqIEByZXR1cm4ge3N0cmluZ30KLSAg
ICAgKi8KICAgICBfYmluZDogZnVuY3Rpb24ob2JqZWN0LCBvYmplY3RHcm91cE5hbWUpCiAgICAg
ewogICAgICAgICB2YXIgaWQgPSB0aGlzLl9sYXN0Qm91bmRPYmplY3RJZCsrOwpAQCAtMTg3LDIw
ICsxMzYsMTUgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
b2JqZWN0SWQ7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvYmpl
Y3RJZAotICAgICAqIEByZXR1cm4ge09iamVjdH0KLSAgICAgKi8KICAgICBfcGFyc2VPYmplY3RJ
ZDogZnVuY3Rpb24ob2JqZWN0SWQpCiAgICAgewogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3Jp
cHRIb3N0LmV2YWx1YXRlKCIoIiArIG9iamVjdElkICsgIikiKTsKICAgICB9LAogCi0gICAgLyoq
Ci0gICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdEdyb3VwTmFtZQotICAgICAqLwogICAgIHJl
bGVhc2VPYmplY3RHcm91cDogZnVuY3Rpb24ob2JqZWN0R3JvdXBOYW1lKQogICAgIHsKKyAgICAg
ICAgaWYgKG9iamVjdEdyb3VwTmFtZSA9PT0gImNvbnNvbGUiKQorICAgICAgICAgICAgZGVsZXRl
IHRoaXMuX2xhc3RSZXN1bHQ7CiAgICAgICAgIHZhciBncm91cCA9IHRoaXMuX29iamVjdEdyb3Vw
c1tvYmplY3RHcm91cE5hbWVdOwogICAgICAgICBpZiAoIWdyb3VwKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjA5LDExICsxNTMsNiBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9vYmplY3RHcm91cHNbb2JqZWN0R3JvdXBOYW1lXTsKICAgICB9
LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUKLSAgICAgKiBA
cGFyYW0ge3N0cmluZ30gYXJncwotICAgICAqIEByZXR1cm4geyp9Ci0gICAgICovCiAgICAgZGlz
cGF0Y2g6IGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGFyZ3MpCiAgICAgewogICAgICAgICB2YXIgYXJn
c0FycmF5ID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKCIoIiArIGFyZ3MgKyAiKSIpOwpA
QCAtMjU1LDEwICsxOTQsNiBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHJldHVybiBkZXNjcmlwdG9yczsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtz
dHJpbmd9IG9iamVjdElkCi0gICAgICogQHJldHVybiB7QXJyYXkuPE9iamVjdD58Ym9vbGVhbn0K
LSAgICAgKi8KICAgICBnZXRJbnRlcm5hbFByb3BlcnRpZXM6IGZ1bmN0aW9uKG9iamVjdElkLCBv
d25Qcm9wZXJ0aWVzKQogICAgIHsKICAgICAgICAgdmFyIHBhcnNlZE9iamVjdElkID0gdGhpcy5f
cGFyc2VPYmplY3RJZChvYmplY3RJZCk7CkBAIC0yNjYsNiArMjAxLDcgQEAgSW5qZWN0ZWRTY3Jp
cHQucHJvdG90eXBlID0gewogICAgICAgICB2YXIgb2JqZWN0R3JvdXBOYW1lID0gdGhpcy5faWRU
b09iamVjdEdyb3VwTmFtZVtwYXJzZWRPYmplY3RJZC5pZF07CiAgICAgICAgIGlmICghdGhpcy5f
aXNEZWZpbmVkKG9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAg
dmFyIGRlc2NyaXB0b3JzID0gW107CiAgICAgICAgIHZhciBpbnRlcm5hbFByb3BlcnRpZXMgPSBJ
bmplY3RlZFNjcmlwdEhvc3QuZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKG9iamVjdCk7CiAgICAgICAg
IGlmIChpbnRlcm5hbFByb3BlcnRpZXMpIHsKQEAgLTI3OCwxMyArMjE0LDEwIEBAIEluamVjdGVk
U2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBkZXNjcmlwdG9ycy5wdXNoKGRl
c2NyaXB0b3IpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIGRl
c2NyaXB0b3JzOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnVu
Y3Rpb25JZAotICAgICAqIEByZXR1cm4geyFEZWJ1Z2dlckFnZW50LkZ1bmN0aW9uRGV0YWlsc3xz
dHJpbmd9Ci0gICAgICovCiAgICAgZ2V0RnVuY3Rpb25EZXRhaWxzOiBmdW5jdGlvbihmdW5jdGlv
bklkKQogICAgIHsKICAgICAgICAgdmFyIHBhcnNlZEZ1bmN0aW9uSWQgPSB0aGlzLl9wYXJzZU9i
amVjdElkKGZ1bmN0aW9uSWQpOwpAQCAtMzA2LDQzICsyMzksMjMgQEAgSW5qZWN0ZWRTY3JpcHQu
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gZGV0YWlsczsKICAgICB9LAogCi0gICAgLyoq
Ci0gICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdElkCi0gICAgICovCiAgICAgcmVsZWFzZU9i
amVjdDogZnVuY3Rpb24ob2JqZWN0SWQpCiAgICAgewogICAgICAgICB2YXIgcGFyc2VkT2JqZWN0
SWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKICAgICAgICAgdGhpcy5fcmVsZWFz
ZU9iamVjdChwYXJzZWRPYmplY3RJZC5pZCk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBpZAotICAgICAqLwogICAgIF9yZWxlYXNlT2JqZWN0OiBmdW5jdGlvbihp
ZCkKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9pZFRvV3JhcHBlZE9iamVjdFtpZF07CiAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9pZFRvT2JqZWN0R3JvdXBOYW1lW2lkXTsKICAgICB9LAogCi0g
ICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IGV4cHJlc3Npb24KLSAgICAgKiBAcGFyYW0g
e3N0cmluZ30gb2JqZWN0R3JvdXAKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluamVjdENvbW1h
bmRMaW5lQVBJCi0gICAgICogQHBhcmFtIHtib29sZWFufSByZXR1cm5CeVZhbHVlCi0gICAgICog
QHBhcmFtIHtib29sZWFufSBnZW5lcmF0ZVByZXZpZXcKLSAgICAgKiBAcmV0dXJuIHsqfQotICAg
ICAqLwogICAgIGV2YWx1YXRlOiBmdW5jdGlvbihleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5q
ZWN0Q29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldykKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9ldmFsdWF0ZUFuZFdyYXAoSW5qZWN0ZWRTY3JpcHRIb3N0
LmV2YWx1YXRlLCBJbmplY3RlZFNjcmlwdEhvc3QsIGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBm
YWxzZSwgaW5qZWN0Q29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmll
dyk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvYmplY3RJZAot
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uCi0gICAgICogQHBhcmFtIHtib29sZWFu
fSByZXR1cm5CeVZhbHVlCi0gICAgICogQHJldHVybiB7T2JqZWN0fHN0cmluZ30KLSAgICAgKi8K
ICAgICBjYWxsRnVuY3Rpb25PbjogZnVuY3Rpb24ob2JqZWN0SWQsIGV4cHJlc3Npb24sIGFyZ3Ms
IHJldHVybkJ5VmFsdWUpCiAgICAgewogICAgICAgICB2YXIgcGFyc2VkT2JqZWN0SWQgPSB0aGlz
Ll9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKQEAgLTM1MiwxNSArMjY1LDEzIEBAIEluamVjdGVk
U2NyaXB0LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoYXJncykgewogICAgICAgICAgICAg
dmFyIHJlc29sdmVkQXJncyA9IFtdOwotICAgICAgICAgICAgYXJncyA9IEluamVjdGVkU2NyaXB0
SG9zdC5ldmFsdWF0ZShhcmdzKTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJn
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHZhciByZXNvbHZlZENhbGxBcmd1bWVu
dDsKKyAgICAgICAgICAgIHZhciBjYWxsQXJncyA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0
ZShhcmdzKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbEFyZ3MubGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICByZXNv
bHZlZENhbGxBcmd1bWVudCA9IHRoaXMuX3Jlc29sdmVDYWxsQXJndW1lbnQoYXJnc1tpXSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXJnc1tpXSA9IHRoaXMuX3Jlc29sdmVDYWxsQXJn
dW1lbnQoY2FsbEFyZ3NbaV0pOwogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgcmVzb2x2ZWRBcmdzLnB1c2gocmVzb2x2ZWRDYWxsQXJndW1lbnQpCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMzcwLDE5ICsyODEsMTUgQEAgSW5qZWN0ZWRTY3Jp
cHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9PSAiZnVuY3Rp
b24iKQogICAgICAgICAgICAgICAgIHJldHVybiAiR2l2ZW4gZXhwcmVzc2lvbiBkb2VzIG5vdCBl
dmFsdWF0ZSB0byBhIGZ1bmN0aW9uIjsKIAotICAgICAgICAgICAgcmV0dXJuIHsgd2FzVGhyb3du
OiBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDogdGhpcy5fd3JhcE9iamVjdChm
dW5jLmFwcGx5KG9iamVjdCwgcmVzb2x2ZWRBcmdzKSwgb2JqZWN0R3JvdXAsIHJldHVybkJ5VmFs
dWUpIH07CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIHdhc1Rocm93bjog
ZmFsc2UsCisgICAgICAgICAgICAgICAgcmVzdWx0OiB0aGlzLl93cmFwT2JqZWN0KGZ1bmMuYXBw
bHkob2JqZWN0LCByZXNvbHZlZEFyZ3MpLCBvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSkKKyAg
ICAgICAgICAgIH07CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIHJldHVybiB0
aGlzLl9jcmVhdGVUaHJvd25WYWx1ZShlLCBvYmplY3RHcm91cCk7CiAgICAgICAgIH0KICAgICB9
LAogCi0gICAgLyoqCi0gICAgICogUmVzb2x2ZXMgYSB2YWx1ZSBmcm9tIENhbGxBcmd1bWVudCBk
ZXNjcmlwdGlvbi4KLSAgICAgKiBAcGFyYW0ge1J1bnRpbWVBZ2VudC5DYWxsQXJndW1lbnR9IGNh
bGxBcmd1bWVudEpzb24KLSAgICAgKiBAcmV0dXJuIHsqfSByZXNvbHZlZCB2YWx1ZQotICAgICAq
IEB0aHJvd3Mge3N0cmluZ30gZXJyb3IgbWVzc2FnZQotICAgICAqLwogICAgIF9yZXNvbHZlQ2Fs
bEFyZ3VtZW50OiBmdW5jdGlvbihjYWxsQXJndW1lbnRKc29uKSB7CiAgICAgICAgIHZhciBvYmpl
Y3RJZCA9IGNhbGxBcmd1bWVudEpzb24ub2JqZWN0SWQ7CiAgICAgICAgIGlmIChvYmplY3RJZCkg
ewpAQCAtMzk3LDU0ICszMDQsMzMgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgcmV0dXJuIHJlc29sdmVkQXJnOwogICAgICAgICB9IGVsc2UgaWYgKCJ2YWx1ZSIg
aW4gY2FsbEFyZ3VtZW50SnNvbikKICAgICAgICAgICAgIHJldHVybiBjYWxsQXJndW1lbnRKc29u
LnZhbHVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAg
ICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0g
e0Z1bmN0aW9ufSBldmFsRnVuY3Rpb24KLSAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0Ci0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdEdyb3VwCi0gICAgICogQHBhcmFtIHtib29sZWFu
fSBpc0V2YWxPbkNhbGxGcmFtZQotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5qZWN0Q29tbWFu
ZExpbmVBUEkKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJldHVybkJ5VmFsdWUKLSAgICAgKiBA
cGFyYW0ge2Jvb2xlYW59IGdlbmVyYXRlUHJldmlldwotICAgICAqIEByZXR1cm4geyp9Ci0gICAg
ICovCiAgICAgX2V2YWx1YXRlQW5kV3JhcDogZnVuY3Rpb24oZXZhbEZ1bmN0aW9uLCBvYmplY3Qs
IGV4cHJlc3Npb24sIG9iamVjdEdyb3VwLCBpc0V2YWxPbkNhbGxGcmFtZSwgaW5qZWN0Q29tbWFu
ZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldykKICAgICB7CiAgICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4geyB3YXNUaHJvd246IGZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0OiB0aGlzLl93cmFwT2JqZWN0KHRoaXMuX2V2YWx1YXRlT24oZXZh
bEZ1bmN0aW9uLCBvYmplY3QsIG9iamVjdEdyb3VwLCBleHByZXNzaW9uLCBpc0V2YWxPbkNhbGxG
cmFtZSwgaW5qZWN0Q29tbWFuZExpbmVBUEkpLCBvYmplY3RHcm91cCwgcmV0dXJuQnlWYWx1ZSwg
Z2VuZXJhdGVQcmV2aWV3KSB9OworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAg
ICB3YXNUaHJvd246IGZhbHNlLAorICAgICAgICAgICAgICAgIHJlc3VsdDogdGhpcy5fd3JhcE9i
amVjdCh0aGlzLl9ldmFsdWF0ZU9uKGV2YWxGdW5jdGlvbiwgb2JqZWN0LCBvYmplY3RHcm91cCwg
ZXhwcmVzc2lvbiwgaXNFdmFsT25DYWxsRnJhbWUsIGluamVjdENvbW1hbmRMaW5lQVBJKSwgb2Jq
ZWN0R3JvdXAsIHJldHVybkJ5VmFsdWUsIGdlbmVyYXRlUHJldmlldykKKyAgICAgICAgICAgIH07
CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVU
aHJvd25WYWx1ZShlLCBvYmplY3RHcm91cCk7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgLyoq
Ci0gICAgICogQHBhcmFtIHsqfSB2YWx1ZQotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvYmplY3RH
cm91cAotICAgICAqIEByZXR1cm4ge09iamVjdH0KLSAgICAgKi8KICAgICBfY3JlYXRlVGhyb3du
VmFsdWU6IGZ1bmN0aW9uKHZhbHVlLCBvYmplY3RHcm91cCkKICAgICB7CiAgICAgICAgIHZhciBy
ZW1vdGVPYmplY3QgPSB0aGlzLl93cmFwT2JqZWN0KHZhbHVlLCBvYmplY3RHcm91cCk7CiAgICAg
ICAgIHRyeSB7CiAgICAgICAgICAgICByZW1vdGVPYmplY3QuZGVzY3JpcHRpb24gPSB0aGlzLl90
b1N0cmluZyh2YWx1ZSk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHt9Ci0gICAgICAgIHJldHVybiB7
IHdhc1Rocm93bjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgcmVzdWx0OiByZW1vdGVPYmplY3Qg
fTsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHdhc1Rocm93bjogdHJ1ZSwKKyAgICAg
ICAgICAgIHJlc3VsdDogcmVtb3RlT2JqZWN0CisgICAgICAgIH07CiAgICAgfSwKIAotICAgIC8q
KgotICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGV2YWxGdW5jdGlvbgotICAgICAqIEBwYXJhbSB7
T2JqZWN0fSBvYmplY3QKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0R3JvdXAKLSAgICAg
KiBAcGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbgotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNF
dmFsT25DYWxsRnJhbWUKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluamVjdENvbW1hbmRMaW5l
QVBJCi0gICAgICogQHJldHVybiB7Kn0KLSAgICAgKi8KICAgICBfZXZhbHVhdGVPbjogZnVuY3Rp
b24oZXZhbEZ1bmN0aW9uLCBvYmplY3QsIG9iamVjdEdyb3VwLCBleHByZXNzaW9uLCBpc0V2YWxP
bkNhbGxGcmFtZSwgaW5qZWN0Q29tbWFuZExpbmVBUEkpCiAgICAgewogICAgICAgICB2YXIgY29t
bWFuZExpbmVBUEkgPSBudWxsOwpAQCAtNTI0LDEwICs0MTAsNiBAQCBJbmplY3RlZFNjcmlwdC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFt
IHtPYmplY3R9IGNhbGxGcmFtZQotICAgICAqIEByZXR1cm4ge0FycmF5LjxJbmplY3RlZFNjcmlw
dC5DYWxsRnJhbWVQcm94eT58Ym9vbGVhbn0KLSAgICAgKi8KICAgICB3cmFwQ2FsbEZyYW1lczog
ZnVuY3Rpb24oY2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKCFjYWxsRnJhbWUpCkBAIC01
NDIsMTYgKzQyNCw2IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtPYmplY3R9IHRv
cENhbGxGcmFtZQotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjYWxsRnJhbWVJZAotICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBleHByZXNzaW9uCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdEdy
b3VwCi0gICAgICogQHBhcmFtIHtib29sZWFufSBpbmplY3RDb21tYW5kTGluZUFQSQotICAgICAq
IEBwYXJhbSB7Ym9vbGVhbn0gcmV0dXJuQnlWYWx1ZQotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0g
Z2VuZXJhdGVQcmV2aWV3Ci0gICAgICogQHJldHVybiB7Kn0KLSAgICAgKi8KICAgICBldmFsdWF0
ZU9uQ2FsbEZyYW1lOiBmdW5jdGlvbih0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkLCBleHByZXNz
aW9uLCBvYmplY3RHcm91cCwgaW5qZWN0Q29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdl
bmVyYXRlUHJldmlldykKICAgICB7CiAgICAgICAgIHZhciBjYWxsRnJhbWUgPSB0aGlzLl9jYWxs
RnJhbWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKTsKQEAgLTU2MCwxMSArNDMyLDYg
QEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fZXZh
bHVhdGVBbmRXcmFwKGNhbGxGcmFtZS5ldmFsdWF0ZSwgY2FsbEZyYW1lLCBleHByZXNzaW9uLCBv
YmplY3RHcm91cCwgdHJ1ZSwgaW5qZWN0Q29tbWFuZExpbmVBUEksIHJldHVybkJ5VmFsdWUsIGdl
bmVyYXRlUHJldmlldyk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7T2JqZWN0
fSB0b3BDYWxsRnJhbWUKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2FsbEZyYW1lSWQKLSAgICAg
KiBAcmV0dXJuIHtPYmplY3R9Ci0gICAgICovCiAgICAgX2NhbGxGcmFtZUZvcklkOiBmdW5jdGlv
bih0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKQogICAgIHsKICAgICAgICAgdmFyIHBhcnNlZENh
bGxGcmFtZUlkID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKCIoIiArIGNhbGxGcmFtZUlk
ICsgIikiKTsKQEAgLTU3NSw0OCArNDQyLDMzIEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9
IHsKICAgICAgICAgcmV0dXJuIGNhbGxGcmFtZTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICog
QHBhcmFtIHtPYmplY3R9IG9iamVjdElkCi0gICAgICogQHJldHVybiB7T2JqZWN0fQotICAgICAq
LwogICAgIF9vYmplY3RGb3JJZDogZnVuY3Rpb24ob2JqZWN0SWQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5faWRUb1dyYXBwZWRPYmplY3Rbb2JqZWN0SWQuaWRdOwogICAgIH0sCiAKLSAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0SWQKLSAgICAgKiBAcmV0dXJuIHtP
YmplY3R9Ci0gICAgICovCiAgICAgZmluZE9iamVjdEJ5SWQ6IGZ1bmN0aW9uKG9iamVjdElkKQog
ICAgIHsKICAgICAgICAgdmFyIHBhcnNlZE9iamVjdElkID0gdGhpcy5fcGFyc2VPYmplY3RJZChv
YmplY3RJZCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RGb3JJZChwYXJzZWRPYmplY3RJ
ZCk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCi0gICAg
ICogQHJldHVybiB7T2JqZWN0fQotICAgICAqLwogICAgIG1vZHVsZTogZnVuY3Rpb24obmFtZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9tb2R1bGVzW25hbWVdOwogICAgIH0sCiAKLSAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQotICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBzb3VyY2UKLSAgICAgKiBAcmV0dXJuIHtPYmplY3R9Ci0gICAgICovCiAgICAgaW5qZWN0TW9k
dWxlOiBmdW5jdGlvbihuYW1lLCBzb3VyY2UsIGhvc3QpCiAgICAgewogICAgICAgICBkZWxldGUg
dGhpcy5fbW9kdWxlc1tuYW1lXTsKKwogICAgICAgICB2YXIgbW9kdWxlRnVuY3Rpb24gPSBJbmpl
Y3RlZFNjcmlwdEhvc3QuZXZhbHVhdGUoIigiICsgc291cmNlICsgIikiKTsKICAgICAgICAgaWYg
KHR5cGVvZiBtb2R1bGVGdW5jdGlvbiAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICAgaWYg
KGluc3BlY3RlZEdsb2JhbE9iamVjdC5jb25zb2xlKQogICAgICAgICAgICAgICAgIGluc3BlY3Rl
ZEdsb2JhbE9iamVjdC5jb25zb2xlLmVycm9yKCJXZWIgSW5zcGVjdG9yIGVycm9yOiBBIGZ1bmN0
aW9uIHdhcyBleHBlY3RlZCBmb3IgbW9kdWxlICVzIGV2YWx1YXRpb24iLCBuYW1lKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9CisKICAgICAgICAgdmFyIG1vZHVsZSA9IG1v
ZHVsZUZ1bmN0aW9uLmNhbGwoaW5zcGVjdGVkR2xvYmFsT2JqZWN0LCBJbmplY3RlZFNjcmlwdEhv
c3QsIGluc3BlY3RlZEdsb2JhbE9iamVjdCwgaW5qZWN0ZWRTY3JpcHRJZCwgdGhpcywgaG9zdCk7
CiAgICAgICAgIHRoaXMuX21vZHVsZXNbbmFtZV0gPSBtb2R1bGU7CiAgICAgICAgIHJldHVybiBt
b2R1bGU7CkBAIC03MjUsMjkgKzU3NywxNyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yczsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICog
QHBhcmFtIHsqfSBvYmplY3QKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQotICAgICAqLwogICAg
IF9pc0RlZmluZWQ6IGZ1bmN0aW9uKG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiAhIW9i
amVjdCB8fCB0aGlzLl9pc0hUTUxBbGxDb2xsZWN0aW9uKG9iamVjdCk7CiAgICAgfSwKIAotICAg
IC8qKgotICAgICAqIEBwYXJhbSB7Kn0gb2JqZWN0Ci0gICAgICogQHJldHVybiB7Ym9vbGVhbn0K
LSAgICAgKi8KICAgICBfaXNIVE1MQWxsQ29sbGVjdGlvbjogZnVuY3Rpb24ob2JqZWN0KQogICAg
IHsKICAgICAgICAgLy8gZG9jdW1lbnQuYWxsIGlzIHJlcG9ydGVkIGFzIHVuZGVmaW5lZCwgYnV0
IHdlIHN0aWxsIHdhbnQgdG8gcHJvY2VzcyBpdC4KICAgICAgICAgcmV0dXJuICh0eXBlb2Ygb2Jq
ZWN0ID09PSAidW5kZWZpbmVkIikgJiYgSW5qZWN0ZWRTY3JpcHRIb3N0LmlzSFRNTEFsbENvbGxl
Y3Rpb24ob2JqZWN0KTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtPYmplY3Q9
fSBvYmoKLSAgICAgKiBAcmV0dXJuIHtzdHJpbmc/fQotICAgICAqLwogICAgIF9zdWJ0eXBlOiBm
dW5jdGlvbihvYmopCiAgICAgewogICAgICAgICBpZiAob2JqID09PSBudWxsKQpAQCAtNzc2LDE4
ICs2MTYsMTEgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
bnVsbDsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHsqfSBvYmoKLSAgICAgKiBA
cmV0dXJuIHtzdHJpbmc/fQotICAgICAqLwogICAgIF9kZXNjcmliZTogZnVuY3Rpb24ob2JqKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuaXNQcmltaXRpdmVWYWx1ZShvYmopKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CiAKLSAgICAgICAgb2JqID0gLyoqIEB0eXBlIHtPYmplY3R9ICovIChv
YmopOwotCi0gICAgICAgIC8vIFR5cGUgaXMgb2JqZWN0LCBnZXQgc3VidHlwZS4KICAgICAgICAg
dmFyIHN1YnR5cGUgPSB0aGlzLl9zdWJ0eXBlKG9iaik7CiAKICAgICAgICAgaWYgKHN1YnR5cGUg
PT09ICJyZWdleHAiKQpAQCAtODA1LDcgKzYzOCw3IEBAIEluamVjdGVkU2NyaXB0LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGNhc2UgMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLzoKICAgICAg
ICAgICAgICAgICBkZXNjcmlwdGlvbiArPSBvYmouaWQgPyAiIyIgKyBvYmouaWQgOiAiIjsKICAg
ICAgICAgICAgICAgICB2YXIgY2xhc3NOYW1lID0gb2JqLmNsYXNzTmFtZTsKLSAgICAgICAgICAg
ICAgICBkZXNjcmlwdGlvbiArPSBjbGFzc05hbWUgPyAiLiIgKyBjbGFzc05hbWUgOiAiIjsKKyAg
ICAgICAgICAgICAgICBkZXNjcmlwdGlvbiArPSAoY2xhc3NOYW1lICYmIHR5cGVvZiBjbGFzc05h
bWUgPT09ICJzdHJpbmciKSA/ICIuIiArIGNsYXNzTmFtZS50cmltKCkucmVwbGFjZSgvXHMrL2cs
ICIuIikgOiAiIjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgMTAg
LypOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERSAqLzoKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlv
biA9ICI8IURPQ1RZUEUgIiArIGRlc2NyaXB0aW9uICsgIj4iOwpAQCAtODI1LDYgKzY1OCw3IEBA
IEluamVjdGVkU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHR5cGVvZiBvYmogPT09
ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdG9TdHJpbmcob2JqKTsKIAor
ICAgICAgICAvLyBGSVhNRTogQ2FuIHdlIHJlbW92ZSB0aGlzPwogICAgICAgICBpZiAoY2xhc3NO
YW1lID09PSAiT2JqZWN0IikgewogICAgICAgICAgICAgLy8gSW4gQ2hyb21pdW0gRE9NIHdyYXBw
ZXIgcHJvdG90eXBlcyB3aWxsIGhhdmUgT2JqZWN0IGFzIHRoZWlyIGNvbnN0cnVjdG9yIG5hbWUs
CiAgICAgICAgICAgICAvLyBnZXQgdGhlIHJlYWwgRE9NIHdyYXBwZXIgbmFtZSBmcm9tIHRoZSBj
b25zdHJ1Y3RvciBwcm9wZXJ0eS4KQEAgLTgzNSwxMCArNjY5LDYgQEAgSW5qZWN0ZWRTY3JpcHQu
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gY2xhc3NOYW1lOwogICAgIH0sCiAKLSAgICAv
KioKLSAgICAgKiBAcGFyYW0geyp9IG9iagotICAgICAqIEByZXR1cm4ge3N0cmluZ30KLSAgICAg
Ki8KICAgICBfdG9TdHJpbmc6IGZ1bmN0aW9uKG9iaikKICAgICB7CiAgICAgICAgIC8vIFdlIGRv
bid0IHVzZSBTdHJpbmcob2JqKSBiZWNhdXNlIGluc3BlY3RlZEdsb2JhbE9iamVjdC5TdHJpbmcg
aXMgdW5kZWZpbmVkIGlmIG93bmluZyBmcmFtZSBuYXZpZ2F0ZWQgdG8gYW5vdGhlciBwYWdlLgpA
QCAtODQ2LDI2ICs2NzYsMTkgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgIH0K
IH0KIAotLyoqCi0gKiBAdHlwZSB7SW5qZWN0ZWRTY3JpcHR9Ci0gKiBAY29uc3QKLSAqLwotdmFy
IGluamVjdGVkU2NyaXB0ID0gbmV3IEluamVjdGVkU2NyaXB0KCk7Cit2YXIgaW5qZWN0ZWRTY3Jp
cHQgPSBuZXcgSW5qZWN0ZWRTY3JpcHQ7CisKIAotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBw
YXJhbSB7Kn0gb2JqZWN0Ci0gKiBAcGFyYW0ge3N0cmluZz19IG9iamVjdEdyb3VwTmFtZQotICog
QHBhcmFtIHtib29sZWFuPX0gZm9yY2VWYWx1ZVR5cGUKLSAqIEBwYXJhbSB7Ym9vbGVhbj19IGdl
bmVyYXRlUHJldmlldwotICogQHBhcmFtIHs/QXJyYXkuPHN0cmluZz49fSBjb2x1bW5OYW1lcwot
ICovCiBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QgPSBmdW5jdGlvbihvYmplY3QsIG9iamVj
dEdyb3VwTmFtZSwgZm9yY2VWYWx1ZVR5cGUsIGdlbmVyYXRlUHJldmlldywgY29sdW1uTmFtZXMp
CiB7CiAgICAgdGhpcy50eXBlID0gdHlwZW9mIG9iamVjdDsKKworICAgIGlmICh0aGlzLnR5cGUg
PT09ICJ1bmRlZmluZWQiICYmIGluamVjdGVkU2NyaXB0Ll9pc0hUTUxBbGxDb2xsZWN0aW9uKG9i
amVjdCkpCisgICAgICAgIHRoaXMudHlwZSA9ICJvYmplY3QiOworCiAgICAgaWYgKGluamVjdGVk
U2NyaXB0LmlzUHJpbWl0aXZlVmFsdWUob2JqZWN0KSB8fCBvYmplY3QgPT09IG51bGwgfHwgZm9y
Y2VWYWx1ZVR5cGUpIHsKICAgICAgICAgLy8gV2UgZG9uJ3Qgc2VuZCB1bmRlZmluZWQgdmFsdWVz
IG92ZXIgSlNPTi4KLSAgICAgICAgaWYgKHR5cGVvZiBvYmplY3QgIT09ICJ1bmRlZmluZWQiKQor
ICAgICAgICBpZiAodGhpcy50eXBlICE9PSAidW5kZWZpbmVkIikKICAgICAgICAgICAgIHRoaXMu
dmFsdWUgPSBvYmplY3Q7CiAKICAgICAgICAgLy8gTnVsbCBvYmplY3QgaXMgb2JqZWN0IHdpdGgg
J251bGwnIHN1YnR5cGUnCkBAIC04NzMsMTcgKzY5NiwxNiBAQCBJbmplY3RlZFNjcmlwdC5SZW1v
dGVPYmplY3QgPSBmdW5jdGlvbihvYmplY3QsIG9iamVjdEdyb3VwTmFtZSwgZm9yY2VWYWx1ZVR5
cGUsCiAgICAgICAgICAgICB0aGlzLnN1YnR5cGUgPSAibnVsbCI7CiAKICAgICAgICAgLy8gUHJv
dmlkZSB1c2VyLWZyaWVuZGx5IG51bWJlciB2YWx1ZXMuCi0gICAgICAgIGlmICh0eXBlb2Ygb2Jq
ZWN0ID09PSAibnVtYmVyIikKKyAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gIm51bWJlciIpCiAg
ICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gb2JqZWN0ICsgIiI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBvYmplY3QgPSAvKiogQHR5cGUge09iamVjdH0gKi8gKG9iamVjdCk7
Ci0KICAgICB0aGlzLm9iamVjdElkID0gaW5qZWN0ZWRTY3JpcHQuX2JpbmQob2JqZWN0LCBvYmpl
Y3RHcm91cE5hbWUpOwogICAgIHZhciBzdWJ0eXBlID0gaW5qZWN0ZWRTY3JpcHQuX3N1YnR5cGUo
b2JqZWN0KTsKICAgICBpZiAoc3VidHlwZSkKICAgICAgICAgdGhpcy5zdWJ0eXBlID0gc3VidHlw
ZTsKKwogICAgIHRoaXMuY2xhc3NOYW1lID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmludGVybmFsQ29u
c3RydWN0b3JOYW1lKG9iamVjdCk7CiAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IGluamVjdGVkU2Ny
aXB0Ll9kZXNjcmliZShvYmplY3QpOwogCkBAIC04OTIsMTIgKzcxNCw2IEBAIEluamVjdGVkU2Ny
aXB0LlJlbW90ZU9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdCwgb2JqZWN0R3JvdXBOYW1lLCBmb3Jj
ZVZhbHVlVHlwZSwKIH0KIAogSW5qZWN0ZWRTY3JpcHQuUmVtb3RlT2JqZWN0LnByb3RvdHlwZSA9
IHsKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0Ci0gICAgICogQHBhcmFt
IHtBcnJheS48c3RyaW5nPj19IGZpcnN0TGV2ZWxLZXlzCi0gICAgICogQHBhcmFtIHs/QXJyYXku
PHN0cmluZz49fSBzZWNvbmRMZXZlbEtleXMKLSAgICAgKiBAcmV0dXJuIHtPYmplY3R9IHByZXZp
ZXcKLSAgICAgKi8KICAgICBfZ2VuZXJhdGVQcmV2aWV3OiBmdW5jdGlvbihvYmplY3QsIGZpcnN0
TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMpCiAgICAgewogICAgICAgICB2YXIgcHJldmlldyA9
IHt9OwpAQCAtOTE3LDE2ICs3MzMsOSBAQCBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gcHJldmlldzsKICAgICB9LAogCi0gICAgLyoqCi0g
ICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdAotICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcmV2
aWV3Ci0gICAgICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXNUaHJlc2hvbGQKLSAgICAgKiBA
cGFyYW0ge0FycmF5LjxzdHJpbmc+PX0gZmlyc3RMZXZlbEtleXMKLSAgICAgKiBAcGFyYW0ge0Fy
cmF5LjxzdHJpbmc+PX0gc2Vjb25kTGV2ZWxLZXlzCi0gICAgICovCiAgICAgX2dlbmVyYXRlUHJv
dG9QcmV2aWV3OiBmdW5jdGlvbihvYmplY3QsIHByZXZpZXcsIHByb3BlcnRpZXNUaHJlc2hvbGQs
IGZpcnN0TGV2ZWxLZXlzLCBzZWNvbmRMZXZlbEtleXMpCiAgICAgewotICAgICAgICB2YXIgcHJv
cGVydHlOYW1lcyA9IGZpcnN0TGV2ZWxLZXlzID8gZmlyc3RMZXZlbEtleXMgOiBPYmplY3Qua2V5
cygvKiogQHR5cGUgeyFPYmplY3R9ICovKG9iamVjdCkpOworICAgICAgICB2YXIgcHJvcGVydHlO
YW1lcyA9IGZpcnN0TGV2ZWxLZXlzID8gZmlyc3RMZXZlbEtleXMgOiBPYmplY3Qua2V5cyhvYmpl
Y3QpOwogICAgICAgICB0cnkgewogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9w
ZXJ0eU5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0aWVz
VGhyZXNob2xkLnByb3BlcnRpZXMgfHwgIXByb3BlcnRpZXNUaHJlc2hvbGQuaW5kZXhlcykgewpA
QCAtOTM4LDcgKzc0Nyw3IEBAIEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSA9PT0gImFycmF5IiAmJiBuYW1l
ID09PSAibGVuZ3RoIikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
ICAgICAgICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
LyoqIEB0eXBlIHshT2JqZWN0fSAqLyhvYmplY3QpLCBuYW1lKTsKKyAgICAgICAgICAgICAgICB2
YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBu
YW1lKTsKICAgICAgICAgICAgICAgICBpZiAoISgidmFsdWUiIGluIGRlc2NyaXB0b3IpIHx8ICFk
ZXNjcmlwdG9yLmVudW1lcmFibGUpIHsKICAgICAgICAgICAgICAgICAgICAgcHJldmlldy5sb3Nz
bGVzcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTk4MSw3ICs3
OTAsNyBAQCBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgICAgIHZhciBzdWJ0eXBlID0gaW5qZWN0ZWRTY3JpcHQuX3N1YnR5cGUodmFsdWUpOwog
ICAgICAgICAgICAgICAgIHZhciBkZXNjcmlwdGlvbiA9ICIiOwogICAgICAgICAgICAgICAgIGlm
ICh0eXBlICE9PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9
IHRoaXMuX2FiYnJldmlhdGVTdHJpbmcoLyoqIEB0eXBlIHtzdHJpbmd9ICovIChpbmplY3RlZFNj
cmlwdC5fZGVzY3JpYmUodmFsdWUpKSwgbWF4TGVuZ3RoLCBzdWJ0eXBlID09PSAicmVnZXhwIik7
CisgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gdGhpcy5fYWJicmV2aWF0ZVN0cmlu
ZyhpbmplY3RlZFNjcmlwdC5fZGVzY3JpYmUodmFsdWUpLCBtYXhMZW5ndGgsIHN1YnR5cGUgPT09
ICJyZWdleHAiKTsKIAogICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHsgbmFtZTogbmFt
ZSwgdHlwZTogdHlwZSwgdmFsdWU6IGRlc2NyaXB0aW9uIH07CiAgICAgICAgICAgICAgICAgaWYg
KHN1YnR5cGUpCkBAIC05OTIsMTEgKzgwMSw2IEBAIEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVj
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBh
cmFtIHtPYmplY3R9IHByZXZpZXcKLSAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydHkKLSAg
ICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllc1RocmVzaG9sZAotICAgICAqLwogICAgIF9h
cHBlbmRQcm9wZXJ0eVByZXZpZXc6IGZ1bmN0aW9uKHByZXZpZXcsIHByb3BlcnR5LCBwcm9wZXJ0
aWVzVGhyZXNob2xkKQogICAgIHsKICAgICAgICAgaWYgKGlzTmFOKHByb3BlcnR5Lm5hbWUpKQpA
QCAtMTAwNiw4MSArODEwLDU1IEBAIEluamVjdGVkU2NyaXB0LlJlbW90ZU9iamVjdC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHByZXZpZXcucHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTsKICAgICB9
LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZwotICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBtYXhMZW5ndGgKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBtaWRkbGUKLSAg
ICAgKiBAcmV0dXJucwotICAgICAqLwogICAgIF9hYmJyZXZpYXRlU3RyaW5nOiBmdW5jdGlvbihz
dHJpbmcsIG1heExlbmd0aCwgbWlkZGxlKQogICAgIHsKICAgICAgICAgaWYgKHN0cmluZy5sZW5n
dGggPD0gbWF4TGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIHN0cmluZzsKKwogICAgICAgICBp
ZiAobWlkZGxlKSB7CiAgICAgICAgICAgICB2YXIgbGVmdEhhbGYgPSBtYXhMZW5ndGggPj4gMTsK
ICAgICAgICAgICAgIHZhciByaWdodEhhbGYgPSBtYXhMZW5ndGggLSBsZWZ0SGFsZiAtIDE7CiAg
ICAgICAgICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cigwLCBsZWZ0SGFsZikgKyAiXHUyMDI2IiAr
IHN0cmluZy5zdWJzdHIoc3RyaW5nLmxlbmd0aCAtIHJpZ2h0SGFsZiwgcmlnaHRIYWxmKTsKICAg
ICAgICAgfQorCiAgICAgICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIG1heExlbmd0aCkgKyAi
XHUyMDI2IjsKICAgICB9CiB9Ci0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtudW1i
ZXJ9IG9yZGluYWwKLSAqIEBwYXJhbSB7T2JqZWN0fSBjYWxsRnJhbWUKLSAqLworCiBJbmplY3Rl
ZFNjcmlwdC5DYWxsRnJhbWVQcm94eSA9IGZ1bmN0aW9uKG9yZGluYWwsIGNhbGxGcmFtZSkKIHsK
ICAgICB0aGlzLmNhbGxGcmFtZUlkID0gIntcIm9yZGluYWxcIjoiICsgb3JkaW5hbCArICIsXCJp
bmplY3RlZFNjcmlwdElkXCI6IiArIGluamVjdGVkU2NyaXB0SWQgKyAifSI7CiAgICAgdGhpcy5m
dW5jdGlvbk5hbWUgPSAoY2FsbEZyYW1lLnR5cGUgPT09ICJmdW5jdGlvbiIgPyBjYWxsRnJhbWUu
ZnVuY3Rpb25OYW1lIDogIiIpOwotICAgIHRoaXMubG9jYXRpb24gPSB7IHNjcmlwdElkOiBTdHJp
bmcoY2FsbEZyYW1lLnNvdXJjZUlEKSwgbGluZU51bWJlcjogY2FsbEZyYW1lLmxpbmUsIGNvbHVt
bk51bWJlcjogY2FsbEZyYW1lLmNvbHVtbiB9OworICAgIHRoaXMubG9jYXRpb24gPSB7c2NyaXB0
SWQ6IFN0cmluZyhjYWxsRnJhbWUuc291cmNlSUQpLCBsaW5lTnVtYmVyOiBjYWxsRnJhbWUubGlu
ZSwgY29sdW1uTnVtYmVyOiBjYWxsRnJhbWUuY29sdW1ufTsKICAgICB0aGlzLnNjb3BlQ2hhaW4g
PSB0aGlzLl93cmFwU2NvcGVDaGFpbihjYWxsRnJhbWUpOwogICAgIHRoaXMudGhpcyA9IGluamVj
dGVkU2NyaXB0Ll93cmFwT2JqZWN0KGNhbGxGcmFtZS50aGlzT2JqZWN0LCAiYmFja3RyYWNlIik7
CiB9CiAKIEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5LnByb3RvdHlwZSA9IHsKLSAgICAv
KioKLSAgICAgKiBAcGFyYW0ge09iamVjdH0gY2FsbEZyYW1lCi0gICAgICogQHJldHVybiB7IUFy
cmF5LjxEZWJ1Z2dlckFnZW50LlNjb3BlPn0KLSAgICAgKi8KICAgICBfd3JhcFNjb3BlQ2hhaW46
IGZ1bmN0aW9uKGNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIHZhciBzY29wZUNoYWluID0gY2Fs
bEZyYW1lLnNjb3BlQ2hhaW47CiAgICAgICAgIHZhciBzY29wZUNoYWluUHJveHkgPSBbXTsKLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY29wZUNoYWluLmxlbmd0aDsgaSsrKSB7Ci0gICAg
ICAgICAgICB2YXIgc2NvcGUgPSBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQcm94eS5fY3JlYXRl
U2NvcGVKc29uKGNhbGxGcmFtZS5zY29wZVR5cGUoaSksIHNjb3BlQ2hhaW5baV0sICJiYWNrdHJh
Y2UiKTsKLSAgICAgICAgICAgIHNjb3BlQ2hhaW5Qcm94eS5wdXNoKHNjb3BlKTsKLSAgICAgICAg
fQorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjb3BlQ2hhaW4ubGVuZ3RoOyBpKyspCisg
ICAgICAgICAgICBzY29wZUNoYWluUHJveHlbaV0gPSBJbmplY3RlZFNjcmlwdC5DYWxsRnJhbWVQ
cm94eS5fY3JlYXRlU2NvcGVKc29uKGNhbGxGcmFtZS5zY29wZVR5cGUoaSksIHNjb3BlQ2hhaW5b
aV0sICJiYWNrdHJhY2UiKTsKICAgICAgICAgcmV0dXJuIHNjb3BlQ2hhaW5Qcm94eTsKICAgICB9
CiB9CiAKLS8qKgotICogQHBhcmFtIHtudW1iZXJ9IHNjb3BlVHlwZUNvZGUKLSAqIEBwYXJhbSB7
Kn0gc2NvcGVPYmplY3QKLSAqIEBwYXJhbSB7c3RyaW5nfSBncm91cElkCi0gKiBAcmV0dXJuIHsh
RGVidWdnZXJBZ2VudC5TY29wZX0KLSAqLwotSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHku
X2NyZWF0ZVNjb3BlSnNvbiA9IGZ1bmN0aW9uKHNjb3BlVHlwZUNvZGUsIHNjb3BlT2JqZWN0LCBn
cm91cElkKSB7Ci0gICAgY29uc3QgR0xPQkFMX1NDT1BFID0gMDsKLSAgICBjb25zdCBMT0NBTF9T
Q09QRSA9IDE7Ci0gICAgY29uc3QgV0lUSF9TQ09QRSA9IDI7Ci0gICAgY29uc3QgQ0xPU1VSRV9T
Q09QRSA9IDM7Ci0gICAgY29uc3QgQ0FUQ0hfU0NPUEUgPSA0OwotICAgIGNvbnN0IEZVTkNUSU9O
X05BTUVfU0NPUEUgPSA1OwotCi0gICAgLyoqIEB0eXBlIHshT2JqZWN0LjxudW1iZXIsIHN0cmlu
Zz59ICovCi0gICAgdmFyIHNjb3BlVHlwZU5hbWVzID0ge307Ci0gICAgc2NvcGVUeXBlTmFtZXNb
R0xPQkFMX1NDT1BFXSA9ICJnbG9iYWwiOwotICAgIHNjb3BlVHlwZU5hbWVzW0xPQ0FMX1NDT1BF
XSA9ICJsb2NhbCI7Ci0gICAgc2NvcGVUeXBlTmFtZXNbV0lUSF9TQ09QRV0gPSAid2l0aCI7Ci0g
ICAgc2NvcGVUeXBlTmFtZXNbQ0xPU1VSRV9TQ09QRV0gPSAiY2xvc3VyZSI7Ci0gICAgc2NvcGVU
eXBlTmFtZXNbQ0FUQ0hfU0NPUEVdID0gImNhdGNoIjsKLSAgICBzY29wZVR5cGVOYW1lc1tGVU5D
VElPTl9OQU1FX1NDT1BFXSA9ICJmdW5jdGlvbk5hbWUiOworSW5qZWN0ZWRTY3JpcHQuQ2FsbEZy
YW1lUHJveHkuX3Njb3BlVHlwZU5hbWVzID0geworICAgIDA6ICJnbG9iYWwiLCAvLyBHTE9CQUxf
U0NPUEUKKyAgICAxOiAibG9jYWwiLCAvLyBMT0NBTF9TQ09QRQorICAgIDI6ICJ3aXRoIiwgLy8g
V0lUSF9TQ09QRQorICAgIDM6ICJjbG9zdXJlIiwgLy8gQ0xPU1VSRV9TQ09QRQorICAgIDQ6ICJj
YXRjaCIsIC8vIENBVENIX1NDT1BFCisgICAgNTogImZ1bmN0aW9uTmFtZSIsIC8vIEZVTkNUSU9O
X05BTUVfU0NPUEUKK30KIAorSW5qZWN0ZWRTY3JpcHQuQ2FsbEZyYW1lUHJveHkuX2NyZWF0ZVNj
b3BlSnNvbiA9IGZ1bmN0aW9uKHNjb3BlVHlwZUNvZGUsIHNjb3BlT2JqZWN0LCBncm91cElkKQor
ewogICAgIHJldHVybiB7CiAgICAgICAgIG9iamVjdDogaW5qZWN0ZWRTY3JpcHQuX3dyYXBPYmpl
Y3Qoc2NvcGVPYmplY3QsIGdyb3VwSWQpLAotICAgICAgICB0eXBlOiAvKiogQHR5cGUge0RlYnVn
Z2VyQWdlbnQuU2NvcGVUeXBlfSAqLyAoc2NvcGVUeXBlTmFtZXNbc2NvcGVUeXBlQ29kZV0pCisg
ICAgICAgIHR5cGU6IEluamVjdGVkU2NyaXB0LkNhbGxGcmFtZVByb3h5Ll9zY29wZVR5cGVOYW1l
c1tzY29wZVR5cGVDb2RlXQogICAgIH07CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>