<?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>73824</bug_id>
          
          <creation_ts>2011-12-05 04:43:38 -0800</creation_ts>
          <short_desc>Rewrite action_derivedsourcesallinone.py in Perl</short_desc>
          <delta_ts>2011-12-05 22:22:26 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          
          <blocked>73394</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>dominicc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>515033</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-05 04:43:38 -0800</bug_when>
    <thetext>On Chromium/Windows build, 

- /usr/bin/perl generates &quot;/cygdrive/c/home/...&quot;-style paths when it applies Cwd::realpath() to file paths.
- /usr/bin/python can recognize &quot;C:/cygwin/home/...&quot;-style paths but cannot recognize &quot;/cygdrive/c/home/...&quot;-style paths.

This makes it difficult to read Perl&apos;s (i.e. generate-bindings.pl) output by Python (i.e. action_derivedsourcesallinone.py) (See comment #23 in bug 73394 for more details). 

The easy solution for this is to rewrite action_derivedsourcesallinone.py in Perl. In this way this path-style issue goes away, since /user/bin/perl can recognize (both &quot;C:/cygwin/home/...&quot;-style paths and) &quot;/cygdrive/c/home/...&quot;-style paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515037</commentid>
    <comment_count>1</comment_count>
      <attachid>117868</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-05 05:01:53 -0800</bug_when>
    <thetext>Created attachment 117868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515202</commentid>
    <comment_count>2</comment_count>
      <attachid>117868</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-05 10:56:59 -0800</bug_when>
    <thetext>Comment on attachment 117868
Patch

There might actually be a native GYP facility for doing this now, but this looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515653</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-05 22:20:22 -0800</bug_when>
    <thetext>This is INVALID now, right?  Please reopen if I&apos;ve misunderstood the discussion in the other bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515655</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-12-05 22:22:26 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; This is INVALID now, right?  Please reopen if I&apos;ve misunderstood the discussion in the other bug.

Right. Thanks. Depending on Tony&apos;s opinion, it may be re-opened though.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117868</attachid>
            <date>2011-12-05 05:01:53 -0800</date>
            <delta_ts>2011-12-05 18:39:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73824-20111205220152.patch</filename>
            <type>text/plain</type>
            <size>18655</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxOTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY5YjFiOTlmMDEwZmNh
Mjk3ZjdlYWEyODVmZTkzNDA5OGIzOWFjNi4uNGZmNDkxMDY0Yzk3ZjU5MmVjMjU3NzAwMzg4ZmY4
ODkwYzg5Y2QxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTEyLTA1ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXdyaXRlIGFjdGlv
bl9kZXJpdmVkc291cmNlc2FsbGlub25lLnB5IGluIFBlcmwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczODI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXdyaXRlcyBhY3Rpb25fZGVy
aXZlZHNvdXJjZXNhbGxpbm9uZS5weSBpbiBQZXJsLgorICAgICAgICBUaGUgbW90aXZhdGlvbiBp
cyBhcyBmb2xsb3dzLiBPbiBDaHJvbWl1bS9XaW5kb3dzIGJ1aWxkLAorCisgICAgICAgIC0gL3Vz
ci9iaW4vcGVybCBnZW5lcmF0ZXMgIi9jeWdkcml2ZS9jL2hvbWUvLi4uIi1zdHlsZSBwYXRocwor
ICAgICAgICAgIHdoZW4gaXQgYXBwbGllcyBDd2Q6OnJlYWxwYXRoKCkgdG8gZmlsZSBwYXRocy4K
KyAgICAgICAgLSAvdXNyL2Jpbi9weXRob24gY2FuIHJlY29nbml6ZSAiQzovY3lnd2luL2hvbWUv
Li4uIi1zdHlsZSBwYXRocyBidXQKKyAgICAgICAgICBjYW5ub3QgcmVjb2duaXplICIvY3lnZHJp
dmUvYy9ob21lLy4uLiItc3R5bGUgcGF0aHMuCisKKyAgICAgICAgVGhpcyBtYWtlcyBpdCBkaWZm
aWN1bHQgdG8gcmVhZCBQZXJsJ3MgKGkuZS4gZ2VuZXJhdGUtYmluZGluZ3MucGwpIG91dHB1dAor
ICAgICAgICBieSBQeXRob24gKGkuZS4gYWN0aW9uX2Rlcml2ZWRzb3VyY2VzYWxsaW5vbmUucHkp
IChTZWUgY29tbWVudCAjMjMgaW4gYnVnIDczMzk0CisgICAgICAgIGZvciBtb3JlIGRldGFpbHMp
LiBUaGUgZWFzeSBzb2x1dGlvbiBmb3IgdGhpcyBpcyB0byByZXdyaXRlCisgICAgICAgIGFjdGlv
bl9kZXJpdmVkc291cmNlc2FsbGlub25lLnB5IGluIFBlcmwuIEluIHRoaXMgd2F5IHRoaXMgcGF0
aC1zdHlsZSBpc3N1ZSBnb2VzIGF3YXksCisgICAgICAgIHNpbmNlIC91c2VyL2Jpbi9wZXJsIGNh
biByZWNvZ25pemUgIi9jeWdkcml2ZS9jL2hvbWUvLi4uIi1zdHlsZSBwYXRocworICAgICAgICAo
YW5kICJDOi9jeWd3aW4vaG9tZS8uLi4iLXN0eWxlIHBhdGhzIHRvbykuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisgICAgICAgIEkgbWFudWFsbHkgY29u
ZmlybWVkIHRoYXQgdGhlIG91cHV0IG9mIGdlbmVyYXRlX2Rlcml2ZWRfc291cmNlcy5wbAorICAg
ICAgICBpcyBlcXVpdmFsZW50IHRvIHRoYXQgb2Ygb2xkIGFjdGlvbl9kZXJpdmVkc291cmNlc2Fs
bGlub25lLnB5LgorCisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6IFVzZSBnZW5l
cmF0ZV9kZXJpdmVkX3NvdXJjZXMucGwuCisgICAgICAgICogV2ViQ29yZS5neXAvc2NyaXB0cy9h
Y3Rpb25fZGVyaXZlZHNvdXJjZXNhbGxpbm9uZS5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJD
b3JlLmd5cC9zY3JpcHRzL2dlbmVyYXRlX2Rlcml2ZWRfc291cmNlcy5wbDogQWRkZWQuCisgICAg
ICAgICh3cml0ZUNvbnRlbnQpOiBUaGUgc2FtZSB3aXRoIHdyaXRlQ29udGVudCgpIGluIGFjdGlv
bl9kZXJpdmVkc291cmNlc2FsbGlub25lLnB5LgorICAgICAgICAoZXh0cmFjdE1ldGFEYXRhKTog
VGhlIHNhbWUgd2l0aCBleHRyYWN0TWV0YURhdGEoKSBpbiBhY3Rpb25fZGVyaXZlZHNvdXJjZXNh
bGxpbm9uZS5weS4KKyAgICAgICAgKGV4dHJhY3RDb25kaXRpb25hbCk6IFRoZSBzYW1lIHdpdGgg
ZXh0cmFjdENvbmRpdGlvbmFsKCkgYW5kIGZvcm1hdENvbmRpdGlvbmFsKCkgaW4gYWN0aW9uX2Rl
cml2ZWRzb3VyY2VzYWxsaW5vbmUucHkuCisgICAgICAgIChnZW5lcmF0ZUNvbnRlbnQpOiBUaGUg
c2FtZSB3aXRoIGdlbmVyYXRlQ29udGVudCgpIGluIGFjdGlvbl9kZXJpdmVkc291cmNlc2FsbGlu
b25lLnB5LAorICAgICAgICBleGNlcHQgdGhhdCB0aGlzIGdlbmVyYXRlQ29udGVudCgpIGRpc3Ry
aWJ1dGVzIHRoZSBvdXRwdXQgaW50byBEZXJpdmVkU291cmNlcyouY3BwIGZpbGVzCisgICAgICAg
IGV2ZW5seSB1c2luZyBhIGNvdW50ZXIsIG5vdCB1c2luZyBhIGhhc2ggZnVuY3Rpb24uCisKIDIw
MTEtMTItMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSElF
UkFSQ0hZX1JFUVVFU1RfRVJSIGNoZWNrIGluIGNoZWNrQWNjZXB0Q2hpbGQgc2hvdWxkIGJlIG9w
dGltaXplZCBmb3IgbmV3Q2hpbGQgd2l0aG91dCBjaGlsZHJlbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cAppbmRleCAyMmE0OGMwZjRjZTRlNDJkMzk3ZDA0NzNlOWY3ZmNkZTdk
MWRhYmQ3Li5hY2U5Nzc1YjlmMTdiZWQ2ODI4OWYzZGViZTA0NTkwYjAwYjcyYzMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtODY3LDcgKzg2Nyw3IEBACiAgICAg
ICAgICAgICAnaWRsc19saXN0X3RlbXBfZmlsZSc6ICc8fChpZGxzX2xpc3RfdGVtcF9maWxlLnRt
cCA8QChiaW5kaW5nc19pZGxfZmlsZXMpKScsCiAgICAgICAgICAgfSwKICAgICAgICAgICAnaW5w
dXRzJzogWwotICAgICAgICAgICAgJ3NjcmlwdHMvYWN0aW9uX2Rlcml2ZWRzb3VyY2VzYWxsaW5v
bmUucHknLAorICAgICAgICAgICAgJ3NjcmlwdHMvZ2VuZXJhdGVfZGVyaXZlZF9zb3VyY2VzLnBs
JywKICAgICAgICAgICAgICc8KGlkbHNfbGlzdF90ZW1wX2ZpbGUpJywKICAgICAgICAgICAgICc8
IUAoY2F0IDwoaWRsc19saXN0X3RlbXBfZmlsZSkpJywKICAgICAgICAgICBdLApAQCAtODc1LDEw
ICs4NzUsMTEgQEAKICAgICAgICAgICAgICc8QChkZXJpdmVkX3NvdXJjZXNfYWdncmVnYXRlX2Zp
bGVzKScsCiAgICAgICAgICAgXSwKICAgICAgICAgICAnYWN0aW9uJzogWwotICAgICAgICAgICAg
J3B5dGhvbicsCi0gICAgICAgICAgICAnc2NyaXB0cy9hY3Rpb25fZGVyaXZlZHNvdXJjZXNhbGxp
bm9uZS5weScsCisgICAgICAgICAgICAncGVybCcsCisgICAgICAgICAgICAnLXcnLAorICAgICAg
ICAgICAgJ3NjcmlwdHMvZ2VuZXJhdGVfZGVyaXZlZF9zb3VyY2VzLnBsJywKKyAgICAgICAgICAg
ICctLWlkbExpc3RGaWxlJywKICAgICAgICAgICAgICc8KGlkbHNfbGlzdF90ZW1wX2ZpbGUpJywK
LSAgICAgICAgICAgICctLScsCiAgICAgICAgICAgICAnPEAoZGVyaXZlZF9zb3VyY2VzX2FnZ3Jl
Z2F0ZV9maWxlcyknLAogICAgICAgICAgIF0sCiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9kZXJpdmVkc291cmNlc2FsbGlu
b25lLnB5IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fZGVyaXZl
ZHNvdXJjZXNhbGxpbm9uZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg2MDcx
YmZjMDgwMWQ0YzY0YjY4Yjc4NzMxMmYyMmM1YzI4ZjNhYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3Jp
cHRzL2FjdGlvbl9kZXJpdmVkc291cmNlc2FsbGlub25lLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
MjAyICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0jCi0jIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0j
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSMKLSMg
Q29weXJpZ2h0IChjKSAyMDA5IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLSMg
YWN0aW9uX2Rlcml2ZWRzb3VyY2VzbGlzdC5weSBnZW5lcmF0ZXMgYSBzaW5nbGUgY3BwIGZpbGUg
dGhhdCBpbmNsdWRlcwotIyBhbGwgdjggYmluZGluZ3MgY3BwIGZpbGVzIGdlbmVyYXRlZCBmcm9t
IGlkbHMuIEZpbGVzIGNhbiBiZSBhc3NpZ25lZCBpbnRvCi0jIG11bHRpcGxlIG91dHB1dCBmaWxl
cywgdG8gcmVkdWNlIG1heGltdW0gY29tcGlsYXRpb24gdW5pdCBzaXplIGFuZCBhbGxvdwotIyBw
YXJhbGxlbCBjb21waWxhdGlvbi4KLSMKLSMgdXNhZ2U6IGFjdGlvbl9kZXJpdmVkc291cmNlc2xp
c3QucHkgSURMX0ZJTEVTX0xJU1QgLS0gT1VUUFVUX0ZJTEUxIE9VVFBVVF9GSUxFMiAuLi4KLSMK
LSMgTm90ZSB0aGF0IElETF9GSUxFU19MSVNUIGlzIGEgdGV4dCBmaWxlIGNvbnRhaW5pbmcgdGhl
IElETCBmaWxlIHBhdGhzLgotCi1pbXBvcnQgZXJybm8KLWltcG9ydCBvcwotaW1wb3J0IG9zLnBh
dGgKLWltcG9ydCByZQotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLQotIyBBIHJlZ2V4
cCBmb3IgZmluZGluZyBDb25kaXRpb25hbCBhdHRyaWJ1dGVzIGluIGludGVyZmFjZSBkZWZpbml0
aW9ucy4KLWNvbmRpdGlvbmFsUGF0dGVybiA9IHJlLmNvbXBpbGUoJ2ludGVyZmFjZVtcc10qXFtb
XlxdXSpDb25kaXRpb25hbD0oW1xfMC05YS16QS1aJnxdKiknKQotCi1jb3B5cmlnaHRUZW1wbGF0
ZSA9ICIiIi8qCi0gKiBUSElTIEZJTEUgV0FTIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVELCBETyBO
T1QgRURJVC4KLSAqCi0gKiBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSB0aGUgbWFrZV9qbmlf
bGlzdHMucHkgc2NyaXB0LgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotIiIiCi0KLQotIyBXcmFwcyBjb25kaXRpb25hbCB3
aXRoIEVOQUJMRSgpIGFuZCByZXBsYWNlICcmJywnfCcgd2l0aCAnJiYnLCd8fCcgaWYgbW9yZSB0
aGFuIG9uZSBjb25kaXRpb25hbCBpcyBzcGVjaWZpZWQuCi1kZWYgZm9ybWF0Q29uZGl0aW9uYWwo
Y29uZGl0aW9uYWwpOgotICAgIGRlZiB3cmFwV2l0aEVuYWJsZShzKToKLSAgICAgICAgaWYgcmUu
bWF0Y2goJ1t8Jl0kJywgcyk6Ci0gICAgICAgICAgICByZXR1cm4gcyAqIDIKLSAgICAgICAgcmV0
dXJuICdFTkFCTEUoJyArIHMgKyAnKScKLSAgICByZXR1cm4gJyAnLmpvaW4obWFwKHdyYXBXaXRo
RW5hYmxlLCBjb25kaXRpb25hbCkpCi0KLQotIyBGaW5kIHRoZSBjb25kaXRpb25hbCBpbnRlcmZh
Y2UgYXR0cmlidXRlLgotZGVmIGV4dHJhY3RDb25kaXRpb25hbChpZGxGaWxlUGF0aCk6Ci0gICAg
Y29uZGl0aW9uYWwgPSBOb25lCi0KLSAgICAjIFJlYWQgZmlsZSBhbmQgbG9vayBmb3IgImludGVy
ZmFjZSBbIENvbmRpdGlvbmFsPVhYWCBdIi4KLSAgICBpZGxGaWxlID0gb3BlbihpZGxGaWxlUGF0
aCkKLSAgICBpZGxDb250ZW50cyA9IGlkbEZpbGUucmVhZCgpLnJlcGxhY2UoJ1xuJywgJycpCi0g
ICAgaWRsRmlsZS5jbG9zZSgpCi0KLSAgICBtYXRjaCA9IGNvbmRpdGlvbmFsUGF0dGVybi5zZWFy
Y2goaWRsQ29udGVudHMpCi0gICAgaWYgbWF0Y2g6Ci0gICAgICAgIGNvbmRpdGlvbmFsID0gbWF0
Y2guZ3JvdXAoMSkKLSAgICAgICAgY29uZGl0aW9uYWwgPSByZS5zcGxpdCgnKFt8Jl0pJywgY29u
ZGl0aW9uYWwpCi0KLSAgICByZXR1cm4gY29uZGl0aW9uYWwKLQotIyBFeHRyYWN0cyBjb25kaXRp
b25hbCBhbmQgaW50ZXJmYWNlIG5hbWUgZnJvbSBlYWNoIElETCBmaWxlLgotZGVmIGV4dHJhY3RN
ZXRhRGF0YShmaWxlUGF0aHMpOgotICAgIG1ldGFEYXRhTGlzdCA9IFtdCi0KLSAgICBmb3IgZiBp
biBmaWxlUGF0aHM6Ci0gICAgICAgIG1ldGFEYXRhID0ge30KLSAgICAgICAgaWYgbGVuKGYpID09
IDA6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMo
Zik6Ci0gICAgICAgICAgICBwcmludCAnV0FSTklORzogZmlsZSBub3QgZm91bmQ6ICIlcyInICUg
ZgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAjIEV4dHJhY3QgdHlwZSBuYW1lIGZy
b20gZmlsZSBuYW1lCi0gICAgICAgIChwYXJlbnRQYXRoLCBmaWxlTmFtZSkgPSBvcy5wYXRoLnNw
bGl0KGYpCi0gICAgICAgIChpbnRlcmZhY2VOYW1lLCBleHQpID0gb3MucGF0aC5zcGxpdGV4dChm
aWxlTmFtZSkKLQotICAgICAgICBpZiBub3QgZXh0ID09ICcuaWRsJzoKLSAgICAgICAgICAgIGNv
bnRpbnVlCi0KLSAgICAgICAgbWV0YURhdGEgPSB7Ci0gICAgICAgICAgICAnY29uZGl0aW9uYWwn
OiBleHRyYWN0Q29uZGl0aW9uYWwoZiksCi0gICAgICAgICAgICAnbmFtZSc6IGludGVyZmFjZU5h
bWUsCi0gICAgICAgIH0KLQotICAgICAgICBtZXRhRGF0YUxpc3QuYXBwZW5kKG1ldGFEYXRhKQot
Ci0gICAgcmV0dXJuIG1ldGFEYXRhTGlzdAotCi0KLWRlZiBnZW5lcmF0ZUNvbnRlbnQoZmlsZXNN
ZXRhRGF0YSwgcGFydGl0aW9uLCB0b3RhbFBhcnRpdGlvbnMpOgotICAgICMgU29ydCBmaWxlcyBi
eSBjb25kaXRpb25hbHMuCi0gICAgZmlsZXNNZXRhRGF0YS5zb3J0KCkKLQotICAgIG91dHB1dCA9
IFtdCi0KLSAgICAjIEFkZCBmaXhlZCBjb250ZW50LgotICAgIG91dHB1dC5hcHBlbmQoY29weXJp
Z2h0VGVtcGxhdGUpCi0gICAgb3V0cHV0LmFwcGVuZCgnI2RlZmluZSBOT19JTVBMSUNJVF9BVE9N
SUNTVFJJTkdcblxuJykKLQotICAgICMgTGlzdCBhbGwgaW5jbHVkZXMgc2VnbWVudGVkIGJ5IGlm
IGFuZCBlbmRpZi4KLSAgICBwcmV2Q29uZGl0aW9uYWwgPSBOb25lCi0gICAgZm9yIG1ldGFEYXRh
IGluIGZpbGVzTWV0YURhdGE6Ci0gICAgICAgIG5hbWUgPSBtZXRhRGF0YVsnbmFtZSddCi0gICAg
ICAgIGlmIChoYXNoKG5hbWUpICUgdG90YWxQYXJ0aXRpb25zKSAhPSBwYXJ0aXRpb246Ci0gICAg
ICAgICAgICBjb250aW51ZQotICAgICAgICBjb25kaXRpb25hbCA9IG1ldGFEYXRhWydjb25kaXRp
b25hbCddCi0KLSAgICAgICAgaWYgcHJldkNvbmRpdGlvbmFsIGFuZCBwcmV2Q29uZGl0aW9uYWwg
IT0gY29uZGl0aW9uYWw6Ci0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCcjZW5kaWZcbicpCi0g
ICAgICAgIGlmIGNvbmRpdGlvbmFsIGFuZCBwcmV2Q29uZGl0aW9uYWwgIT0gY29uZGl0aW9uYWw6
Ci0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCdcbiNpZiAlc1xuJyAlIGZvcm1hdENvbmRpdGlv
bmFsKGNvbmRpdGlvbmFsKSkKLQotICAgICAgICBvdXRwdXQuYXBwZW5kKCcjaW5jbHVkZSAiYmlu
ZGluZ3MvVjglcy5jcHAiXG4nICUgbmFtZSkKLQotICAgICAgICBwcmV2Q29uZGl0aW9uYWwgPSBj
b25kaXRpb25hbAotCi0gICAgaWYgcHJldkNvbmRpdGlvbmFsOgotICAgICAgICBvdXRwdXQuYXBw
ZW5kKCcjZW5kaWZcbicpCi0KLSAgICByZXR1cm4gJycuam9pbihvdXRwdXQpCi0KLQotZGVmIHdy
aXRlQ29udGVudChjb250ZW50LCBvdXRwdXRGaWxlTmFtZSk6Ci0gICAgKHBhcmVudFBhdGgsIGZp
bGVOYW1lKSA9IG9zLnBhdGguc3BsaXQob3V0cHV0RmlsZU5hbWUpCi0gICAgaWYgbm90IG9zLnBh
dGguZXhpc3RzKHBhcmVudFBhdGgpOgotICAgICAgICBwcmludCBwYXJlbnRQYXRoCi0gICAgICAg
IG9zLm1rZGlyKHBhcmVudFBhdGgpCi0gICAgZiA9IG9wZW4ob3V0cHV0RmlsZU5hbWUsICd3JykK
LSAgICBmLndyaXRlKGNvbnRlbnQpCi0gICAgZi5jbG9zZSgpCi0KLQotZGVmIG1haW4oYXJncyk6
Ci0gICAgYXNzZXJ0KGxlbihhcmdzKSA+IDMpCi0gICAgaW5PdXRCcmVha0luZGV4ID0gYXJncy5p
bmRleCgnLS0nKQotICAgIGlucHV0RmlsZU5hbWUgPSBhcmdzWzFdCi0gICAgb3V0cHV0RmlsZU5h
bWVzID0gYXJnc1tpbk91dEJyZWFrSW5kZXgrMTpdCi0KLSAgICBpbnB1dEZpbGUgPSBvcGVuKGlu
cHV0RmlsZU5hbWUsICdyJykKLSAgICBpZGxGaWxlTmFtZXMgPSBpbnB1dEZpbGUucmVhZCgpLnNw
bGl0KCdcbicpCi0gICAgaW5wdXRGaWxlLmNsb3NlKCkKLQotICAgIGZpbGVzTWV0YURhdGEgPSBl
eHRyYWN0TWV0YURhdGEoaWRsRmlsZU5hbWVzKQotICAgIGZvciBmaWxlTmFtZSBpbiBvdXRwdXRG
aWxlTmFtZXM6Ci0gICAgICAgIHBhcnRpdGlvbiA9IG91dHB1dEZpbGVOYW1lcy5pbmRleChmaWxl
TmFtZSkKLSAgICAgICAgZmlsZUNvbnRlbnRzID0gZ2VuZXJhdGVDb250ZW50KGZpbGVzTWV0YURh
dGEsIHBhcnRpdGlvbiwgbGVuKG91dHB1dEZpbGVOYW1lcykpCi0gICAgICAgIHdyaXRlQ29udGVu
dChmaWxlQ29udGVudHMsIGZpbGVOYW1lKQotCi0gICAgcmV0dXJuIDAKLQotCi1pZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgotICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3YpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9nZW5lcmF0ZV9kZXJpdmVkX3Nv
dXJjZXMucGwgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2dlbmVyYXRlX2Rl
cml2ZWRfc291cmNlcy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTgzZDM1Y2JjNWU3MzRjNDdkY2FhMmUxNDA1
MjEyMjdjMDY4OGYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXAvc2NyaXB0cy9nZW5lcmF0ZV9kZXJpdmVkX3NvdXJjZXMucGwKQEAgLTAsMCArMSwxNjkgQEAK
KyMhL3Vzci9iaW4vcGVybAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisjIENvcHlyaWdodCAoYykg
MjAwOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjIGdlbmVyYXRlX2Rlcml2
ZWRfc291cmNlcy5wbCBnZW5lcmF0ZXMgYSBzaW5nbGUgY3BwIGZpbGUgdGhhdCBpbmNsdWRlcwor
IyBhbGwgdjggYmluZGluZ3MgY3BwIGZpbGVzIGdlbmVyYXRlZCBmcm9tIGlkbHMuIEZpbGVzIGNh
biBiZSBhc3NpZ25lZCBpbnRvCisjIG11bHRpcGxlIG91dHB1dCBmaWxlcywgdG8gcmVkdWNlIG1h
eGltdW0gY29tcGlsYXRpb24gdW5pdCBzaXplIGFuZCBhbGxvdworIyBwYXJhbGxlbCBjb21waWxh
dGlvbi4KKyMKKyMgdXNhZ2U6IC4vZ2VuZXJhdGVfZGVyaXZlZF9zb3VyY2VzLnBsIC0taWRsTGlz
dEZpbGUgSURMX0xJU1RfRklMRSBPVVRQVVRfRklMRTEgT1VUUFVUX0ZJTEUyIC4uLgorIworIyBO
b3RlIHRoYXQgSURMX0xJU1RfRklMRSBpcyBhbiBvdXRwdXQgb2YgV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsLgorCit1c2Ugc3RyaWN0OwordXNlIEZpbGU6OkJh
c2VuYW1lOwordXNlIEZpbGU6OlBhdGg7Cit1c2UgR2V0b3B0OjpMb25nOworCitteSAkY29weXJp
Z2h0VGVtcGxhdGUgPSAiLyoKKyAqIFRISVMgRklMRSBXQVMgQVVUT01BVElDQUxMWSBHRU5FUkFU
RUQsIERPIE5PVCBFRElULgorICoKKyAqIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IHRoZSBt
YWtlX2puaV9saXN0cy5weSBzY3JpcHQuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisiOworCitteSAkaWRsTGlzdEZpbGU7
CitHZXRPcHRpb25zKCdpZGxMaXN0RmlsZT1zJyA9PiBcJGlkbExpc3RGaWxlKTsKK215IEBvdXRw
dXRGaWxlcyA9IEBBUkdWOworZGllICJNdXN0IHNwZWNpZnkgdGhlIC0taWRsTGlzdEZpbGUgb3B0
aW9uLlxuIiB1bmxlc3MgJGlkbExpc3RGaWxlOworZGllICJNdXN0IHNwZWNpZnkgb3V0cHV0IGZp
bGVzLlxuIiB1bmxlc3MgQG91dHB1dEZpbGVzOworCitteSBAaWRsRmlsZXM7CitvcGVuIEZILCAi
PCAkaWRsTGlzdEZpbGUiIG9yIGRpZSAiQ2Fubm90IG9wZW4gJGlkbExpc3RGaWxlXG4iOworQGlk
bEZpbGVzID0gPEZIPjsKK2Nob21wIEBpZGxGaWxlczsKK2Nsb3NlIEZIOworCitteSAkZmlsZU1l
dGFEYXRhID0gZXh0cmFjdE1ldGFEYXRhKEBpZGxGaWxlcyk7Citmb3IgKG15ICRpbmRleCA9IDA7
ICRpbmRleCA8IEBvdXRwdXRGaWxlczsgJGluZGV4KyspIHsKKyAgICBteSAkZmlsZUNvbnRlbnRz
ID0gZ2VuZXJhdGVDb250ZW50KCRmaWxlTWV0YURhdGEsICRpbmRleCwgc2NhbGFyIEBvdXRwdXRG
aWxlcyk7CisgICAgd3JpdGVDb250ZW50KCRmaWxlQ29udGVudHMsICRvdXRwdXRGaWxlc1skaW5k
ZXhdKTsKK30KKworc3ViIHdyaXRlQ29udGVudAoreworICAgIG15ICgkZmlsZUNvbnRlbnRzLCAk
ZmlsZU5hbWUpID0gQF87CisgICAgbXkgJHBhcmVudFBhdGggPSBkaXJuYW1lICRmaWxlTmFtZTsK
KyAgICBta2RpciAkcGFyZW50UGF0aCBvciBkaWUgIkNhbm5vdCBjcmVhdGUgJHBhcmVudFBhdGhc
biIgdW5sZXNzIC1kICRwYXJlbnRQYXRoOworICAgIG9wZW4gRkgsICI+ICRmaWxlTmFtZSIgb3Ig
ZGllICJDYW5ub3Qgb3BlbiAkZmlsZU5hbWVcbiI7CisgICAgcHJpbnQgRkggJGZpbGVDb250ZW50
czsKKyAgICBjbG9zZSBGSDsKK30KKworIyBFeHRyYWN0cyBjb25kaXRpb25hbCBhbmQgaW50ZXJm
YWNlIG5hbWUgZnJvbSBlYWNoIElETCBmaWxlLgorc3ViIGV4dHJhY3RNZXRhRGF0YQoreworICAg
IG15IChAaWRsRmlsZXMpID0gQF87CisgICAgbXkgQG1ldGFEYXRhTGlzdDsKKyAgICBmb3JlYWNo
IG15ICRmaWxlIChAaWRsRmlsZXMpIHsKKyAgICAgICAgcHJpbnQgIldBUk5JTkc6IE5vdCBmb3Vu
ZCAkZmlsZVxuIiBhbmQgbmV4dCB1bmxlc3MgLWYgJGZpbGU7CisgICAgICAgIG15ICgkaW50ZXJm
YWNlTmFtZSwgJHBhcmVudFBhdGgsICRzdWZmaXgpID0gZmlsZXBhcnNlKGJhc2VuYW1lKCRmaWxl
KSwgIi5pZGwiKTsKKyAgICAgICAgaWYgKCRzdWZmaXggZXEgIi5pZGwiKSB7CisgICAgICAgICAg
ICBwdXNoIEBtZXRhRGF0YUxpc3QsIHtjb25kaXRpb25hbCA9PiBleHRyYWN0Q29uZGl0aW9uYWwo
JGZpbGUpLCBuYW1lID0+ICRpbnRlcmZhY2VOYW1lfTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gXEBtZXRhRGF0YUxpc3Q7Cit9CisKKyMgRmluZCB0aGUgY29uZGl0aW9uYWwgaW50ZXJm
YWNlIGF0dHJpYnV0ZS4KK3N1YiBleHRyYWN0Q29uZGl0aW9uYWwKK3sKKyAgICBteSAoJGlkbEZp
bGUpID0gQF87CisgICAgb3BlbiBGSCwgJGlkbEZpbGUgb3IgZGllICJDYW5ub3Qgb3BlbiAkaWRs
RmlsZVxuIjsKKyAgICBteSBAbGluZXMgPSA8Rkg+OworICAgIGNob21wKEBsaW5lcyk7CisgICAg
Y2xvc2UgRkg7CisKKyAgICBteSBAY29uZGl0aW9uYWwgPSAoKTsKKyAgICBteSAkYWxsTGluZXNU
b1N0cmluZyA9IGpvaW4gIiAiLCBAbGluZXM7CisgICAgIyBBIHJlZ2V4cCBmb3IgZmluZGluZyBD
b25kaXRpb25hbCBhdHRyaWJ1dGVzIGluIGludGVyZmFjZSBkZWZpbml0aW9ucy4KKyAgICBpZiAo
JGFsbExpbmVzVG9TdHJpbmcgPX4gL2ludGVyZmFjZVxzKlxbW15cXV0qQ29uZGl0aW9uYWw9KFtc
XzAtOWEtekEtWiZ8XSopLykgeworICAgICAgICBAY29uZGl0aW9uYWwgPSBzcGxpdCAvKFt8Jl0p
LywgJDE7CisgICAgfQorICAgICMgV3JhcHMgY29uZGl0aW9uYWwgd2l0aCBFTkFCTEUoKSBhbmQg
cmVwbGFjZSAnJicsJ3wnIHdpdGggJyYmJywnfHwnIGlmIG1vcmUgdGhhbiBvbmUgY29uZGl0aW9u
YWwgaXMgc3BlY2lmaWVkLgorICAgIHJldHVybiBqb2luICIgIiwgbWFwIHsvW3wmXSQvID8gIiRf
JF8iIDogIkVOQUJMRSgkXykiIH0gQGNvbmRpdGlvbmFsOworfQorCitzdWIgZ2VuZXJhdGVDb250
ZW50Cit7CisgICAgbXkgKCRmaWxlTWV0YURhdGEsICRwYXJ0aXRpb24sICR0b3RhbFBhcnRpdGlv
bnMpID0gQF87CisgICAgIyBTb3J0IGZpbGVzIGJ5IGNvbmRpdGlvbmFscy4KKyAgICBAJGZpbGVN
ZXRhRGF0YSA9IHNvcnQgeyRhLT57Y29uZGl0aW9uYWx9IGNtcCAkYi0+e2NvbmRpdGlvbmFsfX0g
QCRmaWxlTWV0YURhdGE7CisKKyAgICAjIEFkZCBmaXhlZCBjb250ZW50LgorICAgIG15ICRjb250
ZW50ID0gJGNvcHlyaWdodFRlbXBsYXRlOworICAgICRjb250ZW50IC49ICIjZGVmaW5lIE5PX0lN
UExJQ0lUX0FUT01JQ1NUUklOR1xuXG4iOworCisgICAgIyBMaXN0IGFsbCBpbmNsdWRlcyBzZWdt
ZW50ZWQgYnkgaWYgYW5kIGVuZGlmLgorICAgIG15ICRwcmV2Q29uZGl0aW9uYWw7CisgICAgbXkg
JGNvdW50ZXIgPSAwOworICAgIGZvcmVhY2ggbXkgJG1ldGFEYXRhIChAJGZpbGVNZXRhRGF0YSkg
eworICAgICAgICBteSAoJG5hbWUsICRjb25kaXRpb25hbCkgPSAoJG1ldGFEYXRhLT57bmFtZX0s
ICRtZXRhRGF0YS0+e2NvbmRpdGlvbmFsfSk7CisgICAgICAgIG5leHQgaWYgKyskY291bnRlciAl
ICR0b3RhbFBhcnRpdGlvbnMgIT0gJHBhcnRpdGlvbjsKKworICAgICAgICBpZiAoJHByZXZDb25k
aXRpb25hbCBhbmQgJHByZXZDb25kaXRpb25hbCBuZSAkY29uZGl0aW9uYWwpIHsKKyAgICAgICAg
ICAgICRjb250ZW50IC49ICIjZW5kaWZcbiI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRjb25k
aXRpb25hbCBhbmQgJHByZXZDb25kaXRpb25hbCBuZSAkY29uZGl0aW9uYWwpIHsKKyAgICAgICAg
ICAgICRjb250ZW50IC49ICJcbiNpZiAiIC4gJGNvbmRpdGlvbmFsIC4gIlxuIjsKKyAgICAgICAg
fQorICAgICAgICAkY29udGVudCAuPSAiI2luY2x1ZGUgXCJiaW5kaW5ncy9WOCR7bmFtZX0uY3Bw
XCJcbiI7CisgICAgICAgICRwcmV2Q29uZGl0aW9uYWwgPSAkY29uZGl0aW9uYWw7CisgICAgfQor
ICAgICRjb250ZW50IC49ICIjZW5kaWZcbiIgaWYgJHByZXZDb25kaXRpb25hbDsKKyAgICByZXR1
cm4gJGNvbnRlbnQ7Cit9Cg==
</data>
<flag name="review"
          id="117452"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="117544"
          type_id="3"
          status="-"
          setter="haraken"
    />
          </attachment>
      

    </bug>

</bugzilla>