<?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>128052</bug_id>
          
          <creation_ts>2014-02-01 17:58:45 -0800</creation_ts>
          <short_desc>Factor URL decomposition methods (from URLUtils interface) into a base template</short_desc>
          <delta_ts>2014-02-01 18:13:28 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>974672</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2014-02-01 17:58:45 -0800</bug_when>
    <thetext>Factor URL decomposition methods (from URLUtils interface) into a base template</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974673</commentid>
    <comment_count>1</comment_count>
      <attachid>222895</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2014-02-01 18:02:41 -0800</bug_when>
    <thetext>Created attachment 222895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974674</commentid>
    <comment_count>2</comment_count>
      <attachid>222895</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-02-01 18:10:07 -0800</bug_when>
    <thetext>Comment on attachment 222895
Patch

You need to add the new file to the Xcode and Visual Studio projects.  Other than that, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974675</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2014-02-01 18:13:28 -0800</bug_when>
    <thetext>Committed r163253: &lt;http://trac.webkit.org/changeset/163253&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222895</attachid>
            <date>2014-02-01 18:02:41 -0800</date>
            <delta_ts>2014-02-01 18:10:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128052-20140201180240.patch</filename>
            <type>text/plain</type>
            <size>17977</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MzI1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE0LTAyLTAxICBNYWNpZWog
U3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIFVSTCBkZWNvbXBv
c2l0aW9uIG1ldGhvZHMgKGZyb20gVVJMVXRpbHMgaW50ZXJmYWNlKSBpbnRvIGEgYmFzZSB0ZW1w
bGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4
MDUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVm
YWN0b3Jpbmcgb25seTsgbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogaHRtbC9ET01VUkwuY3Bw
OgorICAgICAgICAqIGh0bWwvRE9NVVJMLmg6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6Omhy
ZWYpOiBNb3ZlZCB0byBoZWFkZXIgYW5kIG1hZGUgaW5saW5lLgorICAgICAgICAqIGh0bWwvVVJM
VXRpbHMuaDogQWRkZWQuIAorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM6OmhyZWYpOiBEb3du
Y2FzdCBhbmQgY2FsbCB0aGUgZGVyaXZlZCBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0
aWxzOjpzZXRIcmVmKTogRG93bmNhc3QgYW5kIGNhbGwgdGhlIGRlcml2ZWQgY2xhc3MuCisgICAg
ICAgIEZ1bmN0aW9ucyBiZWxvdyBmYWN0b3JlZCBvdXQgZnJvbSBET01VUkwuY3BwLgorICAgICAg
ICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlVS
TFV0aWxzPFQ+OjpvcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnByb3Rv
Y29sKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpzZXRQcm90b2NvbCk6CisgICAg
ICAgIChXZWJDb3JlOjpVUkxVdGlsczxUPjo6dXNlcm5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMVXRpbHM8VD46OnNldFVzZXJuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+
OjpwYXNzd29yZCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxVdGlsczxUPjo6c2V0UGFzc3dvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46Omhvc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VQb3J0RnJvbVN0cmluZ1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0
aWxzPFQ+OjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+Ojpob3N0bmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpVUkxVdGlsczxUPjo6c2V0SG9zdG5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRp
bHM8VD46OnNldFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnBhdGhuYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpzZXRQYXRobmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpVUkxVdGlsczxUPjo6c2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0
aWxzPFQ+OjpzZXRTZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46Omhhc2gp
OgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldEhhc2gpOgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06IEFkZCBtZW50aW9uIG9mIG5ldyBoZWFkZXIuCisKIDIwMTQtMDIt
MDEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1w
cm92ZSB0aGUgSmF2YVNjcmlwdCBiaW5kaW5ncyBvZiBEYXRhc2V0RE9NU3RyaW5nTWFwCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE2MzIyNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTM3MTYsNiAr
MzcxNiw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJ
bnB1dFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwv
VVJMVXRpbHMuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuaCBcCiAJU291cmNlL1dl
YkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9E
T01VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAko
cmV2aXNpb24gMTYzMjI0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MSwxMSArODEsNiBAQCBpbmxpbmUgRE9NVVJMOjpET01VUkwoY29uc3Qg
U3RyaW5nJiB1cmwsCiAgICAgICAgIGVjID0gVHlwZUVycm9yOwogfQogCi1jb25zdCBVUkwmIERP
TVVSTDo6aHJlZigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdXJsOwotfQotCiB2b2lkIERPTVVS
TDo6c2V0SHJlZihjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBtX3VybCA9IFVSTChtX2Jhc2VV
UkwsIHVybCk7CkBAIC05OCwyMDggKzkzLDYgQEAgdm9pZCBET01VUkw6OnNldEhyZWYoY29uc3Qg
U3RyaW5nJiB1cmwsIAogICAgICAgICBlYyA9IFR5cGVFcnJvcjsKIH0KIAotY29uc3QgU3RyaW5n
JiBET01VUkw6OnRvU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaHJlZigpLnN0cmluZygp
OwotfQotCi1TdHJpbmcgRE9NVVJMOjpvcmlnaW4oKSBjb25zdAotewotICAgIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShocmVmKCkpOwotICAg
IHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBET01VUkw6OnByb3RvY29s
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gaHJlZigpLnByb3RvY29sKCkgKyAnOic7Ci19Ci0KLXZv
aWQgRE9NVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIFVSTCB1
cmwgPSBocmVmKCk7Ci0gICAgdXJsLnNldFByb3RvY29sKHZhbHVlKTsKLSAgICBzZXRIcmVmKHVy
bC5zdHJpbmcoKSk7Ci19Ci0KLVN0cmluZyBET01VUkw6OnVzZXJuYW1lKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gaHJlZigpLnVzZXIoKTsKLX0KLQotdm9pZCBET01VUkw6OnNldFVzZXJuYW1lKGNv
bnN0IFN0cmluZyYgdXNlcikKLXsKLSAgICBVUkwgdXJsID0gaHJlZigpOwotICAgIHVybC5zZXRV
c2VyKHVzZXIpOwotICAgIHNldEhyZWYodXJsKTsKLX0KLQotU3RyaW5nIERPTVVSTDo6cGFzc3dv
cmQoKSBjb25zdAotewotICAgIHJldHVybiBocmVmKCkucGFzcygpOwotfQotCi12b2lkIERPTVVS
TDo6c2V0UGFzc3dvcmQoY29uc3QgU3RyaW5nJiBwYXNzKQotewotICAgIFVSTCB1cmwgPSBocmVm
KCk7Ci0gICAgdXJsLnNldFBhc3MocGFzcyk7Ci0gICAgc2V0SHJlZih1cmwpOwotfQotCi1TdHJp
bmcgRE9NVVJMOjpob3N0KCkgY29uc3QKLXsKLSAgICBjb25zdCBVUkwmIHVybCA9IGhyZWYoKTsK
LSAgICBpZiAodXJsLmhvc3RFbmQoKSA9PSB1cmwucGF0aFN0YXJ0KCkpCi0gICAgICAgIHJldHVy
biB1cmwuaG9zdCgpOwotICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodXJsLnBvcnQo
KSwgdXJsLnByb3RvY29sKCkpKQotICAgICAgICByZXR1cm4gdXJsLmhvc3QoKTsKLSAgICByZXR1
cm4gdXJsLmhvc3QoKSArICc6JyArIFN0cmluZzo6bnVtYmVyKHVybC5wb3J0KCkpOwotfQotCi0v
LyBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGFsbG93IGxlYWRpbmcgc3BhY2VzIGJlZm9yZSB0aGUg
cG9ydCBudW1iZXIuCi1zdGF0aWMgdW5zaWduZWQgcGFyc2VQb3J0RnJvbVN0cmluZ1Bvc2l0aW9u
KGNvbnN0IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVkIHBvcnRTdGFydCwgdW5zaWduZWQmIHBvcnRF
bmQpCi17Ci0gICAgcG9ydEVuZCA9IHBvcnRTdGFydDsKLSAgICB3aGlsZSAoaXNBU0NJSURpZ2l0
KHZhbHVlW3BvcnRFbmRdKSkKLSAgICAgICAgKytwb3J0RW5kOwotICAgIHJldHVybiB2YWx1ZS5z
dWJzdHJpbmcocG9ydFN0YXJ0LCBwb3J0RW5kIC0gcG9ydFN0YXJ0KS50b1VJbnQoKTsKLX0KLQot
dm9pZCBET01VUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBpZiAodmFs
dWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgVVJMIHVybCA9IGhyZWYoKTsKLSAg
ICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNp
emVfdCBzZXBhcmF0b3IgPSB2YWx1ZS5maW5kKCc6Jyk7Ci0gICAgaWYgKCFzZXBhcmF0b3IpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChzZXBhcmF0b3IgPT0gbm90Rm91bmQpCi0gICAgICAg
IHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHVuc2lnbmVk
IHBvcnRFbmQ7Ci0gICAgICAgIHVuc2lnbmVkIHBvcnQgPSBwYXJzZVBvcnRGcm9tU3RyaW5nUG9z
aXRpb24odmFsdWUsIHNlcGFyYXRvciArIDEsIHBvcnRFbmQpOwotICAgICAgICBpZiAoIXBvcnQp
IHsKLSAgICAgICAgICAgIC8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1
Y3R1cmUuaHRtbCN1cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcwotICAgICAgICAgICAg
Ly8gc3BlY2lmaWNhbGx5IGdvZXMgYWdhaW5zdCBSRkMgMzk4NiAocDMuMikgYW5kCi0gICAgICAg
ICAgICAvLyByZXF1aXJlcyBzZXR0aW5nIHRoZSBwb3J0IHRvICIwIiBpZiBpdCBpcyBzZXQgdG8g
ZW1wdHkgc3RyaW5nLgotICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0
cmluZygwLCBzZXBhcmF0b3IgKyAxKSArICcwJyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5wcm90b2NvbCgpKSkK
LSAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNl
cGFyYXRvcikpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHVybC5zZXRIb3N0
QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwgcG9ydEVuZCkpOwotICAgICAgICB9Ci0gICAgfQot
ICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKLX0KLQotU3RyaW5nIERPTVVSTDo6aG9zdG5hbWUo
KSBjb25zdAotewotICAgIHJldHVybiBocmVmKCkuaG9zdCgpOwotfQotCi12b2lkIERPTVVSTDo6
c2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICAvLyBCZWZvcmUgc2V0dGlu
ZyBuZXcgdmFsdWU6Ci0gICAgLy8gUmVtb3ZlIGFsbCBsZWFkaW5nIFUrMDAyRiBTT0xJRFVTICgi
LyIpIGNoYXJhY3RlcnMuCi0gICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgdW5zaWduZWQgaG9zdExl
bmd0aCA9IHZhbHVlLmxlbmd0aCgpOwotICAgIHdoaWxlICh2YWx1ZVtpXSA9PSAnLycpCi0gICAg
ICAgIGkrKzsKLQotICAgIGlmIChpID09IGhvc3RMZW5ndGgpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFVSTCB1cmwgPSBocmVmKCk7Ci0gICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICB1cmwuc2V0SG9zdCh2YWx1ZS5zdWJzdHJpbmcoaSkpOwot
ICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKLX0KLQotU3RyaW5nIERPTVVSTDo6cG9ydCgpIGNv
bnN0Ci17Ci0gICAgaWYgKGhyZWYoKS5oYXNQb3J0KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmc6
Om51bWJlcihocmVmKCkucG9ydCgpKTsKLQotICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotfQot
Ci12b2lkIERPTVVSTDo6c2V0UG9ydChjb25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIFVSTCB1
cmwgPSBocmVmKCk7Ci0gICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICAvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0
dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMKLSAgICAvLyBzcGVjaWZp
Y2FsbHkgZ29lcyBhZ2FpbnN0IFJGQyAzOTg2IChwMy4yKSBhbmQKLSAgICAvLyByZXF1aXJlcyBz
ZXR0aW5nIHRoZSBwb3J0IHRvICIwIiBpZiBpdCBpcyBzZXQgdG8gZW1wdHkgc3RyaW5nLgotICAg
IC8vIEZJWE1FOiBodHRwOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8gZG9lc24ndCBhcHBlYXIgdG8g
cmVxdWlyZSB0aGlzOyB0ZXN0IHdoYXQgYnJvd3NlcnMgZG8KLSAgICB1bnNpZ25lZCBwb3J0ID0g
dmFsdWUudG9VSW50KCk7Ci0gICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCB1
cmwucHJvdG9jb2woKSkpCi0gICAgICAgIHVybC5yZW1vdmVQb3J0KCk7Ci0gICAgZWxzZQotICAg
ICAgICB1cmwuc2V0UG9ydChwb3J0KTsKLQotICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKLX0K
LQotU3RyaW5nIERPTVVSTDo6cGF0aG5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBocmVmKCku
cGF0aCgpOwotfQotCi12b2lkIERPTVVSTDo6c2V0UGF0aG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKLXsKLSAgICBVUkwgdXJsID0gaHJlZigpOwotICAgIGlmICghdXJsLmNhblNldFBhdGhuYW1l
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICh2YWx1ZVswXSA9PSAnLycpCi0gICAgICAg
IHVybC5zZXRQYXRoKHZhbHVlKTsKLSAgICBlbHNlCi0gICAgICAgIHVybC5zZXRQYXRoKCIvIiAr
IHZhbHVlKTsKLQotICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKLX0KLQotU3RyaW5nIERPTVVS
TDo6c2VhcmNoKCkgY29uc3QKLXsKLSAgICBTdHJpbmcgcXVlcnkgPSBocmVmKCkucXVlcnkoKTsK
LSAgICByZXR1cm4gcXVlcnkuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmcoKSA6ICI/IiArIHF1ZXJ5
OwotfQotCi12b2lkIERPTVVSTDo6c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0g
ICAgVVJMIHVybCA9IGhyZWYoKTsKLSAgICBTdHJpbmcgbmV3U2VhcmNoID0gKHZhbHVlWzBdID09
ICc/JykgPyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2YWx1ZTsKLSAgICAvLyBNYWtlIHN1cmUgdGhh
dCAnIycgaW4gdGhlIHF1ZXJ5IGRvZXMgbm90IGxlYWsgdG8gdGhlIGhhc2guCi0gICAgdXJsLnNl
dFF1ZXJ5KG5ld1NlYXJjaC5yZXBsYWNlV2l0aExpdGVyYWwoJyMnLCAiJTIzIikpOwotCi0gICAg
c2V0SHJlZih1cmwuc3RyaW5nKCkpOwotfQotCi1TdHJpbmcgRE9NVVJMOjpoYXNoKCkgY29uc3QK
LXsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gaHJlZigpLmZyYWdtZW50SWRlbnRp
ZmllcigpOwotICAgIGlmIChmcmFnbWVudElkZW50aWZpZXIuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICByZXR1cm4gQXRvbWljU3RyaW5nKFN0cmluZygiIyIg
KyBmcmFnbWVudElkZW50aWZpZXIpKTsKLX0KLQotdm9pZCBET01VUkw6OnNldEhhc2goY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBVUkwgdXJsID0gaHJlZigpOwotICAgIGlmICh2YWx1ZVsw
XSA9PSAnIycpCi0gICAgICAgIHVybC5zZXRGcmFnbWVudElkZW50aWZpZXIodmFsdWUuc3Vic3Ry
aW5nKDEpKTsKLSAgICBlbHNlCi0gICAgICAgIHVybC5zZXRGcmFnbWVudElkZW50aWZpZXIodmFs
dWUpOwotICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKLX0KIAogI2lmIEVOQUJMRShCTE9CKQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHJldmlzaW9uIDE2MzIyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJVUkxV
dGlscy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDAsNDcgKzQxLDE2IEBAIGNs
YXNzIEJsb2I7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVVJMUmVnaXN0
cmFibGU7CiAKLWNsYXNzIERPTVVSTCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVVSTD4geworY2xh
c3MgRE9NVVJMIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NVVJMPiwgcHVibGljIFVSTFV0aWxzPERP
TVVSTD4gewogCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVVJMPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgYmFzZSwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVVSTD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBET01VUkwqIGJhc2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxET01VUkw+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYpOwogCi0g
ICAgY29uc3QgVVJMJiBocmVmKCkgY29uc3Q7CisgICAgVVJMIGhyZWYoKSBjb25zdCB7IHJldHVy
biBtX3VybDsgfQogICAgIHZvaWQgc2V0SHJlZihjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9p
ZCBzZXRIcmVmKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBjb25zdCBTdHJp
bmcmIHRvU3RyaW5nKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3Q7Ci0KLSAg
ICBTdHJpbmcgcHJvdG9jb2woKSBjb25zdDsKLSAgICB2b2lkIHNldFByb3RvY29sKGNvbnN0IFN0
cmluZyYpOwotCi0gICAgU3RyaW5nIHVzZXJuYW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRVc2Vy
bmFtZShjb25zdCBTdHJpbmcmKTsKLQotICAgIFN0cmluZyBwYXNzd29yZCgpIGNvbnN0OwotICAg
IHZvaWQgc2V0UGFzc3dvcmQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBTdHJpbmcgaG9zdCgpIGNv
bnN0OwotICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKLQotICAgIFN0cmluZyBob3N0
bmFtZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJik7Ci0KLSAg
ICBTdHJpbmcgcG9ydCgpIGNvbnN0OwotICAgIHZvaWQgc2V0UG9ydChjb25zdCBTdHJpbmcmKTsK
LQotICAgIFN0cmluZyBwYXRobmFtZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0UGF0aG5hbWUoY29u
c3QgU3RyaW5nJik7Ci0KLSAgICBTdHJpbmcgc2VhcmNoKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRT
ZWFyY2goY29uc3QgU3RyaW5nJik7Ci0KLSAgICBTdHJpbmcgaGFzaCgpIGNvbnN0OwotICAgIHZv
aWQgc2V0SGFzaChjb25zdCBTdHJpbmcmKTsKLQogCiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgc3Rh
dGljIHZvaWQgY29udGV4dERlc3Ryb3llZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9VUkxVdGlscy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9VUkxVdGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjk2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFVSTFV0aWxzX2gKKyNkZWZpbmUgVVJMVXRpbHNfaAorCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIFVSTFV0aWxzIHsKK3B1YmxpYzoKKyAgICBVUkwgaHJlZigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IFQqPih0aGlzKS0+aHJlZigpOyB9CisgICAgdm9pZCBzZXRIcmVm
KGNvbnN0IFN0cmluZyYgdXJsKSB7IHN0YXRpY19jYXN0PFQqPih0aGlzKS0+c2V0SHJlZih1cmwp
OyB9CisKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKworICAgIFN0cmluZyBvcmlnaW4o
KSBjb25zdDsKKworICAgIFN0cmluZyBwcm90b2NvbCgpIGNvbnN0OworICAgIHZvaWQgc2V0UHJv
dG9jb2woY29uc3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgdXNlcm5hbWUoKSBjb25zdDsKKyAg
ICB2b2lkIHNldFVzZXJuYW1lKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHBhc3N3b3Jk
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQYXNzd29yZChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0
cmluZyBob3N0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOworCisg
ICAgU3RyaW5nIGhvc3RuYW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRIb3N0bmFtZShjb25zdCBT
dHJpbmcmKTsKKworICAgIFN0cmluZyBwb3J0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQb3J0KGNv
bnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHBhdGhuYW1lKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRQYXRobmFtZShjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBzZWFyY2goKSBjb25zdDsK
KyAgICB2b2lkIHNldFNlYXJjaChjb25zdCBTdHJpbmcmKTsKKworICAgIFN0cmluZyBoYXNoKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRIYXNoKGNvbnN0IFN0cmluZyYpOworfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitTdHJpbmcgVVJMVXRpbHM8VD46OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaHJlZigpLnN0cmluZygpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1N0
cmluZyBVUkxVdGlsczxUPjo6b3JpZ2luKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoaHJlZigpKTsKKyAgICByZXR1
cm4gb3JpZ2luLT50b1N0cmluZygpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1N0cmlu
ZyBVUkxVdGlsczxUPjo6cHJvdG9jb2woKSBjb25zdAoreworICAgIHJldHVybiBocmVmKCkucHJv
dG9jb2woKSArICc6JzsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVSTFV0aWxz
PFQ+OjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIFVSTCB1cmwgPSBo
cmVmKCk7CisgICAgdXJsLnNldFByb3RvY29sKHZhbHVlKTsKKyAgICBzZXRIcmVmKHVybC5zdHJp
bmcoKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorU3RyaW5nIFVSTFV0aWxzPFQ+Ojp1
c2VybmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhyZWYoKS51c2VyKCk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgordm9pZCBVUkxVdGlsczxUPjo6c2V0VXNlcm5hbWUoY29uc3QgU3Ry
aW5nJiB1c2VyKQoreworICAgIFVSTCB1cmwgPSBocmVmKCk7CisgICAgdXJsLnNldFVzZXIodXNl
cik7CisgICAgc2V0SHJlZih1cmwpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1N0cmlu
ZyBVUkxVdGlsczxUPjo6cGFzc3dvcmQoKSBjb25zdAoreworICAgIHJldHVybiBocmVmKCkucGFz
cygpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgVVJMVXRpbHM8VD46OnNldFBh
c3N3b3JkKGNvbnN0IFN0cmluZyYgcGFzcykKK3sKKyAgICBVUkwgdXJsID0gaHJlZigpOworICAg
IHVybC5zZXRQYXNzKHBhc3MpOworICAgIHNldEhyZWYodXJsKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitTdHJpbmcgVVJMVXRpbHM8VD46Omhvc3QoKSBjb25zdAoreworICAgIGNvbnN0
IFVSTCYgdXJsID0gaHJlZigpOworICAgIGlmICh1cmwuaG9zdEVuZCgpID09IHVybC5wYXRoU3Rh
cnQoKSkKKyAgICAgICAgcmV0dXJuIHVybC5ob3N0KCk7CisgICAgaWYgKGlzRGVmYXVsdFBvcnRG
b3JQcm90b2NvbCh1cmwucG9ydCgpLCB1cmwucHJvdG9jb2woKSkpCisgICAgICAgIHJldHVybiB1
cmwuaG9zdCgpOworICAgIHJldHVybiB1cmwuaG9zdCgpICsgJzonICsgU3RyaW5nOjpudW1iZXIo
dXJsLnBvcnQoKSk7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgYWxsb3cgbGVhZGlu
ZyBzcGFjZXMgYmVmb3JlIHRoZSBwb3J0IG51bWJlci4KK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQg
cGFyc2VQb3J0RnJvbVN0cmluZ1Bvc2l0aW9uKGNvbnN0IFN0cmluZyYgdmFsdWUsIHVuc2lnbmVk
IHBvcnRTdGFydCwgdW5zaWduZWQmIHBvcnRFbmQpCit7CisgICAgcG9ydEVuZCA9IHBvcnRTdGFy
dDsKKyAgICB3aGlsZSAoaXNBU0NJSURpZ2l0KHZhbHVlW3BvcnRFbmRdKSkKKyAgICAgICAgKytw
b3J0RW5kOworICAgIHJldHVybiB2YWx1ZS5zdWJzdHJpbmcocG9ydFN0YXJ0LCBwb3J0RW5kIC0g
cG9ydFN0YXJ0KS50b1VJbnQoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVS
TFV0aWxzPFQ+OjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKHZhbHVl
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFVSTCB1cmwgPSBocmVmKCk7CisgICAg
aWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzaXpl
X3Qgc2VwYXJhdG9yID0gdmFsdWUuZmluZCgnOicpOworICAgIGlmICghc2VwYXJhdG9yKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoc2VwYXJhdG9yID09IG5vdEZvdW5kKQorICAgICAgICB1
cmwuc2V0SG9zdEFuZFBvcnQodmFsdWUpOworICAgIGVsc2UgeworICAgICAgICB1bnNpZ25lZCBw
b3J0RW5kOworICAgICAgICB1bnNpZ25lZCBwb3J0ID0gcGFyc2VQb3J0RnJvbVN0cmluZ1Bvc2l0
aW9uKHZhbHVlLCBzZXBhcmF0b3IgKyAxLCBwb3J0RW5kKTsKKyAgICAgICAgaWYgKCFwb3J0KSB7
CisgICAgICAgICAgICAvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL2luZnJhc3RydWN0
dXJlLmh0bWwjdXJsLWRlY29tcG9zaXRpb24taWRsLWF0dHJpYnV0ZXMKKyAgICAgICAgICAgIC8v
IHNwZWNpZmljYWxseSBnb2VzIGFnYWluc3QgUkZDIDM5ODYgKHAzLjIpIGFuZAorICAgICAgICAg
ICAgLy8gcmVxdWlyZXMgc2V0dGluZyB0aGUgcG9ydCB0byAiMCIgaWYgaXQgaXMgc2V0IHRvIGVt
cHR5IHN0cmluZy4KKyAgICAgICAgICAgIHVybC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJp
bmcoMCwgc2VwYXJhdG9yICsgMSkgKyAnMCcpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChwb3J0LCB1cmwucHJvdG9jb2woKSkpCisg
ICAgICAgICAgICAgICAgdXJsLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBzZXBh
cmF0b3IpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB1cmwuc2V0SG9zdEFu
ZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHBvcnRFbmQpKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorU3Ry
aW5nIFVSTFV0aWxzPFQ+Ojpob3N0bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhyZWYoKS5o
b3N0KCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBVUkxVdGlsczxUPjo6c2V0
SG9zdG5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICAvLyBCZWZvcmUgc2V0dGluZyBu
ZXcgdmFsdWU6CisgICAgLy8gUmVtb3ZlIGFsbCBsZWFkaW5nIFUrMDAyRiBTT0xJRFVTICgiLyIp
IGNoYXJhY3RlcnMuCisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgdW5zaWduZWQgaG9zdExlbmd0
aCA9IHZhbHVlLmxlbmd0aCgpOworICAgIHdoaWxlICh2YWx1ZVtpXSA9PSAnLycpCisgICAgICAg
IGkrKzsKKworICAgIGlmIChpID09IGhvc3RMZW5ndGgpCisgICAgICAgIHJldHVybjsKKworICAg
IFVSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICB1cmwuc2V0SG9zdCh2YWx1ZS5zdWJzdHJpbmcoaSkpOworICAg
IHNldEhyZWYodXJsLnN0cmluZygpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitTdHJp
bmcgVVJMVXRpbHM8VD46OnBvcnQoKSBjb25zdAoreworICAgIGlmIChocmVmKCkuaGFzUG9ydCgp
KQorICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoaHJlZigpLnBvcnQoKSk7CisKKyAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFVS
TFV0aWxzPFQ+OjpzZXRQb3J0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgVVJMIHVybCA9
IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvaW5mcmFzdHJ1Y3R1cmUu
aHRtbCN1cmwtZGVjb21wb3NpdGlvbi1pZGwtYXR0cmlidXRlcworICAgIC8vIHNwZWNpZmljYWxs
eSBnb2VzIGFnYWluc3QgUkZDIDM5ODYgKHAzLjIpIGFuZAorICAgIC8vIHJlcXVpcmVzIHNldHRp
bmcgdGhlIHBvcnQgdG8gIjAiIGlmIGl0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcuCisgICAgLy8g
RklYTUU6IGh0dHA6Ly91cmwuc3BlYy53aGF0d2cub3JnLyBkb2Vzbid0IGFwcGVhciB0byByZXF1
aXJlIHRoaXM7IHRlc3Qgd2hhdCBicm93c2VycyBkbworICAgIHVuc2lnbmVkIHBvcnQgPSB2YWx1
ZS50b1VJbnQoKTsKKyAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHBvcnQsIHVybC5w
cm90b2NvbCgpKSkKKyAgICAgICAgdXJsLnJlbW92ZVBvcnQoKTsKKyAgICBlbHNlCisgICAgICAg
IHVybC5zZXRQb3J0KHBvcnQpOworCisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1N0cmluZyBVUkxVdGlsczxUPjo6cGF0aG5hbWUoKSBjb25z
dAoreworICAgIHJldHVybiBocmVmKCkucGF0aCgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK3ZvaWQgVVJMVXRpbHM8VD46OnNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7
CisgICAgVVJMIHVybCA9IGhyZWYoKTsKKyAgICBpZiAoIXVybC5jYW5TZXRQYXRobmFtZSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAodmFsdWVbMF0gPT0gJy8nKQorICAgICAgICB1cmwu
c2V0UGF0aCh2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICB1cmwuc2V0UGF0aCgiLyIgKyB2YWx1
ZSk7CisKKyAgICBzZXRIcmVmKHVybC5zdHJpbmcoKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorU3RyaW5nIFVSTFV0aWxzPFQ+OjpzZWFyY2goKSBjb25zdAoreworICAgIFN0cmluZyBx
dWVyeSA9IGhyZWYoKS5xdWVyeSgpOworICAgIHJldHVybiBxdWVyeS5pc0VtcHR5KCkgPyBlbXB0
eVN0cmluZygpIDogIj8iICsgcXVlcnk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9p
ZCBVUkxVdGlsczxUPjo6c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgVVJM
IHVybCA9IGhyZWYoKTsKKyAgICBTdHJpbmcgbmV3U2VhcmNoID0gKHZhbHVlWzBdID09ICc/Jykg
PyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2YWx1ZTsKKyAgICAvLyBNYWtlIHN1cmUgdGhhdCAnIycg
aW4gdGhlIHF1ZXJ5IGRvZXMgbm90IGxlYWsgdG8gdGhlIGhhc2guCisgICAgdXJsLnNldFF1ZXJ5
KG5ld1NlYXJjaC5yZXBsYWNlV2l0aExpdGVyYWwoJyMnLCAiJTIzIikpOworCisgICAgc2V0SHJl
Zih1cmwuc3RyaW5nKCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK1N0cmluZyBVUkxV
dGlsczxUPjo6aGFzaCgpIGNvbnN0Cit7CisgICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9
IGhyZWYoKS5mcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBpZiAoZnJhZ21lbnRJZGVudGlmaWVy
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgcmV0dXJuIEF0
b21pY1N0cmluZyhTdHJpbmcoIiMiICsgZnJhZ21lbnRJZGVudGlmaWVyKSk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPgordm9pZCBVUkxVdGlsczxUPjo6c2V0SGFzaChjb25zdCBTdHJpbmcm
IHZhbHVlKQoreworICAgIFVSTCB1cmwgPSBocmVmKCk7CisgICAgaWYgKHZhbHVlWzBdID09ICcj
JykKKyAgICAgICAgdXJsLnNldEZyYWdtZW50SWRlbnRpZmllcih2YWx1ZS5zdWJzdHJpbmcoMSkp
OworICAgIGVsc2UKKyAgICAgICAgdXJsLnNldEZyYWdtZW50SWRlbnRpZmllcih2YWx1ZSk7Cisg
ICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBVUkxVdGlsc19oCg==
</data>
<flag name="review"
          id="246919"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>