diff options
Diffstat (limited to 'haddock-api')
33 files changed, 4875 insertions, 3432 deletions
| diff --git a/haddock-api/COPYING.agpl3 b/haddock-api/COPYING.agpl3 new file mode 100644 index 00000000..be3f7b28 --- /dev/null +++ b/haddock-api/COPYING.agpl3 @@ -0,0 +1,661 @@ +                    GNU AFFERO GENERAL PUBLIC LICENSE +                       Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +                            Preamble + +  The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + +  The licenses for most software and other practical works are designed +to take away your freedom to share and change the works.  By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + +  When we speak of free software, we are referring to freedom, not +price.  Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +  Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + +  A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate.  Many developers of free software are heartened and +encouraged by the resulting cooperation.  However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + +  The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community.  It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server.  Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + +  An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals.  This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + +  The precise terms and conditions for copying, distribution and +modification follow. + +                       TERMS AND CONDITIONS + +  0. Definitions. + +  "This License" refers to version 3 of the GNU Affero General Public License. + +  "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + +  "The Program" refers to any copyrightable work licensed under this +License.  Each licensee is addressed as "you".  "Licensees" and +"recipients" may be individuals or organizations. + +  To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy.  The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + +  A "covered work" means either the unmodified Program or a work based +on the Program. + +  To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy.  Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +  To "convey" a work means any kind of propagation that enables other +parties to make or receive copies.  Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + +  An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License.  If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +  1. Source Code. + +  The "source code" for a work means the preferred form of the work +for making modifications to it.  "Object code" means any non-source +form of a work. + +  A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +  The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form.  A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +  The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities.  However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work.  For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +  The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + +  The Corresponding Source for a work in source code form is that +same work. + +  2. Basic Permissions. + +  All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met.  This License explicitly affirms your unlimited +permission to run the unmodified Program.  The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work.  This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +  You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force.  You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright.  Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + +  Conveying under any other circumstances is permitted solely under +the conditions stated below.  Sublicensing is not allowed; section 10 +makes it unnecessary. + +  3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +  No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +  When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + +  4. Conveying Verbatim Copies. + +  You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +  You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +  5. Conveying Modified Source Versions. + +  You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + +    a) The work must carry prominent notices stating that you modified +    it, and giving a relevant date. + +    b) The work must carry prominent notices stating that it is +    released under this License and any conditions added under section +    7.  This requirement modifies the requirement in section 4 to +    "keep intact all notices". + +    c) You must license the entire work, as a whole, under this +    License to anyone who comes into possession of a copy.  This +    License will therefore apply, along with any applicable section 7 +    additional terms, to the whole of the work, and all its parts, +    regardless of how they are packaged.  This License gives no +    permission to license the work in any other way, but it does not +    invalidate such permission if you have separately received it. + +    d) If the work has interactive user interfaces, each must display +    Appropriate Legal Notices; however, if the Program has interactive +    interfaces that do not display Appropriate Legal Notices, your +    work need not make them do so. + +  A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit.  Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +  6. Conveying Non-Source Forms. + +  You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + +    a) Convey the object code in, or embodied in, a physical product +    (including a physical distribution medium), accompanied by the +    Corresponding Source fixed on a durable physical medium +    customarily used for software interchange. + +    b) Convey the object code in, or embodied in, a physical product +    (including a physical distribution medium), accompanied by a +    written offer, valid for at least three years and valid for as +    long as you offer spare parts or customer support for that product +    model, to give anyone who possesses the object code either (1) a +    copy of the Corresponding Source for all the software in the +    product that is covered by this License, on a durable physical +    medium customarily used for software interchange, for a price no +    more than your reasonable cost of physically performing this +    conveying of source, or (2) access to copy the +    Corresponding Source from a network server at no charge. + +    c) Convey individual copies of the object code with a copy of the +    written offer to provide the Corresponding Source.  This +    alternative is allowed only occasionally and noncommercially, and +    only if you received the object code with such an offer, in accord +    with subsection 6b. + +    d) Convey the object code by offering access from a designated +    place (gratis or for a charge), and offer equivalent access to the +    Corresponding Source in the same way through the same place at no +    further charge.  You need not require recipients to copy the +    Corresponding Source along with the object code.  If the place to +    copy the object code is a network server, the Corresponding Source +    may be on a different server (operated by you or a third party) +    that supports equivalent copying facilities, provided you maintain +    clear directions next to the object code saying where to find the +    Corresponding Source.  Regardless of what server hosts the +    Corresponding Source, you remain obligated to ensure that it is +    available for as long as needed to satisfy these requirements. + +    e) Convey the object code using peer-to-peer transmission, provided +    you inform other peers where the object code and Corresponding +    Source of the work are being offered to the general public at no +    charge under subsection 6d. + +  A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +  A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling.  In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage.  For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product.  A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + +  "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source.  The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + +  If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information.  But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +  The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed.  Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + +  Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +  7. Additional Terms. + +  "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law.  If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +  When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it.  (Additional permissions may be written to require their own +removal in certain cases when you modify the work.)  You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +  Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + +    a) Disclaiming warranty or limiting liability differently from the +    terms of sections 15 and 16 of this License; or + +    b) Requiring preservation of specified reasonable legal notices or +    author attributions in that material or in the Appropriate Legal +    Notices displayed by works containing it; or + +    c) Prohibiting misrepresentation of the origin of that material, or +    requiring that modified versions of such material be marked in +    reasonable ways as different from the original version; or + +    d) Limiting the use for publicity purposes of names of licensors or +    authors of the material; or + +    e) Declining to grant rights under trademark law for use of some +    trade names, trademarks, or service marks; or + +    f) Requiring indemnification of licensors and authors of that +    material by anyone who conveys the material (or modified versions of +    it) with contractual assumptions of liability to the recipient, for +    any liability that these contractual assumptions directly impose on +    those licensors and authors. + +  All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10.  If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term.  If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +  If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +  Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + +  8. Termination. + +  You may not propagate or modify a covered work except as expressly +provided under this License.  Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +  However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + +  Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +  Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License.  If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +  9. Acceptance Not Required for Having Copies. + +  You are not required to accept this License in order to receive or +run a copy of the Program.  Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance.  However, +nothing other than this License grants you permission to propagate or +modify any covered work.  These actions infringe copyright if you do +not accept this License.  Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +  10. Automatic Licensing of Downstream Recipients. + +  Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License.  You are not responsible +for enforcing compliance by third parties with this License. + +  An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations.  If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +  You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License.  For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +  11. Patents. + +  A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based.  The +work thus licensed is called the contributor's "contributor version". + +  A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version.  For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +  Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +  In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement).  To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +  If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients.  "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +  If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +  A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License.  You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + +  Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +  12. No Surrender of Others' Freedom. + +  If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License.  If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all.  For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + +  13. Remote Network Interaction; Use with the GNU General Public License. + +  Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software.  This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + +  Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work.  The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + +  14. Revised Versions of this License. + +  The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time.  Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +  Each version is given a distinguishing version number.  If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation.  If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + +  If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + +  Later license versions may give you additional or different +permissions.  However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +  15. Disclaimer of Warranty. + +  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +  16. Limitation of Liability. + +  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + +  17. Interpretation of Sections 15 and 16. + +  If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + +                     END OF TERMS AND CONDITIONS + +            How to Apply These Terms to Your New Programs + +  If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +  To do so, attach the following notices to the program.  It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + +    <one line to give the program's name and a brief idea of what it does.> +    Copyright (C) <year>  <name of author> + +    This program is free software: you can redistribute it and/or modify +    it under the terms of the GNU Affero General Public License as published by +    the Free Software Foundation, either version 3 of the License, or +    (at your option) any later version. + +    This program is distributed in the hope that it will be useful, +    but WITHOUT ANY WARRANTY; without even the implied warranty of +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +    GNU Affero General Public License for more details. + +    You should have received a copy of the GNU Affero General Public License +    along with this program.  If not, see <https://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + +  If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source.  For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code.  There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + +  You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +<https://www.gnu.org/licenses/>. diff --git a/haddock-api/LICENSE b/haddock-api/COPYING.freebsd index d5f0b37c..d5f0b37c 100644 --- a/haddock-api/LICENSE +++ b/haddock-api/COPYING.freebsd diff --git a/haddock-api/README.org b/haddock-api/README.org new file mode 100644 index 00000000..3bd64d32 --- /dev/null +++ b/haddock-api/README.org @@ -0,0 +1,142 @@ +* haddorg-api + +*NOTE*. This is the README file to ~haddorg-api~.  For the README file +to haddock, see README.md. + +** Overview + +Haddock is a documentation generator for Haskell libraries and it +supports several backends including HTML, latex and hoogle.  The +program logic of the ~haddock~ tool is the ~haddock-api~ package. + +~haddorg-api~ adds an org backend of ~haddock-api~, so that one can +invoke haddock to generate org files, of the Org Mode. + +** Examples + +- [[https://ypei.org/assets/haddorg-output/base-4.16.1.0.org.gz][base-4.16.1.0.org]] +- [[https://ypei.org/assets/haddorg-output/ghc-lib-parser-9.2.2.20220307.org.gz][ghc-lib-parser-9.2.2.20220307.org]], which can be used as a fake ghc +  for cross-package linking +- lens +- [[https://ypei.org/assets/haddorg-output/haddorg-api-2.26.1.org.gz][haddorg-api-2.26.1.org]], also in this repository +- [[https://ypei.org/assets/haddorg-output/haddock-library-2.26.1.org.gz][haddock-library-2.26.1.org]] +- [[https://ypei.org/assets/haddorg-output/haddorg-ghc-base.org.gz][haddorg-api + haddock-library + fake ghc + base]], demonstrating +  cross-package linking +- [[https://ypei.org/assets/haddorg-output/fsd-sqlite-simple-debian.org.gz][fsd + sqlite-simple + debian]], to demonstrating cross-package linking +- and [[https://ypei.org/assets/haddorg-output/][more...]] + +** Install + +#+begin_src sh +git clone https://g.ypei.me/haddock.git +cd haddock +cabal install +#+end_src + +This will create a haddock binary under ~$HOME/.cabal/bin~ - make sure +it is in your PATH. + +To make cabal use the haddock built with ~haddorg-api~, modify the +~haddock-ghc-x.y.z~ shell script, where ~x.y.z~ is the GHC version. + +The file ~haddock-ghc-x.y.z~ is located in the same directory as your +~ghc-x.y.z~ binary.  The following command should print its path + +#+begin_src sh +readlink -f `which ghc` | sed 's/\(.*\)ghc\(.*\)/\1haddock-ghc\2/' +#+end_src + +For example, if you use ghcup and ghc-9.2.2, then the path should be +~$HOME/.ghcup/ghc/9.2.2/bin/haddock-ghc-9.2.2~. + +Once you have located the correct ~haddock-ghc~ script, modify it by +updating the ~exedir~ to ~"$HOME/.cabal/bin"~: + +#+begin_src sh +#!/bin/sh +exedir="$HOME/.cabal/bin" # <- update this line +exeprog="haddock" +# ... +#+end_src + +** Usage + +~haddorg-api~ adds an ~--org~ flag to the ~haddock~ command. + +*** Direct invocation + +#+begin_src sh +haddock Hello.hs --org +#+end_src + +*** With cabal +After telling cabal to use haddock built with haddorg-api (see +[[Install]]), cd into the package you want to build the org documentation +for, and run: + +#+begin_src sh +cabal haddock --haddock-option=--org +#+end_src + +If success, a fresh new org documentation will be placed under the +package directory. + +** Tips + +- If you would like cross-package links to work, simply concatenate +  files.  For example, concat the org file of base with that of any +  library that say uses ~String~ in ~Prelude~ will cause ~String~ +  links to navigate to the definition of ~String~. + +** Coverage and areas for further work + +Most features and most packages should work.  However, there are some +features to be completed.  Below is an incomplete list of missing +features, with rare occurrences in real world haskell documentations +marked by (RARE) + +- Infix declarations (currently all infix decls are shown as prefix) +- Operator precendences +- Minimal Signatures for classes operations +- Correct linking due to distinction between top level identifiers and +  constructors +- (RARE) Data instance constructors +- (RARE) Linear types +- (RARE) Bundled patterns + +Some (rare) problems due to mismatch of haddock markup and org mode: + +- (RARE) Lack of distinction between inline and block elements in +  haddock markup +- (RARE) Table column and row spans + +Some cosmetic issues: + +- Relative heading depth for DocHeaders + +*** Linking issue + +One classical question for Org Mode users is: One org file per package +or one big org file containing all packages?  Currently haddorg-api +takes the latter approach.  It produces one org file per package, but +cross-package links are generated in a way so that they only work in +one big org file from concatenation of separate package org +files. This may become unwieldy, especially when the big org file +contains large libraries like base and ghc.  For links to work in the +alternative approach, the links have to be aware of org files of other +packages. + +** Acknowledgement + +Part of the code is adapted from [[https://github.com/lucasvreis/org-parser][org-parser]]. + +** License, copyright, contributing + +Haddock is licensed under modified BSD (aka BSD-3-Clause), with +haddock-api and haddock-library licensed under the FreeBSD license +(aka BSD 2-Clause).  To contribute, see CONTRIBUTING.md. + +The Org backend written by Yuchen Pei is under the GNU Affero General +Public License, version 3 or later.  See COPYING.agpl3 for the license +text.  To report issues or send patches regarding the org backend, +email Yuchen at <id@ypei.org>. diff --git a/haddock-api/haddock-api.cabal b/haddock-api/haddorg-api.cabal index 9770061c..caa4286f 100644 --- a/haddock-api/haddock-api.cabal +++ b/haddock-api/haddorg-api.cabal @@ -1,16 +1,14 @@ -cabal-version:        2.0 -name:                 haddock-api -version:              2.26.0 -synopsis:             A documentation-generation tool for Haskell libraries -description:          Haddock is a documentation-generation tool for Haskell -                      libraries -license:              BSD2 -license-file:         LICENSE -author:               Simon Marlow, David Waern -maintainer:           Alec Theriault <alec.theriault@gmail.com>, Alex Biehl <alexbiehl@gmail.com>, Simon Hengel <sol@typeful.net>, Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk> -homepage:             http://www.haskell.org/haddock/ -bug-reports:          https://github.com/haskell/haddock/issues -copyright:            (c) Simon Marlow, David Waern +cabal-version:        2.2 +name:                 haddorg-api +version:              2.26.1 +synopsis:             haddock-api with an org backend +description:          This is haddorg-api.  It is a modified version of the Haddock API (haddock-api) with the addition of an Org Backend.  See README.org for further information. +license:              BSD-2-Clause AND AGPL-3.0-or-later +license-files:        COPYING.freebsd, COPYING.agpl3 +author:               Haddock authors and Yuchen Pei +maintainer:           Yuchen Pei <id@ypei.org> +homepage:             https://g.ypei.me/haddorg.git +copyright:            Copyright holders of haddock-api, and Yuchen Pei  category:             Documentation  build-type:           Simple  tested-with:          GHC==9.2.* @@ -46,7 +44,7 @@ library    build-depends: base            ^>= 4.16.0                 , ghc             ^>= 9.3                 , ghc-paths       ^>= 0.1.0.9 -               , haddock-library ^>= 1.9.0 +               , haddock-library ^>= 1.10.0                 , xhtml           ^>= 3000.2.2                 , parsec          ^>= 3.1.13.0 @@ -63,6 +61,7 @@ library                 , ghc-boot                 , mtl                 , transformers +               , text    hs-source-dirs: src @@ -113,6 +112,8 @@ library      Haddock.Backends.Hyperlinker.Renderer      Haddock.Backends.Hyperlinker.Types      Haddock.Backends.Hyperlinker.Utils +    Haddock.Backends.Org +    Haddock.Backends.Org.Types      Haddock.ModuleTree      Haddock.Types      Haddock.Doc @@ -122,10 +123,10 @@ library      Haddock.GhcUtils      Haddock.Syb      Haddock.Convert -    Paths_haddock_api +    Paths_haddorg_api    autogen-modules: -    Paths_haddock_api +    Paths_haddorg_api  test-suite spec    type:             exitcode-stdio-1.0 @@ -144,6 +145,8 @@ test-suite spec      Haddock.Backends.Hyperlinker.Renderer      Haddock.Backends.Hyperlinker.Utils      Haddock.Backends.LaTeX +    Haddock.Backends.Org +    Haddock.Backends.Org.Types      Haddock.Backends.Xhtml      Haddock.Backends.Xhtml.Decl      Haddock.Backends.Xhtml.DocMarkup @@ -175,14 +178,14 @@ test-suite spec      Haddock.Utils.Json.Types      Haddock.Utils.Json.Parser      Haddock.Version -    Paths_haddock_api +    Paths_haddorg_api      Haddock.Backends.Hyperlinker.ParserSpec      Haddock.Backends.Hyperlinker.Parser      Haddock.Backends.Hyperlinker.Types    build-depends: ghc             ^>= 9.3                 , ghc-paths       ^>= 0.1.0.12 -               , haddock-library ^>= 1.9.0 +               , haddock-library ^>= 1.10.0                 , xhtml           ^>= 3000.2.2                 , hspec           ^>= 2.9                 , parsec          ^>= 3.1.13.0 @@ -210,4 +213,4 @@ test-suite spec  source-repository head    type:     git    subdir:   haddock-api -  location: https://github.com/haskell/haddock.git +  location: https://g.ypei.me/haddock.git diff --git a/haddock-api/resources/html/Linuwial.std-theme/linuwial.css b/haddock-api/resources/html/Linuwial.std-theme/linuwial.css index cbb58a03..4164b849 100644 --- a/haddock-api/resources/html/Linuwial.std-theme/linuwial.css +++ b/haddock-api/resources/html/Linuwial.std-theme/linuwial.css @@ -544,6 +544,10 @@ table.info {    background: url(synopsis.png) no-repeat -75px -8px;  } +#synopsis details:not([open]) > ul { +  visibility: hidden; +} +  #synopsis ul {    height: 100%;    overflow: auto; diff --git a/haddock-api/resources/html/haddock-bundle.min.js b/haddock-api/resources/html/haddock-bundle.min.js index 188ab76a..23de1695 100644 --- a/haddock-api/resources/html/haddock-bundle.min.js +++ b/haddock-api/resources/html/haddock-bundle.min.js @@ -1,2 +1,2 @@ -!function i(s,a,l){function c(t,e){if(!a[t]){if(!s[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(u)return u(t,!0);var o=new Error("Cannot find module '"+t+"'");throw o.code="MODULE_NOT_FOUND",o}var r=a[t]={exports:{}};s[t][0].call(r.exports,function(e){return c(s[t][1][e]||e)},r,r.exports,i,s,a,l)}return a[t].exports}for(var u="function"==typeof require&&require,e=0;e<l.length;e++)c(l[e]);return c}({1:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.setCookie=function(e,t){document.cookie=e+"="+encodeURIComponent(t)+";path=/;"},n.clearCookie=function(e){document.cookie=e+"=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;"},n.getCookie=function(e){for(var t=e+"=",n=document.cookie.split(";"),o=0;o<n.length;o++){for(var r=n[o];" "==r.charAt(0);)r=r.substring(1,r.length);if(0==r.indexOf(t))return decodeURIComponent(r.substring(t.length,r.length))}return null}},{}],2:[function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(n,"__esModule",{value:!0});var i,s,a=e("preact"),l=a.h,c=a.Component;(s=i||(i={}))[s.Closed=0]="Closed",s[s.Open=1]="Open";var u={defaultInstanceState:i.Open,rememberToggles:!0},d=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(t){return l("li",null,l("a",{href:"#",onClick:function(e){e.preventDefault(),t.onClick()}},t.title))},t}(c);function h(e){var t=document.querySelector("#page-menu"),n=document.createElement("li");t.insertBefore(n,t.firstChild),a.render(l(d,{onClick:e,title:"Instances"}),t,n)}var p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.componentWillMount=function(){var t=this;document.addEventListener("mousedown",this.hide.bind(this)),document.addEventListener("keydown",function(e){t.state.isVisible&&"Escape"===e.key&&t.hide()})},t.prototype.hide=function(){this.setState({isVisible:!1})},t.prototype.show=function(){this.state.isVisible||this.setState({isVisible:!0})},t.prototype.toggleVisibility=function(){this.state.isVisible?this.hide():this.show()},t.prototype.componentDidMount=function(){this.props.showHideTrigger(this.toggleVisibility.bind(this))},t.prototype.render=function(e,t){return l("div",{id:"preferences",class:t.isVisible?"":"hidden"},l("div",{id:"preferences-menu",class:"dropdown-menu",onMouseDown:function(e){e.stopPropagation()}},l(b,null)))},t}(c);function f(){var e=JSON.stringify(u);try{localStorage.setItem("global",e)}catch(e){}}var v=!1;function g(){if(!v){v=!0;var e=localStorage.getItem("global");if(e)try{var t=JSON.parse(e);u.defaultInstanceState=t.defaultInstanceState,u.rememberToggles=t.rememberToggles}catch(e){if(!(e instanceof SyntaxError||e instanceof TypeError))throw e;localStorage.removeItem("global")}}}function m(t){return function(e){u.defaultInstanceState=t,A(),f(),E(),O()}}function y(e){var t=e.target.checked;u.rememberToggles=t,f(),E(),O()}function _(e){var t=document.getElementById("default-collapse-instances");null!==t&&(t.checked?m(i.Closed)(e):m(i.Open)(e))}function b(){return g(),l("div",null,l("div",null,l("button",{type:"button",onClick:j},"Expand All Instances"),l("button",{type:"button",onClick:P},"Collapse All Instances")),l("div",null,l("input",{type:"checkbox",id:"default-collapse-instances",name:"default-instance-state",checked:u.defaultInstanceState===i.Closed,onClick:_}),l("span",null,"Collapse All Instances By Default")),l("div",null,l("input",{type:"checkbox",id:"remember-toggles",name:"remember-toggles",checked:u.rememberToggles,onClick:y}),l("label",{for:"remember-toggles"},"Remember Manually Collapsed/Expanded Instances")))}var k={};function S(e){var t=k[e];if(null==t)throw new Error("could not find <details> element with id '"+e+"'");return t}function x(){return u.defaultInstanceState==i.Open}function w(e){for(var t=S(e.target.id),n=t.element.open,o=0,r=t.toggles;o<r.length;o++){var i=r[o];i.classList.contains("details-toggle-control")&&(i.classList.add(n?"collapser":"expander"),i.classList.remove(n?"expander":"collapser"))}}function C(e){var t=e.getAttribute("data-details-id");if(!t)throw new Error("element with class "+e+" has no 'data-details-id' attribute!");return t}function L(e){var t=S(C(e)).element;t.open=!t.open}var M="local-details-config:";function I(){return M+document.location.pathname}function E(){for(var e=[],t=0;t<localStorage.length;++t){var n=localStorage.key(t);null!==n&&n.startsWith(M)&&e.push(n)}e.forEach(function(e){localStorage.removeItem(e)})}function O(){if(u.rememberToggles){var e=Array.prototype.slice.call(document.getElementsByClassName("instances details-toggle details-toggle-control")),n=[];e.forEach(function(e){var t=C(e);document.getElementById(t).open!=x()&&n.push(t)});var t=JSON.stringify(n);try{localStorage.setItem(I(),t)}catch(e){}}}function A(){switch(u.defaultInstanceState){case i.Closed:N(!0);break;case i.Open:N(!1)}}function T(e){e.preventDefault(),L(e.currentTarget),O()}function N(o){var e=document.getElementsByClassName("subs instances");[].forEach.call(e,function(e){var t=o?"collapser":"expander",n=e.getElementsByClassName("instances "+t)[0];n&&L(n)})}function P(){N(!0),O()}function j(){N(!1),O()}n.init=function(e){!function(){for(var e=0,t=Array.prototype.slice.call(document.getElementsByTagName("details"));e<t.length;e++){var n=t[e];"string"==typeof n.id&&0<n.id.length&&(k[n.id]={element:n,toggles:[]},n.addEventListener("toggle",w))}}(),Array.prototype.slice.call(document.getElementsByClassName("details-toggle")).forEach(function(e){var t=S(C(e));t.toggles.push(e),e.addEventListener("click",T),e.classList.contains("details-toggle-control")&&e.classList.add(t.element.open?"collapser":"expander")}),function(){if(g(),A(),u.rememberToggles){var e=localStorage.getItem(I());if(e)try{JSON.parse(e).forEach(function(e){S(e).element.open=!x()})}catch(e){if(!(e instanceof SyntaxError||e instanceof TypeError))throw e;localStorage.removeItem(I())}}}(),a.render(l(p,{showHideTrigger:e||h}),document.body)}},{preact:7}],3:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o,r=e("./style-menu"),i=e("./details-helper"),s=e("./quick-jump");o=function(){document.body.classList.add("js-enabled"),r.init(),i.init();var e=document.getElementById("head"),t=".";null!==e&&(t=e.getAttribute("data-base-url")||"."),s.init(t)},"interactive"===document.readyState?o():document.addEventListener("readystatechange",function(){"interactive"===document.readyState&&o()})},{"./details-helper":2,"./quick-jump":4,"./style-menu":5}],4:[function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(n,"__esModule",{value:!0});var i=e("fuse.js"),s=e("preact"),a=s.h,l=s.Component;var c=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(t){return a("li",null,a("a",{href:"#",onClick:function(e){e.preventDefault(),t.onClick()}},t.title))},t}(l);function u(e){var t=document.querySelector("#page-menu"),n=document.createElement("li");t.insertBefore(n,t.firstChild),s.render(a(c,{onClick:e,title:"Quick Jump"}),t,n)}function d(e,t){return t.length<=e?t:t.slice(0,e)}var h=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.linkIndex=0,e.focusPlease=!1,e.navigatedByKeyboard=!1,e}return r(e,t),e.prototype.componentWillMount=function(){var e,t,n,o,r=this;this.setState({searchString:"",isVisible:!1,expanded:{},activeLinkIndex:-1,moduleResults:[]}),e=this.props.baseUrl+"/doc-index.json",t=function(e){r.setState({fuse:new i(e,{threshold:.25,caseSensitive:!0,includeScore:!0,tokenize:!0,keys:[{name:"name",weight:.7},{name:"module",weight:.3}]}),moduleResults:[]})},n=function(e){console&&console.error("could not load 'doc-index.json' for searching",e),r.setState({failedLoading:!0})},(o=new XMLHttpRequest).onreadystatechange=function(){if(o.readyState===XMLHttpRequest.DONE)if(200===o.status){if(t)try{t(JSON.parse(o.responseText))}catch(e){n(o)}}else n&&n(o)},o.open("GET",e,!0),o.send(),document.addEventListener("mousedown",this.hide.bind(this)),document.addEventListener("keydown",function(e){r.state.isVisible&&("Escape"===e.key?r.hide():"ArrowUp"===e.key||"k"===e.key&&e.ctrlKey?(e.preventDefault(),r.navigateLinks(-1)):"ArrowDown"===e.key||"j"===e.key&&e.ctrlKey?(e.preventDefault(),r.navigateLinks(1)):"Enter"===e.key&&0<=r.state.activeLinkIndex&&r.followActiveLink()),"s"===e.key&&"input"!==e.target.tagName.toLowerCase()&&(e.preventDefault(),r.show())})},e.prototype.hide=function(){this.setState({isVisible:!1,searchString:""})},e.prototype.show=function(){this.state.isVisible||(this.focusPlease=!0,this.setState({isVisible:!0,activeLinkIndex:-1}))},e.prototype.toggleVisibility=function(){this.state.isVisible?this.hide():this.show()},e.prototype.navigateLinks=function(e){var t=Math.max(-1,Math.min(this.linkIndex-1,this.state.activeLinkIndex+e));this.navigatedByKeyboard=!0,this.setState({activeLinkIndex:t})},e.prototype.followActiveLink=function(){this.activeLinkAction&&this.activeLinkAction()},e.prototype.updateResults=function(){var e=this.input&&this.input.value||"",t=this.state.fuse.search(e),o={};t.forEach(function(e){var t=e.item.module;(o[t]||(o[t]=[])).push(e)});var r=[],n=function(e){var t=o[e],n=0;t.forEach(function(e){n+=1/e.score}),r.push({module:e,totalScore:1/n,items:t})};for(var i in o)n(i);r.sort(function(e,t){return e.totalScore-t.totalScore}),this.setState({searchString:e,isVisible:!0,moduleResults:r})},e.prototype.componentDidUpdate=function(){if(this.searchResults&&this.activeLink&&this.navigatedByKeyboard){var e=this.activeLink.getClientRects()[0],t=this.searchResults.getClientRects()[0].top;e.bottom>window.innerHeight?this.searchResults.scrollTop+=e.bottom-window.innerHeight+80:e.top<t&&(this.searchResults.scrollTop-=t-e.top+80)}this.focusPlease&&this.input&&this.input.focus(),this.navigatedByKeyboard=!1,this.focusPlease=!1},e.prototype.componentDidMount=function(){this.props.showHideTrigger(this.toggleVisibility.bind(this))},e.prototype.render=function(e,t){var r=this;if(t.failedLoading){var n="file:"==window.location.protocol;return a("div",{id:"search",class:t.isVisible?"":"hidden"},a("div",{id:"search-results"},a("p",{class:"error"},"Failed to load file 'doc-index.json' containing definitions in this package."),n?a("p",{class:"error"},"To use quick jump, load this page with HTTP (from a local static file web server) instead of using the ",a("code",null,"file://")," protocol. (For security reasons, it is not possible to fetch auxiliary files using JS in a HTML page opened with ",a("code",null,"file://"),".)"):[]))}this.linkIndex=0;var o=function(e){e.stopPropagation()},i=d(10,t.moduleResults).map(function(e){return r.renderResultsInModule(e)});return a("div",{id:"search",class:t.isVisible?"":"hidden"},a("div",{id:"search-form",onMouseDown:o},a("input",{placeholder:"Search in package by name",ref:function(e){r.input=e},onFocus:this.show.bind(this),onClick:this.show.bind(this),onInput:this.updateResults.bind(this)})),a("div",{id:"search-results",ref:function(e){r.searchResults=e},onMouseDown:o,onMouseOver:function(e){for(var t=e.target;t&&"function"==typeof t.getAttribute;){var n=t.getAttribute("data-link-index");if("string"==typeof n){var o=parseInt(n,10);r.setState({activeLinkIndex:o});break}t=t.parentNode}}},""===t.searchString?[a(v,null),a(f,null)]:0==i.length?a(g,{searchString:t.searchString}):a("ul",null,i)))},e.prototype.renderResultsInModule=function(e){var n=this,t=e.items,o=e.module,r=this.state.expanded[o]||t.length<=10,i=r?t:d(8,t);return a("li",{class:"search-module"},a("h4",null,o),a("ul",null,i.map(function(e){return t=e.item,a("li",{class:"search-result"},n.navigationLink(n.props.baseUrl+"/"+t.link,{},a(p,{html:t.display_html})));var t}),r?[]:a("li",{class:"more-results"},this.actionLink(function(){var e=Object.assign({},n.state.expanded);e[o]=!0,n.setState({expanded:e})},{},"show "+(t.length-i.length)+" more results from this module"))))},e.prototype.navigationLink=function(e,t){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=Object.assign({href:e,onClick:this.hide.bind(this)},t);return this.menuLink.apply(this,[i,function(){window.location.href=e,n.hide()}].concat(o))},e.prototype.actionLink=function(t,e){for(var n=[],o=2;o<arguments.length;o++)n[o-2]=arguments[o];var r=Object.assign({href:"#",onClick:function(e){e.preventDefault(),t()}},e);return this.menuLink.apply(this,[r,t].concat(n))},e.prototype.menuLink=function(e,t){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=this.linkIndex;i===this.state.activeLinkIndex&&(e.class=(e.class?e.class+" ":"")+"active-link",e.ref=function(e){e&&(n.activeLink=e)},this.activeLinkAction=t);var s=Object.assign({"data-link-index":i},e);return this.linkIndex+=1,a.apply(void 0,["a",s].concat(o))},e}(l),p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shouldComponentUpdate=function(e){return this.props.html!==e.html},t.prototype.render=function(e){return a("div",{dangerouslySetInnerHTML:{__html:e.html}})},t}(l);function f(){return a("table",{class:"keyboard-shortcuts"},a("tr",null,a("th",null,"Key"),a("th",null,"Shortcut")),a("tr",null,a("td",null,a("span",{class:"key"},"s")),a("td",null,"Open this search box")),a("tr",null,a("td",null,a("span",{class:"key"},"esc")),a("td",null,"Close this search box")),a("tr",null,a("td",null,a("span",{class:"key"},"↓"),",",a("span",{class:"key"},"ctrl")," + ",a("span",{class:"key"},"j")),a("td",null,"Move down in search results")),a("tr",null,a("td",null,a("span",{class:"key"},"↑"),",",a("span",{class:"key"},"ctrl")," + ",a("span",{class:"key"},"k")),a("td",null,"Move up in search results")),a("tr",null,a("td",null,a("span",{class:"key"},"↵")),a("td",null,"Go to active search result")))}function v(){return a("p",null,"You can find any exported type, constructor, class, function or pattern defined in this package by (approximate) name.")}function g(e){var t=[a("p",null,"Your search for '",e.searchString,"' produced the following list of results: ",a("code",null,"[]"),"."),a("p",null,a("code",null,"Nothing")," matches your query for '",e.searchString,"'."),a("p",null,a("code",null,"Left \"no matches for '",e.searchString,"'\" :: Either String (NonEmpty SearchResult)"))];return t[(e.searchString||"a").charCodeAt(0)%t.length]}function m(e,t){s.render(a(h,{baseUrl:e||".",showHideTrigger:t||u}),document.body)}n.init=m,window.quickNav={init:m}},{"fuse.js":6,preact:7}],5:[function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(n,"__esModule",{value:!0});var i=e("./cookies"),s=e("preact"),a=s.h,l=s.Component;function c(){return Array.prototype.slice.call(document.getElementsByTagName("link")).filter(function(e){return-1!=e.rel.indexOf("style")&&e.title})}function u(e){for(var t=c(),n=null,o=0;o<t.length;o++){var r=t[o];r.disabled=!0,r.title==e&&(n=r)}n?(n.disabled=!1,i.setCookie("haddock-style",e)):(t[0].disabled=!1,i.clearCookie("haddock-style"))}var d=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(t){return a("li",null,a("a",{href:"#",onClick:function(e){e.preventDefault(),t.onClick()}},t.title))},t}(l);var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.componentWillMount=function(){var t=this;document.addEventListener("mousedown",this.hide.bind(this)),document.addEventListener("keydown",function(e){t.state.isVisible&&"Escape"===e.key&&t.hide()})},t.prototype.hide=function(){this.setState({isVisible:!1})},t.prototype.show=function(){this.state.isVisible||this.setState({isVisible:!0})},t.prototype.toggleVisibility=function(){this.state.isVisible?this.hide():this.show()},t.prototype.componentDidMount=function(){this.props.showHideTrigger(this.toggleVisibility.bind(this))},t.prototype.render=function(e,t){var n=this;return a("div",{id:"style",class:t.isVisible?"":"hidden"},a("div",{id:"style-menu",class:"dropdown-menu",onMouseDown:function(e){e.stopPropagation()}},e.styles.map(function(t){return a("button",{type:"button",onClick:function(e){n.hide(),u(t)}},t)})))},t}(l);n.init=function(e){var t,n=c().map(function(e){return e.title});(t=i.getCookie("haddock-style"))&&u(t),s.render(a(h,{showHideTrigger:e||function(e){return function(e,t){if(1<e.length){var n=document.querySelector("#page-menu"),o=document.createElement("li");n.appendChild(o),s.render(a(d,{onClick:t,title:"Styles"}),n,o)}}(n,e)},styles:n}),document.body)}},{"./cookies":1,preact:7}],6:[function(e,t,n){var o,r;o=this,r=function(){return function(n){var o={};function r(e){if(o[e])return o[e].exports;var t=o[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}return r.m=n,r.c=o,r.i=function(e){return e},r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=8)}([function(e,t,n){"use strict";e.exports=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";var o=function(){function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}}();var u=n(5),d=n(7),_=n(4),r=function(){function y(e,t){var n=t.location,o=void 0===n?0:n,r=t.distance,i=void 0===r?100:r,s=t.threshold,a=void 0===s?.6:s,l=t.maxPatternLength,c=void 0===l?32:l,u=t.isCaseSensitive,d=void 0!==u&&u,h=t.tokenSeparator,p=void 0===h?/ +/g:h,f=t.findAllMatches,v=void 0!==f&&f,g=t.minMatchCharLength,m=void 0===g?1:g;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,y),this.options={location:o,distance:i,threshold:a,maxPatternLength:c,isCaseSensitive:d,tokenSeparator:p,findAllMatches:v,minMatchCharLength:m},this.pattern=this.options.isCaseSensitive?e:e.toLowerCase(),this.pattern.length<=c&&(this.patternAlphabet=_(this.pattern))}return o(y,[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var t=this.options,n=t.maxPatternLength,o=t.tokenSeparator;if(this.pattern.length>n)return u(e,this.pattern,o);var r=this.options,i=r.location,s=r.distance,a=r.threshold,l=r.findAllMatches,c=r.minMatchCharLength;return d(e,this.pattern,this.patternAlphabet,{location:i,distance:s,threshold:a,findAllMatches:l,minMatchCharLength:c})}}]),y}();e.exports=r},function(e,t,n){"use strict";var u=n(0);e.exports=function(e,t){return function e(t,n,o){if(n){var r=n.indexOf("."),i=n,s=null;-1!==r&&(i=n.slice(0,r),s=n.slice(r+1));var a=t[i];if(null!=a)if(s||"string"!=typeof a&&"number"!=typeof a)if(u(a))for(var l=0,c=a.length;l<c;l+=1)e(a[l],s,o);else s&&e(a,s,o);else o.push(a.toString())}else o.push(t);return o}(e,t,[])}},function(e,t,n){"use strict";e.exports=function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=[],o=-1,r=-1,i=0,s=e.length;i<s;i+=1){var a=e[i];a&&-1===o?o=i:a||-1===o||(t<=(r=i-1)-o+1&&n.push([o,r]),o=-1)}return e[i-1]&&t<=i-o&&n.push([o,i-1]),n}},function(e,t,n){"use strict";e.exports=function(e){for(var t={},n=e.length,o=0;o<n;o+=1)t[e.charAt(o)]=0;for(var r=0;r<n;r+=1)t[e.charAt(r)]|=1<<n-r-1;return t}},function(e,t,n){"use strict";var u=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;e.exports=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:/ +/g,o=new RegExp(t.replace(u,"\\$&").replace(n,"|")),r=e.match(o),i=!!r,s=[];if(i)for(var a=0,l=r.length;a<l;a+=1){var c=r[a];s.push([e.indexOf(c),c.length-1])}return{score:i?.5:1,isMatch:i,matchedIndices:s}}},function(e,t,n){"use strict";e.exports=function(e,t){var n=t.errors,o=void 0===n?0:n,r=t.currentLocation,i=void 0===r?0:r,s=t.expectedLocation,a=void 0===s?0:s,l=t.distance,c=void 0===l?100:l,u=o/e.length,d=Math.abs(a-i);return c?u+d/c:d?1:u}},function(e,t,n){"use strict";var V=n(6),D=n(3);e.exports=function(e,t,n,o){for(var r=o.location,i=void 0===r?0:r,s=o.distance,a=void 0===s?100:s,l=o.threshold,c=void 0===l?.6:l,u=o.findAllMatches,d=void 0!==u&&u,h=o.minMatchCharLength,p=void 0===h?1:h,f=i,v=e.length,g=c,m=e.indexOf(t,f),y=t.length,_=[],b=0;b<v;b+=1)_[b]=0;if(-1!==m){var k=V(t,{errors:0,currentLocation:m,expectedLocation:f,distance:a});if(g=Math.min(k,g),-1!==(m=e.lastIndexOf(t,f+y))){var S=V(t,{errors:0,currentLocation:m,expectedLocation:f,distance:a});g=Math.min(S,g)}}m=-1;for(var x=[],w=1,C=y+v,L=1<<y-1,M=0;M<y;M+=1){for(var I=0,E=C;I<E;){V(t,{errors:M,currentLocation:f+E,expectedLocation:f,distance:a})<=g?I=E:C=E,E=Math.floor((C-I)/2+I)}C=E;var O=Math.max(1,f-E+1),A=d?v:Math.min(f+E,v)+y,T=Array(A+2);T[A+1]=(1<<M)-1;for(var N=A;O<=N;N-=1){var P=N-1,j=n[e.charAt(P)];if(j&&(_[P]=1),T[N]=(T[N+1]<<1|1)&j,0!==M&&(T[N]|=(x[N+1]|x[N])<<1|1|x[N+1]),T[N]&L&&(w=V(t,{errors:M,currentLocation:P,expectedLocation:f,distance:a}))<=g){if(g=w,(m=P)<=f)break;O=Math.max(1,2*f-m)}}if(g<V(t,{errors:M+1,currentLocation:f,expectedLocation:f,distance:a}))break;x=T}return{isMatch:0<=m,score:0===w?.001:w,matchedIndices:D(_,p)}}},function(e,t,n){"use strict";var o=function(){function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}}();var i=n(1),R=n(2),V=n(0),r=function(){function U(e,t){var n=t.location,o=void 0===n?0:n,r=t.distance,i=void 0===r?100:r,s=t.threshold,a=void 0===s?.6:s,l=t.maxPatternLength,c=void 0===l?32:l,u=t.caseSensitive,d=void 0!==u&&u,h=t.tokenSeparator,p=void 0===h?/ +/g:h,f=t.findAllMatches,v=void 0!==f&&f,g=t.minMatchCharLength,m=void 0===g?1:g,y=t.id,_=void 0===y?null:y,b=t.keys,k=void 0===b?[]:b,S=t.shouldSort,x=void 0===S||S,w=t.getFn,C=void 0===w?R:w,L=t.sortFn,M=void 0===L?function(e,t){return e.score-t.score}:L,I=t.tokenize,E=void 0!==I&&I,O=t.matchAllTokens,A=void 0!==O&&O,T=t.includeMatches,N=void 0!==T&&T,P=t.includeScore,j=void 0!==P&&P,V=t.verbose,D=void 0!==V&&V;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,U),this.options={location:o,distance:i,threshold:a,maxPatternLength:c,isCaseSensitive:d,tokenSeparator:p,findAllMatches:v,minMatchCharLength:m,id:_,keys:k,includeMatches:N,includeScore:j,shouldSort:x,getFn:C,sortFn:M,verbose:D,tokenize:E,matchAllTokens:A},this.setCollection(e)}return o(U,[{key:"setCollection",value:function(e){return this.list=e}},{key:"search",value:function(e){this._log('---------\nSearch pattern: "'+e+'"');var t=this._prepareSearchers(e),n=t.tokenSearchers,o=t.fullSearcher,r=this._search(n,o),i=r.weights,s=r.results;return this._computeScore(i,s),this.options.shouldSort&&this._sort(s),this._format(s)}},{key:"_prepareSearchers",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var n=e.split(this.options.tokenSeparator),o=0,r=n.length;o<r;o+=1)t.push(new i(n[o],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],n=this.list,o={},r=[];if("string"==typeof n[0]){for(var i=0,s=n.length;i<s;i+=1)this._analyze({key:"",value:n[i],record:i,index:i},{resultMap:o,results:r,tokenSearchers:e,fullSearcher:t});return{weights:null,results:r}}for(var a={},l=0,c=n.length;l<c;l+=1)for(var u=n[l],d=0,h=this.options.keys.length;d<h;d+=1){var p=this.options.keys[d];if("string"!=typeof p){if(a[p.name]={weight:1-p.weight||1},p.weight<=0||1<p.weight)throw new Error("Key weight has to be > 0 and <= 1");p=p.name}else a[p]={weight:1};this._analyze({key:p,value:this.options.getFn(u,p),record:u,index:l},{resultMap:o,results:r,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:r}}},{key:"_analyze",value:function(e,t){var n=e.key,o=e.arrayIndex,r=void 0===o?-1:o,i=e.value,s=e.record,a=e.index,l=t.tokenSearchers,c=void 0===l?[]:l,u=t.fullSearcher,d=void 0===u?[]:u,h=t.resultMap,p=void 0===h?{}:h,f=t.results,v=void 0===f?[]:f;if(null!=i){var g=!1,m=-1,y=0;if("string"==typeof i){this._log("\nKey: "+(""===n?"-":n));var _=d.search(i);if(this._log('Full text: "'+i+'", score: '+_.score),this.options.tokenize){for(var b=i.split(this.options.tokenSeparator),k=[],S=0;S<c.length;S+=1){var x=c[S];this._log('\nPattern: "'+x.pattern+'"');for(var w=!1,C=0;C<b.length;C+=1){var L=b[C],M=x.search(L),I={};M.isMatch?(I[L]=M.score,w=g=!0,k.push(M.score)):(I[L]=1,this.options.matchAllTokens||k.push(1)),this._log('Token: "'+L+'", score: '+I[L])}w&&(y+=1)}m=k[0];for(var E=k.length,O=1;O<E;O+=1)m+=k[O];m/=E,this._log("Token score average:",m)}var A=_.score;-1<m&&(A=(A+m)/2),this._log("Score average:",A);var T=!this.options.tokenize||!this.options.matchAllTokens||y>=c.length;if(this._log("\nCheck Matches: "+T),(g||_.isMatch)&&T){var N=p[a];N?N.output.push({key:n,arrayIndex:r,value:i,score:A,matchedIndices:_.matchedIndices}):(p[a]={item:s,output:[{key:n,arrayIndex:r,value:i,score:A,matchedIndices:_.matchedIndices}]},v.push(p[a]))}}else if(V(i))for(var P=0,j=i.length;P<j;P+=1)this._analyze({key:n,arrayIndex:P,value:i[P],record:s,index:a},{resultMap:p,results:v,tokenSearchers:c,fullSearcher:d})}}},{key:"_computeScore",value:function(e,t){this._log("\n\nComputing score:\n");for(var n=0,o=t.length;n<o;n+=1){for(var r=t[n].output,i=r.length,s=1,a=1,l=0;l<i;l+=1){var c=e?e[r[l].key].weight:1,u=(1===c?r[l].score:r[l].score||.001)*c;1!==c?a=Math.min(a,u):s*=r[l].nScore=u}t[n].score=1===a?s:a,this._log(t[n])}}},{key:"_sort",value:function(e){this._log("\n\nSorting...."),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){var t=[];this.options.verbose&&this._log("\n\nOutput:\n\n",JSON.stringify(e));var n=[];this.options.includeMatches&&n.push(function(e,t){var n=e.output;t.matches=[];for(var o=0,r=n.length;o<r;o+=1){var i=n[o];if(0!==i.matchedIndices.length){var s={indices:i.matchedIndices,value:i.value};i.key&&(s.key=i.key),i.hasOwnProperty("arrayIndex")&&-1<i.arrayIndex&&(s.arrayIndex=i.arrayIndex),t.matches.push(s)}}}),this.options.includeScore&&n.push(function(e,t){t.score=e.score});for(var o=0,r=e.length;o<r;o+=1){var i=e[o];if(this.options.id&&(i.item=this.options.getFn(i.item,this.options.id)[0]),n.length){for(var s={item:i.item},a=0,l=n.length;a<l;a+=1)n[a](i,s);t.push(s)}else t.push(i.item)}return t}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}]),U}();e.exports=r}])},"object"==typeof n&&"object"==typeof t?t.exports=r():"function"==typeof define&&define.amd?define("Fuse",[],r):"object"==typeof n?n.Fuse=r():o.Fuse=r()},{}],7:[function(e,y,t){!function(){"use strict";function n(e,t){var n,o,r,i,s=d;for(i=arguments.length;2<i--;)u.push(arguments[i]);for(t&&null!=t.children&&(u.length||u.push(t.children),delete t.children);u.length;)if((o=u.pop())&&void 0!==o.pop)for(i=o.length;i--;)u.push(o[i]);else"boolean"==typeof o&&(o=null),(r="function"!=typeof e)&&(null==o?o="":"number"==typeof o?o=String(o):"string"!=typeof o&&(r=!1)),r&&n?s[s.length-1]+=o:s===d?s=[o]:s.push(o),n=r;var a=new c;return a.nodeName=e,a.children=s,a.attributes=null==t?void 0:t,a.key=null==t?void 0:t.key,void 0!==D.vnode&&D.vnode(a),a}function L(e,t){for(var n in t)e[n]=t[n];return e}function i(e){!e.__d&&(e.__d=!0)&&1==p.push(e)&&(D.debounceRendering||r)(t)}function t(){var e,t=p;for(p=[];e=t.pop();)e.__d&&j(e)}function C(e,t){return e.__n===t||e.nodeName.toLowerCase()===t.toLowerCase()}function M(e){var t=L({},e.attributes);t.children=e.children;var n=e.nodeName.defaultProps;if(void 0!==n)for(var o in n)void 0===t[o]&&(t[o]=n[o]);return t}function I(e){var t=e.parentNode;t&&t.removeChild(e)}function v(e,t,n,o,r){if("className"===t&&(t="class"),"key"===t);else if("ref"===t)n&&n(null),o&&o(e);else if("class"!==t||r)if("style"===t){if(o&&"string"!=typeof o&&"string"!=typeof n||(e.style.cssText=o||""),o&&"object"==typeof o){if("string"!=typeof n)for(var i in n)i in o||(e.style[i]="");for(var i in o)e.style[i]="number"==typeof o[i]&&!1===h.test(i)?o[i]+"px":o[i]}}else if("dangerouslySetInnerHTML"===t)o&&(e.innerHTML=o.__html||"");else if("o"==t[0]&&"n"==t[1]){var s=t!==(t=t.replace(/Capture$/,""));t=t.toLowerCase().substring(2),o?n||e.addEventListener(t,l,s):e.removeEventListener(t,l,s),(e.__l||(e.__l={}))[t]=o}else if("list"!==t&&"type"!==t&&!r&&t in e){try{e[t]=null==o?"":o}catch(e){}null!=o&&!1!==o||"spellcheck"==t||e.removeAttribute(t)}else{var a=r&&t!==(t=t.replace(/^xlink:?/,""));null==o||!1===o?a?e.removeAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase()):e.removeAttribute(t):"function"!=typeof o&&(a?e.setAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase(),o):e.setAttribute(t,o))}else e.className=o||""}function l(e){return this.__l[e.type](D.event&&D.event(e)||e)}function E(){for(var e;e=U.pop();)D.afterMount&&D.afterMount(e),e.componentDidMount&&e.componentDidMount()}function O(e,t,n,o,r,i){R++||(g=null!=r&&void 0!==r.ownerSVGElement,m=null!=e&&!("__preactattr_"in e));var s=A(e,t,n,o,i);return r&&s.parentNode!==r&&r.appendChild(s),--R||(m=!1,i||E()),s}function A(e,t,n,o,r){var i=e,s=g;if(null!=t&&"boolean"!=typeof t||(t=""),"string"==typeof t||"number"==typeof t)return e&&void 0!==e.splitText&&e.parentNode&&(!e._component||r)?e.nodeValue!=t&&(e.nodeValue=t):(i=document.createTextNode(t),e&&(e.parentNode&&e.parentNode.replaceChild(i,e),T(e,!0))),i.__preactattr_=!0,i;var a,l,c=t.nodeName;if("function"==typeof c)return function(e,t,n,o){var r=e&&e._component,i=r,s=e,a=r&&e._componentConstructor===t.nodeName,l=a,c=M(t);for(;r&&!l&&(r=r.__u);)l=r.constructor===t.nodeName;r&&l&&(!o||r._component)?(P(r,c,3,n,o),e=r.base):(i&&!a&&(V(i),e=s=null),r=N(t.nodeName,c,n),e&&!r.__b&&(r.__b=e,s=null),P(r,c,1,n,o),e=r.base,s&&e!==s&&(s._component=null,T(s,!1)));return e}(e,t,n,o);if(g="svg"===c||"foreignObject"!==c&&g,c=String(c),(!e||!C(e,c))&&(a=c,(l=g?document.createElementNS("http://www.w3.org/2000/svg",a):document.createElement(a)).__n=a,i=l,e)){for(;e.firstChild;)i.appendChild(e.firstChild);e.parentNode&&e.parentNode.replaceChild(i,e),T(e,!0)}var u=i.firstChild,d=i.__preactattr_,h=t.children;if(null==d){d=i.__preactattr_={};for(var p=i.attributes,f=p.length;f--;)d[p[f].name]=p[f].value}return!m&&h&&1===h.length&&"string"==typeof h[0]&&null!=u&&void 0!==u.splitText&&null==u.nextSibling?u.nodeValue!=h[0]&&(u.nodeValue=h[0]):(h&&h.length||null!=u)&&function(e,t,n,o,r){var i,s,a,l,c,u=e.childNodes,d=[],h={},p=0,f=0,v=u.length,g=0,m=t?t.length:0;if(0!==v)for(var y=0;y<v;y++){var _=u[y],b=_.__preactattr_,k=m&&b?_._component?_._component.__k:b.key:null;null!=k?(p++,h[k]=_):(b||(void 0!==_.splitText?!r||_.nodeValue.trim():r))&&(d[g++]=_)}if(0!==m)for(var y=0;y<m;y++){l=t[y],c=null;var k=l.key;if(null!=k)p&&void 0!==h[k]&&(c=h[k],h[k]=void 0,p--);else if(f<g)for(i=f;i<g;i++)if(void 0!==d[i]&&(S=s=d[i],w=r,"string"==typeof(x=l)||"number"==typeof x?void 0!==S.splitText:"string"==typeof x.nodeName?!S._componentConstructor&&C(S,x.nodeName):w||S._componentConstructor===x.nodeName)){c=s,d[i]=void 0,i===g-1&&g--,i===f&&f++;break}c=A(c,l,n,o),a=u[y],c&&c!==e&&c!==a&&(null==a?e.appendChild(c):c===a.nextSibling?I(a):e.insertBefore(c,a))}var S,x,w;if(p)for(var y in h)void 0!==h[y]&&T(h[y],!1);for(;f<=g;)void 0!==(c=d[g--])&&T(c,!1)}(i,h,n,o,m||null!=d.dangerouslySetInnerHTML),function(e,t,n){var o;for(o in n)t&&null!=t[o]||null==n[o]||v(e,o,n[o],n[o]=void 0,g);for(o in t)"children"===o||"innerHTML"===o||o in n&&t[o]===("value"===o||"checked"===o?e[o]:n[o])||v(e,o,n[o],n[o]=t[o],g)}(i,t.attributes,d),g=s,i}function T(e,t){var n=e._component;n?V(n):(null!=e.__preactattr_&&e.__preactattr_.ref&&e.__preactattr_.ref(null),!1!==t&&null!=e.__preactattr_||I(e),o(e))}function o(e){for(e=e.lastChild;e;){var t=e.previousSibling;T(e,!0),e=t}}function N(e,t,n){var o,r=f.length;for(e.prototype&&e.prototype.render?(o=new e(t,n),a.call(o,t,n)):((o=new a(t,n)).constructor=e,o.render=s);r--;)if(f[r].constructor===e)return o.__b=f[r].__b,f.splice(r,1),o;return o}function s(e,t,n){return this.constructor(e,n)}function P(e,t,n,o,r){e.__x||(e.__x=!0,e.__r=t.ref,e.__k=t.key,delete t.ref,delete t.key,void 0===e.constructor.getDerivedStateFromProps&&(!e.base||r?e.componentWillMount&&e.componentWillMount():e.componentWillReceiveProps&&e.componentWillReceiveProps(t,o)),o&&o!==e.context&&(e.__c||(e.__c=e.context),e.context=o),e.__p||(e.__p=e.props),e.props=t,e.__x=!1,0!==n&&(1!==n&&!1===D.syncComponentUpdates&&e.base?i(e):j(e,1,r)),e.__r&&e.__r(e))}function j(e,t,n,o){if(!e.__x){var r,i,s,a=e.props,l=e.state,c=e.context,u=e.__p||a,d=e.__s||l,h=e.__c||c,p=e.base,f=e.__b,v=p||f,g=e._component,m=!1,y=h;if(e.constructor.getDerivedStateFromProps&&(l=L(L({},l),e.constructor.getDerivedStateFromProps(a,l)),e.state=l),p&&(e.props=u,e.state=d,e.context=h,2!==t&&e.shouldComponentUpdate&&!1===e.shouldComponentUpdate(a,l,c)?m=!0:e.componentWillUpdate&&e.componentWillUpdate(a,l,c),e.props=a,e.state=l,e.context=c),e.__p=e.__s=e.__c=e.__b=null,e.__d=!1,!m){r=e.render(a,l,c),e.getChildContext&&(c=L(L({},c),e.getChildContext())),p&&e.getSnapshotBeforeUpdate&&(y=e.getSnapshotBeforeUpdate(u,d));var _,b,k=r&&r.nodeName;if("function"==typeof k){var S=M(r);(i=g)&&i.constructor===k&&S.key==i.__k?P(i,S,1,c,!1):(_=i,e._component=i=N(k,S,c),i.__b=i.__b||f,i.__u=e,P(i,S,0,c,!1),j(i,1,n,!0)),b=i.base}else s=v,(_=g)&&(s=e._component=null),(v||1===t)&&(s&&(s._component=null),b=O(s,r,c,n||!p,v&&v.parentNode,!0));if(v&&b!==v&&i!==g){var x=v.parentNode;x&&b!==x&&(x.replaceChild(b,v),_||(v._component=null,T(v,!1)))}if(_&&V(_),(e.base=b)&&!o){for(var w=e,C=e;C=C.__u;)(w=C).base=b;b._component=w,b._componentConstructor=w.constructor}}for(!p||n?U.unshift(e):m||(e.componentDidUpdate&&e.componentDidUpdate(u,d,y),D.afterUpdate&&D.afterUpdate(e));e.__h.length;)e.__h.pop().call(e);R||o||E()}}function V(e){D.beforeUnmount&&D.beforeUnmount(e);var t=e.base;e.__x=!0,e.componentWillUnmount&&e.componentWillUnmount(),e.base=null;var n=e._component;n?V(n):t&&(t.__preactattr_&&t.__preactattr_.ref&&t.__preactattr_.ref(null),I(e.__b=t),f.push(e),o(t)),e.__r&&e.__r(null)}function a(e,t){this.__d=!0,this.context=t,this.props=e,this.state=this.state||{},this.__h=[]}var c=function(){},D={},u=[],d=[],r="function"==typeof Promise?Promise.resolve().then.bind(Promise.resolve()):setTimeout,h=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,p=[],U=[],R=0,g=!1,m=!1,f=[];L(a.prototype,{setState:function(e,t){this.__s||(this.__s=this.state),this.state=L(L({},this.state),"function"==typeof e?e(this.state,this.props):e),t&&this.__h.push(t),i(this)},forceUpdate:function(e){e&&this.__h.push(e),j(this,2)},render:function(){}});var e={h:n,createElement:n,cloneElement:function(e,t){return n(e.nodeName,L(L({},e.attributes),t),2<arguments.length?[].slice.call(arguments,2):e.children)},Component:a,render:function(e,t,n){return O(n,e,{},!1,t,!1)},rerender:t,options:D};void 0!==y?y.exports=e:self.preact=e}()},{}]},{},[3]); +!function i(s,a,l){function c(t,e){if(!a[t]){if(!s[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(u)return u(t,!0);var o=new Error("Cannot find module '"+t+"'");throw o.code="MODULE_NOT_FOUND",o}var r=a[t]={exports:{}};s[t][0].call(r.exports,function(e){return c(s[t][1][e]||e)},r,r.exports,i,s,a,l)}return a[t].exports}for(var u="function"==typeof require&&require,e=0;e<l.length;e++)c(l[e]);return c}({1:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.setCookie=function(e,t){document.cookie=e+"="+encodeURIComponent(t)+";path=/;"},n.clearCookie=function(e){document.cookie=e+"=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;"},n.getCookie=function(e){for(var t=e+"=",n=document.cookie.split(";"),o=0;o<n.length;o++){for(var r=n[o];" "==r.charAt(0);)r=r.substring(1,r.length);if(0==r.indexOf(t))return decodeURIComponent(r.substring(t.length,r.length))}return null}},{}],2:[function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(n,"__esModule",{value:!0});var i,s,a=e("preact"),l=a.h,c=a.Component;(s=i||(i={}))[s.Closed=0]="Closed",s[s.Open=1]="Open";var u={defaultInstanceState:i.Open,rememberToggles:!0},d=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(t){return l("li",null,l("a",{href:"#",onClick:function(e){e.preventDefault(),t.onClick()}},t.title))},t}(c);function h(e){var t=document.querySelector("#page-menu"),n=document.createElement("li");t.insertBefore(n,t.firstChild),a.render(l(d,{onClick:e,title:"Instances"}),t,n)}var p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.componentWillMount=function(){var t=this;document.addEventListener("mousedown",this.hide.bind(this)),document.addEventListener("keydown",function(e){t.state.isVisible&&"Escape"===e.key&&t.hide()})},t.prototype.hide=function(){this.setState({isVisible:!1})},t.prototype.show=function(){this.state.isVisible||this.setState({isVisible:!0})},t.prototype.toggleVisibility=function(){this.state.isVisible?this.hide():this.show()},t.prototype.componentDidMount=function(){this.props.showHideTrigger(this.toggleVisibility.bind(this))},t.prototype.render=function(e,t){return l("div",{id:"preferences",class:t.isVisible?"":"hidden"},l("div",{id:"preferences-menu",class:"dropdown-menu",onMouseDown:function(e){e.stopPropagation()}},l(b,null)))},t}(c);function f(){var e=JSON.stringify(u);try{localStorage.setItem("global",e)}catch(e){}}var v=!1;function g(){if(!v){v=!0;var e=localStorage.getItem("global");if(e)try{var t=JSON.parse(e);u.defaultInstanceState=t.defaultInstanceState,u.rememberToggles=t.rememberToggles}catch(e){if(!(e instanceof SyntaxError||e instanceof TypeError))throw e;localStorage.removeItem("global")}}}function m(t){return function(e){u.defaultInstanceState=t,A(),f(),E(),O()}}function y(e){var t=e.target.checked;u.rememberToggles=t,f(),E(),O()}function _(e){var t=document.getElementById("default-collapse-instances");null!==t&&(t.checked?m(i.Closed)(e):m(i.Open)(e))}function b(){return g(),l("div",null,l("div",null,l("button",{type:"button",onClick:j},"Expand All Instances"),l("button",{type:"button",onClick:P},"Collapse All Instances")),l("div",null,l("input",{type:"checkbox",id:"default-collapse-instances",name:"default-instance-state",checked:u.defaultInstanceState===i.Closed,onClick:_}),l("span",null,"Collapse All Instances By Default")),l("div",null,l("input",{type:"checkbox",id:"remember-toggles",name:"remember-toggles",checked:u.rememberToggles,onClick:y}),l("label",{for:"remember-toggles"},"Remember Manually Collapsed/Expanded Instances")))}var k={};function S(e){var t=k[e];if(null==t)throw new Error("could not find <details> element with id '"+e+"'");return t}function x(){return u.defaultInstanceState==i.Open}function w(e){for(var t=S(e.target.id),n=t.element.open,o=0,r=t.toggles;o<r.length;o++){var i=r[o];i.classList.contains("details-toggle-control")&&(i.classList.add(n?"collapser":"expander"),i.classList.remove(n?"expander":"collapser"))}}function C(e){var t=e.getAttribute("data-details-id");if(!t)throw new Error("element with class "+e+" has no 'data-details-id' attribute!");return t}function L(e){var t=S(C(e)).element;t.open=!t.open}var M="local-details-config:";function I(){return M+document.location.pathname}function E(){for(var e=[],t=0;t<localStorage.length;++t){var n=localStorage.key(t);null!==n&&n.startsWith(M)&&e.push(n)}e.forEach(function(e){localStorage.removeItem(e)})}function O(){if(u.rememberToggles){var e=Array.prototype.slice.call(document.getElementsByClassName("instances details-toggle details-toggle-control")),n=[];e.forEach(function(e){var t=C(e);document.getElementById(t).open!=x()&&n.push(t)});var t=JSON.stringify(n);try{localStorage.setItem(I(),t)}catch(e){}}}function A(){switch(u.defaultInstanceState){case i.Closed:N(!0);break;case i.Open:N(!1)}}function T(e){L(e.currentTarget),O()}function N(o){var e=document.getElementsByClassName("subs instances");[].forEach.call(e,function(e){var t=o?"collapser":"expander",n=e.getElementsByClassName("instances "+t)[0];n&&L(n)})}function P(){N(!0),O()}function j(){N(!1),O()}n.init=function(e){!function(){for(var e=0,t=Array.prototype.slice.call(document.getElementsByTagName("details"));e<t.length;e++){var n=t[e];"string"==typeof n.id&&0<n.id.length&&(k[n.id]={element:n,toggles:[]},n.addEventListener("toggle",w))}}(),Array.prototype.slice.call(document.getElementsByClassName("details-toggle")).forEach(function(e){var t=S(C(e));t.toggles.push(e),e.addEventListener("click",T),e.classList.contains("details-toggle-control")&&e.classList.add(t.element.open?"collapser":"expander")}),function(){if(g(),A(),u.rememberToggles){var e=localStorage.getItem(I());if(e)try{JSON.parse(e).forEach(function(e){S(e).element.open=!x()})}catch(e){if(!(e instanceof SyntaxError||e instanceof TypeError))throw e;localStorage.removeItem(I())}}}(),a.render(l(p,{showHideTrigger:e||h}),document.body)}},{preact:7}],3:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o,r=e("./style-menu"),i=e("./details-helper"),s=e("./quick-jump");o=function(){document.body.classList.add("js-enabled"),r.init(),i.init();var e=document.getElementById("head"),t=".";null!==e&&(t=e.getAttribute("data-base-url")||"."),s.init(t)},"interactive"===document.readyState?o():document.addEventListener("readystatechange",function(){"interactive"===document.readyState&&o()})},{"./details-helper":2,"./quick-jump":4,"./style-menu":5}],4:[function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(n,"__esModule",{value:!0});var i=e("fuse.js"),s=e("preact"),a=s.h,l=s.Component;var c=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(t){return a("li",null,a("a",{href:"#",onClick:function(e){e.preventDefault(),t.onClick()}},t.title))},t}(l);function u(e,t){return t.length<=e?t:t.slice(0,e)}var d=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.linkIndex=0,e.focusPlease=!1,e.navigatedByKeyboard=!1,e}return r(e,t),e.prototype.componentWillMount=function(){var e,t,n,o,r=this;this.setState({searchString:"",isVisible:!1,expanded:{},activeLinkIndex:-1,moduleResults:[]}),e=this.props.baseUrl+"/doc-index.json",t=function(e){r.setState({fuse:new i(e,{threshold:.25,caseSensitive:!0,includeScore:!0,tokenize:!0,keys:[{name:"name",weight:.7},{name:"module",weight:.3}]}),moduleResults:[]})},n=function(e){console&&console.error("could not load 'doc-index.json' for searching",e),r.setState({failedLoading:!0})},(o=new XMLHttpRequest).onreadystatechange=function(){if(o.readyState===XMLHttpRequest.DONE)if(200===o.status){if(t)try{t(JSON.parse(o.responseText))}catch(e){n(o)}}else n&&n(o)},o.open("GET",e,!0),o.send(),document.addEventListener("mousedown",this.hide.bind(this)),document.addEventListener("keydown",function(e){r.state.isVisible&&("Escape"===e.key?r.hide():"ArrowUp"===e.key||"k"===e.key&&e.ctrlKey?(e.preventDefault(),r.navigateLinks(-1)):"ArrowDown"===e.key||"j"===e.key&&e.ctrlKey?(e.preventDefault(),r.navigateLinks(1)):"Enter"===e.key&&0<=r.state.activeLinkIndex&&r.followActiveLink()),"s"===e.key&&"input"!==e.target.tagName.toLowerCase()&&(e.preventDefault(),r.show())})},e.prototype.hide=function(){this.setState({isVisible:!1,searchString:""})},e.prototype.show=function(){this.state.isVisible||(this.focusPlease=!0,this.setState({isVisible:!0,activeLinkIndex:-1}))},e.prototype.toggleVisibility=function(){this.state.isVisible?this.hide():this.show()},e.prototype.navigateLinks=function(e){var t=Math.max(-1,Math.min(this.linkIndex-1,this.state.activeLinkIndex+e));this.navigatedByKeyboard=!0,this.setState({activeLinkIndex:t})},e.prototype.followActiveLink=function(){this.activeLinkAction&&this.activeLinkAction()},e.prototype.updateResults=function(){var e=this.input&&this.input.value||"",t=this.state.fuse.search(e),o={};t.forEach(function(e){var t=e.item.module;(o[t]||(o[t]=[])).push(e)});var r=[],n=function(e){var t=o[e],n=0;t.forEach(function(e){n+=1/e.score}),r.push({module:e,totalScore:1/n,items:t})};for(var i in o)n(i);r.sort(function(e,t){return e.totalScore-t.totalScore}),this.setState({searchString:e,isVisible:!0,moduleResults:r})},e.prototype.componentDidUpdate=function(){if(this.searchResults&&this.activeLink&&this.navigatedByKeyboard){var e=this.activeLink.getClientRects()[0],t=this.searchResults.getClientRects()[0].top;e.bottom>window.innerHeight?this.searchResults.scrollTop+=e.bottom-window.innerHeight+80:e.top<t&&(this.searchResults.scrollTop-=t-e.top+80)}this.focusPlease&&this.input&&this.input.focus(),this.navigatedByKeyboard=!1,this.focusPlease=!1},e.prototype.componentDidMount=function(){this.props.showHideTrigger(this.toggleVisibility.bind(this))},e.prototype.render=function(e,t){var r=this;if(t.failedLoading){var n="file:"==window.location.protocol;return a("div",{id:"search",class:t.isVisible?"":"hidden"},a("div",{id:"search-results"},a("p",{class:"error"},"Failed to load file 'doc-index.json' containing definitions in this package."),n?a("p",{class:"error"},"To use quick jump, load this page with HTTP (from a local static file web server) instead of using the ",a("code",null,"file://")," protocol. (For security reasons, it is not possible to fetch auxiliary files using JS in a HTML page opened with ",a("code",null,"file://"),".)"):[]))}this.linkIndex=0;var o=function(e){e.stopPropagation()},i=u(10,t.moduleResults).map(function(e){return r.renderResultsInModule(e)});return a("div",{id:"search",class:t.isVisible?"":"hidden"},a("div",{id:"search-form",onMouseDown:o},a("input",{placeholder:"Search in package by name",ref:function(e){r.input=e},onFocus:this.show.bind(this),onClick:this.show.bind(this),onInput:this.updateResults.bind(this)})),a("div",{id:"search-results",ref:function(e){r.searchResults=e},onMouseDown:o,onMouseOver:function(e){for(var t=e.target;t&&"function"==typeof t.getAttribute;){var n=t.getAttribute("data-link-index");if("string"==typeof n){var o=parseInt(n,10);r.setState({activeLinkIndex:o});break}t=t.parentNode}}},""===t.searchString?[a(f,null),a(p,null)]:0==i.length?a(v,{searchString:t.searchString}):a("ul",null,i)))},e.prototype.renderResultsInModule=function(e){var n=this,t=e.items,o=e.module,r=this.state.expanded[o]||t.length<=10,i=r?t:u(8,t);return a("li",{class:"search-module"},a("h4",null,o),a("ul",null,i.map(function(e){return t=e.item,a("li",{class:"search-result"},n.navigationLink(n.props.baseUrl+"/"+t.link,{},a(h,{html:t.display_html})));var t}),r?[]:a("li",{class:"more-results"},this.actionLink(function(){var e=Object.assign({},n.state.expanded);e[o]=!0,n.setState({expanded:e})},{},"show "+(t.length-i.length)+" more results from this module"))))},e.prototype.navigationLink=function(e,t){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=Object.assign({href:e,onClick:this.hide.bind(this)},t);return this.menuLink.apply(this,[i,function(){window.location.href=e,n.hide()}].concat(o))},e.prototype.actionLink=function(t,e){for(var n=[],o=2;o<arguments.length;o++)n[o-2]=arguments[o];var r=Object.assign({href:"#",onClick:function(e){e.preventDefault(),t()}},e);return this.menuLink.apply(this,[r,t].concat(n))},e.prototype.menuLink=function(e,t){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=this.linkIndex;i===this.state.activeLinkIndex&&(e.class=(e.class?e.class+" ":"")+"active-link",e.ref=function(e){e&&(n.activeLink=e)},this.activeLinkAction=t);var s=Object.assign({"data-link-index":i},e);return this.linkIndex+=1,a.apply(void 0,["a",s].concat(o))},e}(l),h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shouldComponentUpdate=function(e){return this.props.html!==e.html},t.prototype.render=function(e){return a("div",{dangerouslySetInnerHTML:{__html:e.html}})},t}(l);function p(){return a("table",{class:"keyboard-shortcuts"},a("tr",null,a("th",null,"Key"),a("th",null,"Shortcut")),a("tr",null,a("td",null,a("span",{class:"key"},"s")),a("td",null,"Open this search box")),a("tr",null,a("td",null,a("span",{class:"key"},"esc")),a("td",null,"Close this search box")),a("tr",null,a("td",null,a("span",{class:"key"},"↓"),",",a("span",{class:"key"},"ctrl")," + ",a("span",{class:"key"},"j")),a("td",null,"Move down in search results")),a("tr",null,a("td",null,a("span",{class:"key"},"↑"),",",a("span",{class:"key"},"ctrl")," + ",a("span",{class:"key"},"k")),a("td",null,"Move up in search results")),a("tr",null,a("td",null,a("span",{class:"key"},"↵")),a("td",null,"Go to active search result")))}function f(){return a("p",null,"You can find any exported type, constructor, class, function or pattern defined in this package by (approximate) name.")}function v(e){var t=[a("p",null,"Your search for '",e.searchString,"' produced the following list of results: ",a("code",null,"[]"),"."),a("p",null,a("code",null,"Nothing")," matches your query for '",e.searchString,"'."),a("p",null,a("code",null,"Left \"no matches for '",e.searchString,"'\" :: Either String (NonEmpty SearchResult)"))];return t[(e.searchString||"a").charCodeAt(0)%t.length]}function g(e,t){var n,o=document.getElementById("quick-jump-button");o&&s.render(a(d,{baseUrl:e||".",showHideTrigger:t||(n=o,function(e){var t=document.querySelector("#page-menu");s.render(a(c,{onClick:e,title:"Quick Jump"}),t,n)})}),document.body)}n.init=g,window.quickNav={init:g}},{"fuse.js":6,preact:7}],5:[function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(n,"__esModule",{value:!0});var i=e("./cookies"),s=e("preact"),a=s.h,l=s.Component;function c(){return Array.prototype.slice.call(document.getElementsByTagName("link")).filter(function(e){return-1!=e.rel.indexOf("style")&&e.title})}function u(e){for(var t=c(),n=null,o=0;o<t.length;o++){var r=t[o];r.disabled=!0,r.title==e&&(n=r)}n?(n.disabled=!1,i.setCookie("haddock-style",e)):(t[0].disabled=!1,i.clearCookie("haddock-style"))}var d=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(t){return a("li",null,a("a",{href:"#",onClick:function(e){e.preventDefault(),t.onClick()}},t.title))},t}(l);var h=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.componentWillMount=function(){var t=this;document.addEventListener("mousedown",this.hide.bind(this)),document.addEventListener("keydown",function(e){t.state.isVisible&&"Escape"===e.key&&t.hide()})},t.prototype.hide=function(){this.setState({isVisible:!1})},t.prototype.show=function(){this.state.isVisible||this.setState({isVisible:!0})},t.prototype.toggleVisibility=function(){this.state.isVisible?this.hide():this.show()},t.prototype.componentDidMount=function(){this.props.showHideTrigger(this.toggleVisibility.bind(this))},t.prototype.render=function(e,t){var n=this;return a("div",{id:"style",class:t.isVisible?"":"hidden"},a("div",{id:"style-menu",class:"dropdown-menu",onMouseDown:function(e){e.stopPropagation()}},e.styles.map(function(t){return a("button",{type:"button",onClick:function(e){n.hide(),u(t)}},t)})))},t}(l);n.init=function(e){var t,n=c().map(function(e){return e.title});(t=i.getCookie("haddock-style"))&&u(t),s.render(a(h,{showHideTrigger:e||function(e){return function(e,t){if(1<e.length){var n=document.querySelector("#page-menu"),o=document.createElement("li");n.appendChild(o),s.render(a(d,{onClick:t,title:"Styles"}),n,o)}}(n,e)},styles:n}),document.body)}},{"./cookies":1,preact:7}],6:[function(e,t,n){var o,r;o=this,r=function(){return function(n){var o={};function r(e){if(o[e])return o[e].exports;var t=o[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}return r.m=n,r.c=o,r.i=function(e){return e},r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=8)}([function(e,t,n){"use strict";e.exports=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";var o=function(){function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}}();var u=n(5),d=n(7),_=n(4),r=function(){function y(e,t){var n=t.location,o=void 0===n?0:n,r=t.distance,i=void 0===r?100:r,s=t.threshold,a=void 0===s?.6:s,l=t.maxPatternLength,c=void 0===l?32:l,u=t.isCaseSensitive,d=void 0!==u&&u,h=t.tokenSeparator,p=void 0===h?/ +/g:h,f=t.findAllMatches,v=void 0!==f&&f,g=t.minMatchCharLength,m=void 0===g?1:g;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,y),this.options={location:o,distance:i,threshold:a,maxPatternLength:c,isCaseSensitive:d,tokenSeparator:p,findAllMatches:v,minMatchCharLength:m},this.pattern=this.options.isCaseSensitive?e:e.toLowerCase(),this.pattern.length<=c&&(this.patternAlphabet=_(this.pattern))}return o(y,[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var t=this.options,n=t.maxPatternLength,o=t.tokenSeparator;if(this.pattern.length>n)return u(e,this.pattern,o);var r=this.options,i=r.location,s=r.distance,a=r.threshold,l=r.findAllMatches,c=r.minMatchCharLength;return d(e,this.pattern,this.patternAlphabet,{location:i,distance:s,threshold:a,findAllMatches:l,minMatchCharLength:c})}}]),y}();e.exports=r},function(e,t,n){"use strict";var u=n(0);e.exports=function(e,t){return function e(t,n,o){if(n){var r=n.indexOf("."),i=n,s=null;-1!==r&&(i=n.slice(0,r),s=n.slice(r+1));var a=t[i];if(null!=a)if(s||"string"!=typeof a&&"number"!=typeof a)if(u(a))for(var l=0,c=a.length;l<c;l+=1)e(a[l],s,o);else s&&e(a,s,o);else o.push(a.toString())}else o.push(t);return o}(e,t,[])}},function(e,t,n){"use strict";e.exports=function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=[],o=-1,r=-1,i=0,s=e.length;i<s;i+=1){var a=e[i];a&&-1===o?o=i:a||-1===o||(t<=(r=i-1)-o+1&&n.push([o,r]),o=-1)}return e[i-1]&&t<=i-o&&n.push([o,i-1]),n}},function(e,t,n){"use strict";e.exports=function(e){for(var t={},n=e.length,o=0;o<n;o+=1)t[e.charAt(o)]=0;for(var r=0;r<n;r+=1)t[e.charAt(r)]|=1<<n-r-1;return t}},function(e,t,n){"use strict";var u=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;e.exports=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:/ +/g,o=new RegExp(t.replace(u,"\\$&").replace(n,"|")),r=e.match(o),i=!!r,s=[];if(i)for(var a=0,l=r.length;a<l;a+=1){var c=r[a];s.push([e.indexOf(c),c.length-1])}return{score:i?.5:1,isMatch:i,matchedIndices:s}}},function(e,t,n){"use strict";e.exports=function(e,t){var n=t.errors,o=void 0===n?0:n,r=t.currentLocation,i=void 0===r?0:r,s=t.expectedLocation,a=void 0===s?0:s,l=t.distance,c=void 0===l?100:l,u=o/e.length,d=Math.abs(a-i);return c?u+d/c:d?1:u}},function(e,t,n){"use strict";var V=n(6),D=n(3);e.exports=function(e,t,n,o){for(var r=o.location,i=void 0===r?0:r,s=o.distance,a=void 0===s?100:s,l=o.threshold,c=void 0===l?.6:l,u=o.findAllMatches,d=void 0!==u&&u,h=o.minMatchCharLength,p=void 0===h?1:h,f=i,v=e.length,g=c,m=e.indexOf(t,f),y=t.length,_=[],b=0;b<v;b+=1)_[b]=0;if(-1!==m){var k=V(t,{errors:0,currentLocation:m,expectedLocation:f,distance:a});if(g=Math.min(k,g),-1!==(m=e.lastIndexOf(t,f+y))){var S=V(t,{errors:0,currentLocation:m,expectedLocation:f,distance:a});g=Math.min(S,g)}}m=-1;for(var x=[],w=1,C=y+v,L=1<<y-1,M=0;M<y;M+=1){for(var I=0,E=C;I<E;){V(t,{errors:M,currentLocation:f+E,expectedLocation:f,distance:a})<=g?I=E:C=E,E=Math.floor((C-I)/2+I)}C=E;var O=Math.max(1,f-E+1),A=d?v:Math.min(f+E,v)+y,T=Array(A+2);T[A+1]=(1<<M)-1;for(var N=A;O<=N;N-=1){var P=N-1,j=n[e.charAt(P)];if(j&&(_[P]=1),T[N]=(T[N+1]<<1|1)&j,0!==M&&(T[N]|=(x[N+1]|x[N])<<1|1|x[N+1]),T[N]&L&&(w=V(t,{errors:M,currentLocation:P,expectedLocation:f,distance:a}))<=g){if(g=w,(m=P)<=f)break;O=Math.max(1,2*f-m)}}if(g<V(t,{errors:M+1,currentLocation:f,expectedLocation:f,distance:a}))break;x=T}return{isMatch:0<=m,score:0===w?.001:w,matchedIndices:D(_,p)}}},function(e,t,n){"use strict";var o=function(){function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}}();var i=n(1),R=n(2),V=n(0),r=function(){function U(e,t){var n=t.location,o=void 0===n?0:n,r=t.distance,i=void 0===r?100:r,s=t.threshold,a=void 0===s?.6:s,l=t.maxPatternLength,c=void 0===l?32:l,u=t.caseSensitive,d=void 0!==u&&u,h=t.tokenSeparator,p=void 0===h?/ +/g:h,f=t.findAllMatches,v=void 0!==f&&f,g=t.minMatchCharLength,m=void 0===g?1:g,y=t.id,_=void 0===y?null:y,b=t.keys,k=void 0===b?[]:b,S=t.shouldSort,x=void 0===S||S,w=t.getFn,C=void 0===w?R:w,L=t.sortFn,M=void 0===L?function(e,t){return e.score-t.score}:L,I=t.tokenize,E=void 0!==I&&I,O=t.matchAllTokens,A=void 0!==O&&O,T=t.includeMatches,N=void 0!==T&&T,P=t.includeScore,j=void 0!==P&&P,V=t.verbose,D=void 0!==V&&V;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,U),this.options={location:o,distance:i,threshold:a,maxPatternLength:c,isCaseSensitive:d,tokenSeparator:p,findAllMatches:v,minMatchCharLength:m,id:_,keys:k,includeMatches:N,includeScore:j,shouldSort:x,getFn:C,sortFn:M,verbose:D,tokenize:E,matchAllTokens:A},this.setCollection(e)}return o(U,[{key:"setCollection",value:function(e){return this.list=e}},{key:"search",value:function(e){this._log('---------\nSearch pattern: "'+e+'"');var t=this._prepareSearchers(e),n=t.tokenSearchers,o=t.fullSearcher,r=this._search(n,o),i=r.weights,s=r.results;return this._computeScore(i,s),this.options.shouldSort&&this._sort(s),this._format(s)}},{key:"_prepareSearchers",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var n=e.split(this.options.tokenSeparator),o=0,r=n.length;o<r;o+=1)t.push(new i(n[o],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],n=this.list,o={},r=[];if("string"==typeof n[0]){for(var i=0,s=n.length;i<s;i+=1)this._analyze({key:"",value:n[i],record:i,index:i},{resultMap:o,results:r,tokenSearchers:e,fullSearcher:t});return{weights:null,results:r}}for(var a={},l=0,c=n.length;l<c;l+=1)for(var u=n[l],d=0,h=this.options.keys.length;d<h;d+=1){var p=this.options.keys[d];if("string"!=typeof p){if(a[p.name]={weight:1-p.weight||1},p.weight<=0||1<p.weight)throw new Error("Key weight has to be > 0 and <= 1");p=p.name}else a[p]={weight:1};this._analyze({key:p,value:this.options.getFn(u,p),record:u,index:l},{resultMap:o,results:r,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:r}}},{key:"_analyze",value:function(e,t){var n=e.key,o=e.arrayIndex,r=void 0===o?-1:o,i=e.value,s=e.record,a=e.index,l=t.tokenSearchers,c=void 0===l?[]:l,u=t.fullSearcher,d=void 0===u?[]:u,h=t.resultMap,p=void 0===h?{}:h,f=t.results,v=void 0===f?[]:f;if(null!=i){var g=!1,m=-1,y=0;if("string"==typeof i){this._log("\nKey: "+(""===n?"-":n));var _=d.search(i);if(this._log('Full text: "'+i+'", score: '+_.score),this.options.tokenize){for(var b=i.split(this.options.tokenSeparator),k=[],S=0;S<c.length;S+=1){var x=c[S];this._log('\nPattern: "'+x.pattern+'"');for(var w=!1,C=0;C<b.length;C+=1){var L=b[C],M=x.search(L),I={};M.isMatch?(I[L]=M.score,w=g=!0,k.push(M.score)):(I[L]=1,this.options.matchAllTokens||k.push(1)),this._log('Token: "'+L+'", score: '+I[L])}w&&(y+=1)}m=k[0];for(var E=k.length,O=1;O<E;O+=1)m+=k[O];m/=E,this._log("Token score average:",m)}var A=_.score;-1<m&&(A=(A+m)/2),this._log("Score average:",A);var T=!this.options.tokenize||!this.options.matchAllTokens||y>=c.length;if(this._log("\nCheck Matches: "+T),(g||_.isMatch)&&T){var N=p[a];N?N.output.push({key:n,arrayIndex:r,value:i,score:A,matchedIndices:_.matchedIndices}):(p[a]={item:s,output:[{key:n,arrayIndex:r,value:i,score:A,matchedIndices:_.matchedIndices}]},v.push(p[a]))}}else if(V(i))for(var P=0,j=i.length;P<j;P+=1)this._analyze({key:n,arrayIndex:P,value:i[P],record:s,index:a},{resultMap:p,results:v,tokenSearchers:c,fullSearcher:d})}}},{key:"_computeScore",value:function(e,t){this._log("\n\nComputing score:\n");for(var n=0,o=t.length;n<o;n+=1){for(var r=t[n].output,i=r.length,s=1,a=1,l=0;l<i;l+=1){var c=e?e[r[l].key].weight:1,u=(1===c?r[l].score:r[l].score||.001)*c;1!==c?a=Math.min(a,u):s*=r[l].nScore=u}t[n].score=1===a?s:a,this._log(t[n])}}},{key:"_sort",value:function(e){this._log("\n\nSorting...."),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){var t=[];this.options.verbose&&this._log("\n\nOutput:\n\n",JSON.stringify(e));var n=[];this.options.includeMatches&&n.push(function(e,t){var n=e.output;t.matches=[];for(var o=0,r=n.length;o<r;o+=1){var i=n[o];if(0!==i.matchedIndices.length){var s={indices:i.matchedIndices,value:i.value};i.key&&(s.key=i.key),i.hasOwnProperty("arrayIndex")&&-1<i.arrayIndex&&(s.arrayIndex=i.arrayIndex),t.matches.push(s)}}}),this.options.includeScore&&n.push(function(e,t){t.score=e.score});for(var o=0,r=e.length;o<r;o+=1){var i=e[o];if(this.options.id&&(i.item=this.options.getFn(i.item,this.options.id)[0]),n.length){for(var s={item:i.item},a=0,l=n.length;a<l;a+=1)n[a](i,s);t.push(s)}else t.push(i.item)}return t}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}]),U}();e.exports=r}])},"object"==typeof n&&"object"==typeof t?t.exports=r():"function"==typeof define&&define.amd?define("Fuse",[],r):"object"==typeof n?n.Fuse=r():o.Fuse=r()},{}],7:[function(e,y,t){!function(){"use strict";function n(e,t){var n,o,r,i,s=d;for(i=arguments.length;2<i--;)u.push(arguments[i]);for(t&&null!=t.children&&(u.length||u.push(t.children),delete t.children);u.length;)if((o=u.pop())&&void 0!==o.pop)for(i=o.length;i--;)u.push(o[i]);else"boolean"==typeof o&&(o=null),(r="function"!=typeof e)&&(null==o?o="":"number"==typeof o?o=String(o):"string"!=typeof o&&(r=!1)),r&&n?s[s.length-1]+=o:s===d?s=[o]:s.push(o),n=r;var a=new c;return a.nodeName=e,a.children=s,a.attributes=null==t?void 0:t,a.key=null==t?void 0:t.key,void 0!==D.vnode&&D.vnode(a),a}function L(e,t){for(var n in t)e[n]=t[n];return e}function i(e){!e.__d&&(e.__d=!0)&&1==p.push(e)&&(D.debounceRendering||r)(t)}function t(){var e,t=p;for(p=[];e=t.pop();)e.__d&&j(e)}function C(e,t){return e.__n===t||e.nodeName.toLowerCase()===t.toLowerCase()}function M(e){var t=L({},e.attributes);t.children=e.children;var n=e.nodeName.defaultProps;if(void 0!==n)for(var o in n)void 0===t[o]&&(t[o]=n[o]);return t}function I(e){var t=e.parentNode;t&&t.removeChild(e)}function v(e,t,n,o,r){if("className"===t&&(t="class"),"key"===t);else if("ref"===t)n&&n(null),o&&o(e);else if("class"!==t||r)if("style"===t){if(o&&"string"!=typeof o&&"string"!=typeof n||(e.style.cssText=o||""),o&&"object"==typeof o){if("string"!=typeof n)for(var i in n)i in o||(e.style[i]="");for(var i in o)e.style[i]="number"==typeof o[i]&&!1===h.test(i)?o[i]+"px":o[i]}}else if("dangerouslySetInnerHTML"===t)o&&(e.innerHTML=o.__html||"");else if("o"==t[0]&&"n"==t[1]){var s=t!==(t=t.replace(/Capture$/,""));t=t.toLowerCase().substring(2),o?n||e.addEventListener(t,l,s):e.removeEventListener(t,l,s),(e.__l||(e.__l={}))[t]=o}else if("list"!==t&&"type"!==t&&!r&&t in e){try{e[t]=null==o?"":o}catch(e){}null!=o&&!1!==o||"spellcheck"==t||e.removeAttribute(t)}else{var a=r&&t!==(t=t.replace(/^xlink:?/,""));null==o||!1===o?a?e.removeAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase()):e.removeAttribute(t):"function"!=typeof o&&(a?e.setAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase(),o):e.setAttribute(t,o))}else e.className=o||""}function l(e){return this.__l[e.type](D.event&&D.event(e)||e)}function E(){for(var e;e=U.pop();)D.afterMount&&D.afterMount(e),e.componentDidMount&&e.componentDidMount()}function O(e,t,n,o,r,i){R++||(g=null!=r&&void 0!==r.ownerSVGElement,m=null!=e&&!("__preactattr_"in e));var s=A(e,t,n,o,i);return r&&s.parentNode!==r&&r.appendChild(s),--R||(m=!1,i||E()),s}function A(e,t,n,o,r){var i=e,s=g;if(null!=t&&"boolean"!=typeof t||(t=""),"string"==typeof t||"number"==typeof t)return e&&void 0!==e.splitText&&e.parentNode&&(!e._component||r)?e.nodeValue!=t&&(e.nodeValue=t):(i=document.createTextNode(t),e&&(e.parentNode&&e.parentNode.replaceChild(i,e),T(e,!0))),i.__preactattr_=!0,i;var a,l,c=t.nodeName;if("function"==typeof c)return function(e,t,n,o){var r=e&&e._component,i=r,s=e,a=r&&e._componentConstructor===t.nodeName,l=a,c=M(t);for(;r&&!l&&(r=r.__u);)l=r.constructor===t.nodeName;r&&l&&(!o||r._component)?(P(r,c,3,n,o),e=r.base):(i&&!a&&(V(i),e=s=null),r=N(t.nodeName,c,n),e&&!r.__b&&(r.__b=e,s=null),P(r,c,1,n,o),e=r.base,s&&e!==s&&(s._component=null,T(s,!1)));return e}(e,t,n,o);if(g="svg"===c||"foreignObject"!==c&&g,c=String(c),(!e||!C(e,c))&&(a=c,(l=g?document.createElementNS("http://www.w3.org/2000/svg",a):document.createElement(a)).__n=a,i=l,e)){for(;e.firstChild;)i.appendChild(e.firstChild);e.parentNode&&e.parentNode.replaceChild(i,e),T(e,!0)}var u=i.firstChild,d=i.__preactattr_,h=t.children;if(null==d){d=i.__preactattr_={};for(var p=i.attributes,f=p.length;f--;)d[p[f].name]=p[f].value}return!m&&h&&1===h.length&&"string"==typeof h[0]&&null!=u&&void 0!==u.splitText&&null==u.nextSibling?u.nodeValue!=h[0]&&(u.nodeValue=h[0]):(h&&h.length||null!=u)&&function(e,t,n,o,r){var i,s,a,l,c,u=e.childNodes,d=[],h={},p=0,f=0,v=u.length,g=0,m=t?t.length:0;if(0!==v)for(var y=0;y<v;y++){var _=u[y],b=_.__preactattr_,k=m&&b?_._component?_._component.__k:b.key:null;null!=k?(p++,h[k]=_):(b||(void 0!==_.splitText?!r||_.nodeValue.trim():r))&&(d[g++]=_)}if(0!==m)for(var y=0;y<m;y++){l=t[y],c=null;var k=l.key;if(null!=k)p&&void 0!==h[k]&&(c=h[k],h[k]=void 0,p--);else if(f<g)for(i=f;i<g;i++)if(void 0!==d[i]&&(S=s=d[i],w=r,"string"==typeof(x=l)||"number"==typeof x?void 0!==S.splitText:"string"==typeof x.nodeName?!S._componentConstructor&&C(S,x.nodeName):w||S._componentConstructor===x.nodeName)){c=s,d[i]=void 0,i===g-1&&g--,i===f&&f++;break}c=A(c,l,n,o),a=u[y],c&&c!==e&&c!==a&&(null==a?e.appendChild(c):c===a.nextSibling?I(a):e.insertBefore(c,a))}var S,x,w;if(p)for(var y in h)void 0!==h[y]&&T(h[y],!1);for(;f<=g;)void 0!==(c=d[g--])&&T(c,!1)}(i,h,n,o,m||null!=d.dangerouslySetInnerHTML),function(e,t,n){var o;for(o in n)t&&null!=t[o]||null==n[o]||v(e,o,n[o],n[o]=void 0,g);for(o in t)"children"===o||"innerHTML"===o||o in n&&t[o]===("value"===o||"checked"===o?e[o]:n[o])||v(e,o,n[o],n[o]=t[o],g)}(i,t.attributes,d),g=s,i}function T(e,t){var n=e._component;n?V(n):(null!=e.__preactattr_&&e.__preactattr_.ref&&e.__preactattr_.ref(null),!1!==t&&null!=e.__preactattr_||I(e),o(e))}function o(e){for(e=e.lastChild;e;){var t=e.previousSibling;T(e,!0),e=t}}function N(e,t,n){var o,r=f.length;for(e.prototype&&e.prototype.render?(o=new e(t,n),a.call(o,t,n)):((o=new a(t,n)).constructor=e,o.render=s);r--;)if(f[r].constructor===e)return o.__b=f[r].__b,f.splice(r,1),o;return o}function s(e,t,n){return this.constructor(e,n)}function P(e,t,n,o,r){e.__x||(e.__x=!0,e.__r=t.ref,e.__k=t.key,delete t.ref,delete t.key,void 0===e.constructor.getDerivedStateFromProps&&(!e.base||r?e.componentWillMount&&e.componentWillMount():e.componentWillReceiveProps&&e.componentWillReceiveProps(t,o)),o&&o!==e.context&&(e.__c||(e.__c=e.context),e.context=o),e.__p||(e.__p=e.props),e.props=t,e.__x=!1,0!==n&&(1!==n&&!1===D.syncComponentUpdates&&e.base?i(e):j(e,1,r)),e.__r&&e.__r(e))}function j(e,t,n,o){if(!e.__x){var r,i,s,a=e.props,l=e.state,c=e.context,u=e.__p||a,d=e.__s||l,h=e.__c||c,p=e.base,f=e.__b,v=p||f,g=e._component,m=!1,y=h;if(e.constructor.getDerivedStateFromProps&&(l=L(L({},l),e.constructor.getDerivedStateFromProps(a,l)),e.state=l),p&&(e.props=u,e.state=d,e.context=h,2!==t&&e.shouldComponentUpdate&&!1===e.shouldComponentUpdate(a,l,c)?m=!0:e.componentWillUpdate&&e.componentWillUpdate(a,l,c),e.props=a,e.state=l,e.context=c),e.__p=e.__s=e.__c=e.__b=null,e.__d=!1,!m){r=e.render(a,l,c),e.getChildContext&&(c=L(L({},c),e.getChildContext())),p&&e.getSnapshotBeforeUpdate&&(y=e.getSnapshotBeforeUpdate(u,d));var _,b,k=r&&r.nodeName;if("function"==typeof k){var S=M(r);(i=g)&&i.constructor===k&&S.key==i.__k?P(i,S,1,c,!1):(_=i,e._component=i=N(k,S,c),i.__b=i.__b||f,i.__u=e,P(i,S,0,c,!1),j(i,1,n,!0)),b=i.base}else s=v,(_=g)&&(s=e._component=null),(v||1===t)&&(s&&(s._component=null),b=O(s,r,c,n||!p,v&&v.parentNode,!0));if(v&&b!==v&&i!==g){var x=v.parentNode;x&&b!==x&&(x.replaceChild(b,v),_||(v._component=null,T(v,!1)))}if(_&&V(_),(e.base=b)&&!o){for(var w=e,C=e;C=C.__u;)(w=C).base=b;b._component=w,b._componentConstructor=w.constructor}}for(!p||n?U.unshift(e):m||(e.componentDidUpdate&&e.componentDidUpdate(u,d,y),D.afterUpdate&&D.afterUpdate(e));e.__h.length;)e.__h.pop().call(e);R||o||E()}}function V(e){D.beforeUnmount&&D.beforeUnmount(e);var t=e.base;e.__x=!0,e.componentWillUnmount&&e.componentWillUnmount(),e.base=null;var n=e._component;n?V(n):t&&(t.__preactattr_&&t.__preactattr_.ref&&t.__preactattr_.ref(null),I(e.__b=t),f.push(e),o(t)),e.__r&&e.__r(null)}function a(e,t){this.__d=!0,this.context=t,this.props=e,this.state=this.state||{},this.__h=[]}var c=function(){},D={},u=[],d=[],r="function"==typeof Promise?Promise.resolve().then.bind(Promise.resolve()):setTimeout,h=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,p=[],U=[],R=0,g=!1,m=!1,f=[];L(a.prototype,{setState:function(e,t){this.__s||(this.__s=this.state),this.state=L(L({},this.state),"function"==typeof e?e(this.state,this.props):e),t&&this.__h.push(t),i(this)},forceUpdate:function(e){e&&this.__h.push(e),j(this,2)},render:function(){}});var e={h:n,createElement:n,cloneElement:function(e,t){return n(e.nodeName,L(L({},e.attributes),t),2<arguments.length?[].slice.call(arguments,2):e.children)},Component:a,render:function(e,t,n){return O(n,e,{},!1,t,!1)},rerender:t,options:D};void 0!==y?y.exports=e:self.preact=e}()},{}]},{},[3]);  //# sourceMappingURL=haddock-bundle.min.js.map diff --git a/haddock-api/resources/html/js-src/details-helper.tsx b/haddock-api/resources/html/js-src/details-helper.tsx index 871b5417..411d38d7 100644 --- a/haddock-api/resources/html/js-src/details-helper.tsx +++ b/haddock-api/resources/html/js-src/details-helper.tsx @@ -407,7 +407,6 @@ function restoreToggled() {  // <details> element with id given by the 'data-details-id' property  // of the "toggle" element.  function onToggleClick(ev: MouseEvent) { -  ev.preventDefault();    const toggle = ev.currentTarget as HTMLElement;    toggleDetails(toggle);    storeLocalConfig(); diff --git a/haddock-api/resources/html/js-src/quick-jump.tsx b/haddock-api/resources/html/js-src/quick-jump.tsx index 20ff8e15..ef02cbd2 100644 --- a/haddock-api/resources/html/js-src/quick-jump.tsx +++ b/haddock-api/resources/html/js-src/quick-jump.tsx @@ -45,11 +45,12 @@ class PageMenuButton extends Component<any, any> {  } -function addSearchPageMenuButton(action: () => void) { -  const pageMenu = document.querySelector('#page-menu') as HTMLUListElement; -  const dummy = document.createElement('li'); -  pageMenu.insertBefore(dummy, pageMenu.firstChild); -  preact.render(<PageMenuButton onClick={action} title="Quick Jump" />, pageMenu, dummy); +function addSearchPageMenuButton(quickJumpButton: HTMLLIElement) { +  const showHide = function(action: () => void) { +    const pageMenu = document.querySelector('#page-menu') as HTMLUListElement; +    preact.render(<PageMenuButton onClick={action} title="Quick Jump" />, pageMenu, quickJumpButton); +  }; +  return showHide;  }  // -------------------------------------------------------------------------- // @@ -410,10 +411,14 @@ function NoResultsMsg(props: { searchString: string }) {  }  export function init(docBaseUrl?: string, showHide?: (action: () => void) => void) { -  preact.render( -    <QuickJump baseUrl={docBaseUrl || "."} showHideTrigger={showHide || addSearchPageMenuButton} />, -    document.body -  ); +  // A <li> element with this id should exist if --quickjump was set +  const quickJumpButton = document.getElementById('quick-jump-button'); +  if (quickJumpButton) +    preact.render( +      <QuickJump baseUrl={docBaseUrl || "."} showHideTrigger={showHide || +        addSearchPageMenuButton(quickJumpButton as HTMLLIElement)} />, +      document.body +    );  }  // export to global object diff --git a/haddock-api/resources/html/package-lock.json b/haddock-api/resources/html/package-lock.json index 67615fce..cd63cad8 100644 --- a/haddock-api/resources/html/package-lock.json +++ b/haddock-api/resources/html/package-lock.json @@ -13,7 +13,7 @@        },        "devDependencies": {          "browserify": "^14.5.0", -        "gulp": "^4.0.0", +        "gulp": "^4.0.2",          "gulp-sourcemaps": "^2.6.4",          "gulp-uglify": "^3.0.1",          "tsify": "^3.0.4", @@ -39,9 +39,9 @@        }      },      "node_modules/@gulp-sourcemaps/identity-map/node_modules/acorn": { -      "version": "5.7.3", -      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", -      "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", +      "version": "5.7.4", +      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", +      "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",        "dev": true,        "bin": {          "acorn": "bin/acorn" @@ -73,9 +73,9 @@        }      },      "node_modules/acorn": { -      "version": "6.0.2", -      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.2.tgz", -      "integrity": "sha512-GXmKIvbrN3TV7aVqAzVFaMW8F8wzVX7voEBRO3bDA64+EX37YSayggRJP5Xig6HYHBkWKpFg9W5gg6orklubhg==", +      "version": "6.4.2", +      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", +      "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",        "dev": true,        "bin": {          "acorn": "bin/acorn" @@ -113,7 +113,7 @@      },      "node_modules/ansi-colors": {        "version": "1.1.0", -      "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", +      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",        "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",        "dev": true,        "dependencies": { @@ -126,7 +126,7 @@      "node_modules/ansi-gray": {        "version": "0.1.1",        "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", -      "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", +      "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==",        "dev": true,        "dependencies": {          "ansi-wrap": "0.1.0" @@ -138,7 +138,7 @@      "node_modules/ansi-regex": {        "version": "2.1.1",        "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", -      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", +      "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -147,7 +147,7 @@      "node_modules/ansi-wrap": {        "version": "0.1.0",        "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", -      "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", +      "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -172,7 +172,7 @@      "node_modules/append-buffer": {        "version": "1.0.2",        "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", -      "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", +      "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==",        "dev": true,        "dependencies": {          "buffer-equal": "^1.0.0" @@ -184,13 +184,13 @@      "node_modules/archy": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", -      "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", +      "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",        "dev": true      },      "node_modules/arr-diff": {        "version": "4.0.0",        "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", -      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", +      "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -199,7 +199,7 @@      "node_modules/arr-filter": {        "version": "1.1.2",        "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", -      "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", +      "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==",        "dev": true,        "dependencies": {          "make-iterator": "^1.0.0" @@ -220,7 +220,7 @@      "node_modules/arr-map": {        "version": "2.0.2",        "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", -      "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", +      "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==",        "dev": true,        "dependencies": {          "make-iterator": "^1.0.0" @@ -232,7 +232,7 @@      "node_modules/arr-union": {        "version": "3.1.0",        "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", -      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", +      "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -241,22 +241,16 @@      "node_modules/array-each": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", -      "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", +      "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",        "dev": true,        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/array-filter": { -      "version": "0.0.1", -      "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", -      "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", -      "dev": true -    },      "node_modules/array-initial": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", -      "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", +      "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==",        "dev": true,        "dependencies": {          "array-slice": "^1.0.0", @@ -296,18 +290,6 @@          "node": ">=0.10.0"        }      }, -    "node_modules/array-map": { -      "version": "0.0.0", -      "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", -      "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", -      "dev": true -    }, -    "node_modules/array-reduce": { -      "version": "0.0.0", -      "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", -      "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", -      "dev": true -    },      "node_modules/array-slice": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", @@ -331,19 +313,10 @@          "node": ">=0.10.0"        }      }, -    "node_modules/array-sort/node_modules/kind-of": { -      "version": "5.1.0", -      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", -      "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", -      "dev": true, -      "engines": { -        "node": ">=0.10.0" -      } -    },      "node_modules/array-unique": {        "version": "0.3.2",        "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", -      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", +      "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -387,37 +360,43 @@      "node_modules/assign-symbols": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", -      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", +      "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",        "dev": true,        "engines": {          "node": ">=0.10.0"        }      },      "node_modules/async-done": { -      "version": "1.3.1", -      "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.1.tgz", -      "integrity": "sha512-R1BaUeJ4PMoLNJuk+0tLJgjmEqVsdN118+Z8O+alhnQDQgy0kmD5Mqi0DNEmMx2LM0Ed5yekKu+ZXYvIHceicg==", +      "version": "1.3.2", +      "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", +      "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==",        "dev": true,        "dependencies": {          "end-of-stream": "^1.1.0",          "once": "^1.3.2", -        "process-nextick-args": "^1.0.7", +        "process-nextick-args": "^2.0.0",          "stream-exhaust": "^1.0.1"        },        "engines": {          "node": ">= 0.10"        }      }, +    "node_modules/async-done/node_modules/process-nextick-args": { +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", +      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", +      "dev": true +    },      "node_modules/async-each": { -      "version": "1.0.1", -      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", -      "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", +      "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",        "dev": true      },      "node_modules/async-settle": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", -      "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", +      "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==",        "dev": true,        "dependencies": {          "async-done": "^1.2.2" @@ -441,7 +420,7 @@      "node_modules/bach": {        "version": "1.2.0",        "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", -      "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", +      "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==",        "dev": true,        "dependencies": {          "arr-filter": "^1.1.1", @@ -485,7 +464,7 @@      "node_modules/base/node_modules/define-property": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", -      "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", +      "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",        "dev": true,        "dependencies": {          "is-descriptor": "^1.0.0" @@ -494,44 +473,6 @@          "node": ">=0.10.0"        }      }, -    "node_modules/base/node_modules/is-accessor-descriptor": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", -      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", -      "dev": true, -      "dependencies": { -        "kind-of": "^6.0.0" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/base/node_modules/is-data-descriptor": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", -      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", -      "dev": true, -      "dependencies": { -        "kind-of": "^6.0.0" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/base/node_modules/is-descriptor": { -      "version": "1.0.2", -      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", -      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", -      "dev": true, -      "dependencies": { -        "is-accessor-descriptor": "^1.0.0", -        "is-data-descriptor": "^1.0.0", -        "kind-of": "^6.0.2" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    },      "node_modules/base64-js": {        "version": "1.3.0",        "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", @@ -539,18 +480,28 @@        "dev": true      },      "node_modules/binary-extensions": { -      "version": "1.12.0", -      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", -      "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", +      "version": "1.13.1", +      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", +      "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",        "dev": true,        "engines": {          "node": ">=0.10.0"        }      }, +    "node_modules/bindings": { +      "version": "1.5.0", +      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", +      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", +      "dev": true, +      "optional": true, +      "dependencies": { +        "file-uri-to-path": "1.0.0" +      } +    },      "node_modules/bl": { -      "version": "1.2.2", -      "resolved": "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz", -      "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", +      "version": "1.2.3", +      "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", +      "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",        "dev": true,        "dependencies": {          "readable-stream": "^2.3.5", @@ -558,9 +509,9 @@        }      },      "node_modules/bn.js": { -      "version": "4.11.8", -      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", -      "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", +      "version": "4.12.0", +      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", +      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",        "dev": true      },      "node_modules/brace-expansion": { @@ -594,18 +545,6 @@          "node": ">=0.10.0"        }      }, -    "node_modules/braces/node_modules/extend-shallow": { -      "version": "2.0.1", -      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", -      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", -      "dev": true, -      "dependencies": { -        "is-extendable": "^0.1.0" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    },      "node_modules/brorand": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -792,7 +731,7 @@      "node_modules/buffer-equal": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", -      "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", +      "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==",        "dev": true,        "engines": {          "node": ">=0.4.0" @@ -810,15 +749,6 @@        "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",        "dev": true      }, -    "node_modules/builtin-modules": { -      "version": "1.1.1", -      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", -      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", -      "dev": true, -      "engines": { -        "node": ">=0.10.0" -      } -    },      "node_modules/builtin-status-codes": {        "version": "3.0.0",        "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -846,42 +776,63 @@        }      },      "node_modules/cached-path-relative": { -      "version": "1.0.1", -      "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", -      "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", +      "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==",        "dev": true      }, +    "node_modules/call-bind": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", +      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", +      "dev": true, +      "dependencies": { +        "function-bind": "^1.1.1", +        "get-intrinsic": "^1.0.2" +      }, +      "funding": { +        "url": "https://github.com/sponsors/ljharb" +      } +    },      "node_modules/camelcase": {        "version": "3.0.0",        "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", -      "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", +      "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==",        "dev": true,        "engines": {          "node": ">=0.10.0"        }      },      "node_modules/chokidar": { -      "version": "2.0.4", -      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", -      "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", +      "version": "2.1.8", +      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", +      "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", +      "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",        "dev": true,        "dependencies": {          "anymatch": "^2.0.0", -        "async-each": "^1.0.0", -        "braces": "^2.3.0", -        "fsevents": "^1.2.2", +        "async-each": "^1.0.1", +        "braces": "^2.3.2",          "glob-parent": "^3.1.0", -        "inherits": "^2.0.1", +        "inherits": "^2.0.3",          "is-binary-path": "^1.0.0",          "is-glob": "^4.0.0", -        "lodash.debounce": "^4.0.8", -        "normalize-path": "^2.1.1", +        "normalize-path": "^3.0.0",          "path-is-absolute": "^1.0.0", -        "readdirp": "^2.0.0", -        "upath": "^1.0.5" +        "readdirp": "^2.2.1", +        "upath": "^1.1.1"        },        "optionalDependencies": { -        "fsevents": "^1.2.2" +        "fsevents": "^1.2.7" +      } +    }, +    "node_modules/chokidar/node_modules/normalize-path": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", +      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", +      "dev": true, +      "engines": { +        "node": ">=0.10.0"        }      },      "node_modules/cipher-base": { @@ -912,7 +863,7 @@      "node_modules/class-utils/node_modules/define-property": {        "version": "0.2.5",        "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", -      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", +      "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",        "dev": true,        "dependencies": {          "is-descriptor": "^0.1.0" @@ -921,10 +872,72 @@          "node": ">=0.10.0"        }      }, +    "node_modules/class-utils/node_modules/is-accessor-descriptor": { +      "version": "0.1.6", +      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", +      "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", +      "dev": true, +      "dependencies": { +        "kind-of": "^3.0.2" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { +      "version": "3.2.2", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", +      "dev": true, +      "dependencies": { +        "is-buffer": "^1.1.5" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/class-utils/node_modules/is-data-descriptor": { +      "version": "0.1.4", +      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", +      "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", +      "dev": true, +      "dependencies": { +        "kind-of": "^3.0.2" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { +      "version": "3.2.2", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", +      "dev": true, +      "dependencies": { +        "is-buffer": "^1.1.5" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/class-utils/node_modules/is-descriptor": { +      "version": "0.1.6", +      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", +      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", +      "dev": true, +      "dependencies": { +        "is-accessor-descriptor": "^0.1.6", +        "is-data-descriptor": "^0.1.4", +        "kind-of": "^5.0.0" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    },      "node_modules/cliui": {        "version": "3.2.0",        "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", -      "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", +      "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==",        "dev": true,        "dependencies": {          "string-width": "^1.0.1", @@ -961,7 +974,7 @@      "node_modules/code-point-at": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", -      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", +      "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -970,7 +983,7 @@      "node_modules/collection-map": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", -      "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", +      "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==",        "dev": true,        "dependencies": {          "arr-map": "^2.0.2", @@ -984,7 +997,7 @@      "node_modules/collection-visit": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", -      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", +      "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",        "dev": true,        "dependencies": {          "map-visit": "^1.0.0", @@ -1022,9 +1035,9 @@        "dev": true      },      "node_modules/component-emitter": { -      "version": "1.2.1", -      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", -      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", +      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",        "dev": true      },      "node_modules/concat-map": { @@ -1091,20 +1104,20 @@      "node_modules/copy-descriptor": {        "version": "0.1.1",        "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", -      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", +      "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",        "dev": true,        "engines": {          "node": ">=0.10.0"        }      },      "node_modules/copy-props": { -      "version": "2.0.4", -      "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", -      "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", +      "version": "2.0.5", +      "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", +      "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==",        "dev": true,        "dependencies": { -        "each-props": "^1.3.0", -        "is-plain-object": "^2.0.1" +        "each-props": "^1.3.2", +        "is-plain-object": "^5.0.0"        }      },      "node_modules/core-util-is": { @@ -1243,16 +1256,10 @@        "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",        "dev": true      }, -    "node_modules/debug/node_modules/ms": { -      "version": "2.0.0", -      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", -      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", -      "dev": true -    },      "node_modules/decamelize": {        "version": "1.2.0",        "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", -      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", +      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -1279,34 +1286,29 @@          "node": ">=0.10.0"        }      }, -    "node_modules/default-compare/node_modules/kind-of": { -      "version": "5.1.0", -      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", -      "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", -      "dev": true, -      "engines": { -        "node": ">=0.10.0" -      } -    },      "node_modules/default-resolution": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", -      "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", +      "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==",        "dev": true,        "engines": {          "node": ">= 0.10"        }      },      "node_modules/define-properties": { -      "version": "1.1.3", -      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", -      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", +      "version": "1.1.4", +      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", +      "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",        "dev": true,        "dependencies": { -        "object-keys": "^1.0.12" +        "has-property-descriptors": "^1.0.0", +        "object-keys": "^1.1.1"        },        "engines": {          "node": ">= 0.4" +      }, +      "funding": { +        "url": "https://github.com/sponsors/ljharb"        }      },      "node_modules/define-property": { @@ -1322,44 +1324,6 @@          "node": ">=0.10.0"        }      }, -    "node_modules/define-property/node_modules/is-accessor-descriptor": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", -      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", -      "dev": true, -      "dependencies": { -        "kind-of": "^6.0.0" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/define-property/node_modules/is-data-descriptor": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", -      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", -      "dev": true, -      "dependencies": { -        "kind-of": "^6.0.0" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/define-property/node_modules/is-descriptor": { -      "version": "1.0.2", -      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", -      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", -      "dev": true, -      "dependencies": { -        "is-accessor-descriptor": "^1.0.0", -        "is-data-descriptor": "^1.0.0", -        "kind-of": "^6.0.2" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    },      "node_modules/defined": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", @@ -1394,7 +1358,7 @@      "node_modules/detect-file": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", -      "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", +      "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -1420,9 +1384,9 @@        }      },      "node_modules/detective/node_modules/acorn": { -      "version": "5.7.3", -      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", -      "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", +      "version": "5.7.4", +      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", +      "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",        "dev": true,        "bin": {          "acorn": "bin/acorn" @@ -1462,9 +1426,9 @@        }      },      "node_modules/duplexify": { -      "version": "3.6.1", -      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", -      "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", +      "version": "3.7.1", +      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", +      "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",        "dev": true,        "dependencies": {          "end-of-stream": "^1.0.0", @@ -1483,37 +1447,46 @@          "object.defaults": "^1.1.0"        }      }, -    "node_modules/elliptic": { -      "version": "6.4.1", -      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", -      "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", +    "node_modules/each-props/node_modules/is-plain-object": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",        "dev": true,        "dependencies": { -        "bn.js": "^4.4.0", -        "brorand": "^1.0.1", -        "hash.js": "^1.0.0", -        "hmac-drbg": "^1.0.0", -        "inherits": "^2.0.1", -        "minimalistic-assert": "^1.0.0", -        "minimalistic-crypto-utils": "^1.0.0" +        "isobject": "^3.0.1" +      }, +      "engines": { +        "node": ">=0.10.0"        }      }, -    "node_modules/end-of-stream": { -      "version": "1.4.1", -      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", -      "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", +    "node_modules/elliptic": { +      "version": "6.5.4", +      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", +      "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",        "dev": true,        "dependencies": { -        "once": "^1.4.0" +        "bn.js": "^4.11.9", +        "brorand": "^1.1.0", +        "hash.js": "^1.0.0", +        "hmac-drbg": "^1.0.1", +        "inherits": "^2.0.4", +        "minimalistic-assert": "^1.0.1", +        "minimalistic-crypto-utils": "^1.0.1"        }      }, -    "node_modules/end-of-stream/node_modules/once": { -      "version": "1.4.0", -      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", -      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", +    "node_modules/elliptic/node_modules/inherits": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", +      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", +      "dev": true +    }, +    "node_modules/end-of-stream": { +      "version": "1.4.4", +      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", +      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",        "dev": true,        "dependencies": { -        "wrappy": "1" +        "once": "^1.4.0"        }      },      "node_modules/error-ex": { @@ -1600,7 +1573,7 @@      "node_modules/expand-brackets": {        "version": "2.1.4",        "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", -      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", +      "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",        "dev": true,        "dependencies": {          "debug": "^2.3.3", @@ -1615,19 +1588,10 @@          "node": ">=0.10.0"        }      }, -    "node_modules/expand-brackets/node_modules/debug": { -      "version": "2.6.9", -      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", -      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", -      "dev": true, -      "dependencies": { -        "ms": "2.0.0" -      } -    },      "node_modules/expand-brackets/node_modules/define-property": {        "version": "0.2.5",        "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", -      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", +      "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",        "dev": true,        "dependencies": {          "is-descriptor": "^0.1.0" @@ -1636,102 +1600,90 @@          "node": ">=0.10.0"        }      }, -    "node_modules/expand-brackets/node_modules/extend-shallow": { -      "version": "2.0.1", -      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", -      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", +    "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { +      "version": "0.1.6", +      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", +      "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",        "dev": true,        "dependencies": { -        "is-extendable": "^0.1.0" +        "kind-of": "^3.0.2"        },        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/expand-brackets/node_modules/ms": { -      "version": "2.0.0", -      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", -      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", -      "dev": true -    }, -    "node_modules/expand-tilde": { -      "version": "2.0.2", -      "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", -      "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", +    "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { +      "version": "3.2.2", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",        "dev": true,        "dependencies": { -        "homedir-polyfill": "^1.0.1" +        "is-buffer": "^1.1.5"        },        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/extend": { -      "version": "3.0.2", -      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", -      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", -      "dev": true -    }, -    "node_modules/extend-shallow": { -      "version": "3.0.2", -      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", -      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", +    "node_modules/expand-brackets/node_modules/is-data-descriptor": { +      "version": "0.1.4", +      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", +      "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",        "dev": true,        "dependencies": { -        "assign-symbols": "^1.0.0", -        "is-extendable": "^1.0.1" +        "kind-of": "^3.0.2"        },        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/extend-shallow/node_modules/is-extendable": { -      "version": "1.0.1", -      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", -      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", +    "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { +      "version": "3.2.2", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",        "dev": true,        "dependencies": { -        "is-plain-object": "^2.0.4" +        "is-buffer": "^1.1.5"        },        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/extglob": { -      "version": "2.0.4", -      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", -      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", +    "node_modules/expand-brackets/node_modules/is-descriptor": { +      "version": "0.1.6", +      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", +      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",        "dev": true,        "dependencies": { -        "array-unique": "^0.3.2", -        "define-property": "^1.0.0", -        "expand-brackets": "^2.1.4", -        "extend-shallow": "^2.0.1", -        "fragment-cache": "^0.2.1", -        "regex-not": "^1.0.0", -        "snapdragon": "^0.8.1", -        "to-regex": "^3.0.1" +        "is-accessor-descriptor": "^0.1.6", +        "is-data-descriptor": "^0.1.4", +        "kind-of": "^5.0.0"        },        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/extglob/node_modules/define-property": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", -      "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", +    "node_modules/expand-tilde": { +      "version": "2.0.2", +      "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", +      "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",        "dev": true,        "dependencies": { -        "is-descriptor": "^1.0.0" +        "homedir-polyfill": "^1.0.1"        },        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/extglob/node_modules/extend-shallow": { +    "node_modules/extend": { +      "version": "3.0.2", +      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", +      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", +      "dev": true +    }, +    "node_modules/extend-shallow": {        "version": "2.0.1",        "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", -      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", +      "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",        "dev": true,        "dependencies": {          "is-extendable": "^0.1.0" @@ -1740,62 +1692,69 @@          "node": ">=0.10.0"        }      }, -    "node_modules/extglob/node_modules/is-accessor-descriptor": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", -      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", +    "node_modules/extglob": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", +      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",        "dev": true,        "dependencies": { -        "kind-of": "^6.0.0" +        "array-unique": "^0.3.2", +        "define-property": "^1.0.0", +        "expand-brackets": "^2.1.4", +        "extend-shallow": "^2.0.1", +        "fragment-cache": "^0.2.1", +        "regex-not": "^1.0.0", +        "snapdragon": "^0.8.1", +        "to-regex": "^3.0.1"        },        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/extglob/node_modules/is-data-descriptor": { +    "node_modules/extglob/node_modules/define-property": {        "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", -      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", -      "dev": true, -      "dependencies": { -        "kind-of": "^6.0.0" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/extglob/node_modules/is-descriptor": { -      "version": "1.0.2", -      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", -      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", +      "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", +      "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",        "dev": true,        "dependencies": { -        "is-accessor-descriptor": "^1.0.0", -        "is-data-descriptor": "^1.0.0", -        "kind-of": "^6.0.2" +        "is-descriptor": "^1.0.0"        },        "engines": {          "node": ">=0.10.0"        }      },      "node_modules/fancy-log": { -      "version": "1.3.2", -      "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", -      "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", +      "version": "1.3.3", +      "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", +      "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",        "dev": true,        "dependencies": {          "ansi-gray": "^0.1.1",          "color-support": "^1.1.3", +        "parse-node-version": "^1.0.0",          "time-stamp": "^1.0.0"        },        "engines": {          "node": ">= 0.10"        }      }, +    "node_modules/fast-levenshtein": { +      "version": "1.1.4", +      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", +      "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==", +      "dev": true +    }, +    "node_modules/file-uri-to-path": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", +      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", +      "dev": true, +      "optional": true +    },      "node_modules/fill-range": {        "version": "4.0.0",        "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", -      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", +      "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",        "dev": true,        "dependencies": {          "extend-shallow": "^2.0.1", @@ -1807,22 +1766,10 @@          "node": ">=0.10.0"        }      }, -    "node_modules/fill-range/node_modules/extend-shallow": { -      "version": "2.0.1", -      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", -      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", -      "dev": true, -      "dependencies": { -        "is-extendable": "^0.1.0" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    },      "node_modules/find-up": {        "version": "1.1.2",        "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", -      "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", +      "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",        "dev": true,        "dependencies": {          "path-exists": "^2.0.0", @@ -1833,13 +1780,13 @@        }      },      "node_modules/findup-sync": { -      "version": "2.0.0", -      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", -      "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", +      "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",        "dev": true,        "dependencies": {          "detect-file": "^1.0.0", -        "is-glob": "^3.1.0", +        "is-glob": "^4.0.0",          "micromatch": "^3.0.4",          "resolve-dir": "^1.0.1"        }, @@ -1847,22 +1794,10 @@          "node": ">= 0.10"        }      }, -    "node_modules/findup-sync/node_modules/is-glob": { -      "version": "3.1.0", -      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", -      "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", -      "dev": true, -      "dependencies": { -        "is-extglob": "^2.1.0" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    },      "node_modules/fined": { -      "version": "1.1.0", -      "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", -      "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", +      "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",        "dev": true,        "dependencies": {          "expand-tilde": "^2.0.2", @@ -1875,29 +1810,41 @@          "node": ">= 0.10"        }      }, +    "node_modules/fined/node_modules/is-plain-object": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +      "dev": true, +      "dependencies": { +        "isobject": "^3.0.1" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    },      "node_modules/flagged-respawn": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", -      "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", +      "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",        "dev": true,        "engines": { -        "node": ">= 0.8.0" +        "node": ">= 0.10"        }      },      "node_modules/flush-write-stream": { -      "version": "1.0.3", -      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", -      "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", +      "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",        "dev": true,        "dependencies": { -        "inherits": "^2.0.1", -        "readable-stream": "^2.0.4" +        "inherits": "^2.0.3", +        "readable-stream": "^2.3.6"        }      },      "node_modules/for-in": {        "version": "1.0.2",        "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", -      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", +      "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -1906,7 +1853,7 @@      "node_modules/for-own": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", -      "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", +      "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",        "dev": true,        "dependencies": {          "for-in": "^1.0.1" @@ -1918,7 +1865,7 @@      "node_modules/fragment-cache": {        "version": "0.2.1",        "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", -      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", +      "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",        "dev": true,        "dependencies": {          "map-cache": "^0.2.2" @@ -1930,7 +1877,7 @@      "node_modules/fs-mkdirp-stream": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", -      "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", +      "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==",        "dev": true,        "dependencies": {          "graceful-fs": "^4.1.11", @@ -1947,76 +1894,10 @@        "dev": true      },      "node_modules/fsevents": { -      "version": "1.2.4", -      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", -      "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", -      "bundleDependencies": [ -        "abbrev", -        "ansi-regex", -        "aproba", -        "are-we-there-yet", -        "balanced-match", -        "brace-expansion", -        "chownr", -        "code-point-at", -        "concat-map", -        "console-control-strings", -        "core-util-is", -        "debug", -        "deep-extend", -        "delegates", -        "detect-libc", -        "fs-minipass", -        "fs.realpath", -        "gauge", -        "glob", -        "has-unicode", -        "iconv-lite", -        "ignore-walk", -        "inflight", -        "inherits", -        "ini", -        "is-fullwidth-code-point", -        "isarray", -        "minimatch", -        "minimist", -        "minipass", -        "minizlib", -        "mkdirp", -        "ms", -        "needle", -        "node-pre-gyp", -        "nopt", -        "npm-bundled", -        "npm-packlist", -        "npmlog", -        "number-is-nan", -        "object-assign", -        "once", -        "os-homedir", -        "os-tmpdir", -        "osenv", -        "path-is-absolute", -        "process-nextick-args", -        "rc", -        "readable-stream", -        "rimraf", -        "safe-buffer", -        "safer-buffer", -        "sax", -        "semver", -        "set-blocking", -        "signal-exit", -        "string-width", -        "string_decoder", -        "strip-ansi", -        "strip-json-comments", -        "tar", -        "util-deprecate", -        "wide-align", -        "wrappy", -        "yallist" -      ], +      "version": "1.2.13", +      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", +      "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", +      "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.",        "dev": true,        "hasInstallScript": true,        "optional": true, @@ -2024,826 +1905,13 @@          "darwin"        ],        "dependencies": { -        "nan": "^2.9.2", -        "node-pre-gyp": "^0.10.0" -      }, -      "engines": { -        "node": ">=0.8.0" -      } -    }, -    "node_modules/fsevents/node_modules/abbrev": { -      "version": "1.1.1", -      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", -      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/ansi-regex": { -      "version": "2.1.1", -      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", -      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/fsevents/node_modules/aproba": { -      "version": "1.2.0", -      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", -      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/are-we-there-yet": { -      "version": "1.1.4", -      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", -      "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "delegates": "^1.0.0", -        "readable-stream": "^2.0.6" -      } -    }, -    "node_modules/fsevents/node_modules/balanced-match": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", -      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/brace-expansion": { -      "version": "1.1.11", -      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", -      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "dependencies": { -        "balanced-match": "^1.0.0", -        "concat-map": "0.0.1" -      } -    }, -    "node_modules/fsevents/node_modules/chownr": { -      "version": "1.0.1", -      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", -      "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/code-point-at": { -      "version": "1.1.0", -      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", -      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/fsevents/node_modules/concat-map": { -      "version": "0.0.1", -      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", -      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/console-control-strings": { -      "version": "1.1.0", -      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", -      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/core-util-is": { -      "version": "1.0.2", -      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", -      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/debug": { -      "version": "2.6.9", -      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", -      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "dependencies": { -        "ms": "2.0.0" -      } -    }, -    "node_modules/fsevents/node_modules/deep-extend": { -      "version": "0.5.1", -      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", -      "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "engines": { -        "iojs": ">=1.0.0", -        "node": ">=0.10.0" -      } -    }, -    "node_modules/fsevents/node_modules/delegates": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", -      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/detect-libc": { -      "version": "1.0.3", -      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", -      "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", -      "dev": true, -      "inBundle": true, -      "license": "Apache-2.0", -      "optional": true, -      "bin": { -        "detect-libc": "bin/detect-libc.js" -      }, -      "engines": { -        "node": ">=0.10" -      } -    }, -    "node_modules/fsevents/node_modules/fs-minipass": { -      "version": "1.2.5", -      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", -      "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "minipass": "^2.2.1" -      } -    }, -    "node_modules/fsevents/node_modules/fs.realpath": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", -      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/gauge": { -      "version": "2.7.4", -      "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", -      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "aproba": "^1.0.3", -        "console-control-strings": "^1.0.0", -        "has-unicode": "^2.0.0", -        "object-assign": "^4.1.0", -        "signal-exit": "^3.0.0", -        "string-width": "^1.0.1", -        "strip-ansi": "^3.0.1", -        "wide-align": "^1.1.0" -      } -    }, -    "node_modules/fsevents/node_modules/glob": { -      "version": "7.1.2", -      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", -      "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "fs.realpath": "^1.0.0", -        "inflight": "^1.0.4", -        "inherits": "2", -        "minimatch": "^3.0.4", -        "once": "^1.3.0", -        "path-is-absolute": "^1.0.0" -      }, -      "engines": { -        "node": "*" -      } -    }, -    "node_modules/fsevents/node_modules/has-unicode": { -      "version": "2.0.1", -      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", -      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/iconv-lite": { -      "version": "0.4.21", -      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", -      "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "dependencies": { -        "safer-buffer": "^2.1.0" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/fsevents/node_modules/ignore-walk": { -      "version": "3.0.1", -      "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", -      "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "minimatch": "^3.0.4" -      } -    }, -    "node_modules/fsevents/node_modules/inflight": { -      "version": "1.0.6", -      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", -      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "once": "^1.3.0", -        "wrappy": "1" -      } -    }, -    "node_modules/fsevents/node_modules/inherits": { -      "version": "2.0.3", -      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", -      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/ini": { -      "version": "1.3.5", -      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", -      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "engines": { -        "node": "*" -      } -    }, -    "node_modules/fsevents/node_modules/is-fullwidth-code-point": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", -      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "dependencies": { -        "number-is-nan": "^1.0.0" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/fsevents/node_modules/isarray": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", -      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/minimatch": { -      "version": "3.0.4", -      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", -      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "brace-expansion": "^1.1.7" -      }, -      "engines": { -        "node": "*" -      } -    }, -    "node_modules/fsevents/node_modules/minimist": { -      "version": "0.0.8", -      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", -      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/minipass": { -      "version": "2.2.4", -      "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz", -      "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "safe-buffer": "^5.1.1", -        "yallist": "^3.0.0" -      } -    }, -    "node_modules/fsevents/node_modules/minizlib": { -      "version": "1.1.0", -      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", -      "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "dependencies": { -        "minipass": "^2.2.1" -      } -    }, -    "node_modules/fsevents/node_modules/mkdirp": { -      "version": "0.5.1", -      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", -      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "dependencies": { -        "minimist": "0.0.8" -      }, -      "bin": { -        "mkdirp": "bin/cmd.js" -      } -    }, -    "node_modules/fsevents/node_modules/ms": { -      "version": "2.0.0", -      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", -      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/needle": { -      "version": "2.2.0", -      "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz", -      "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "dependencies": { -        "debug": "^2.1.2", -        "iconv-lite": "^0.4.4", -        "sax": "^1.2.4" -      }, -      "bin": { -        "needle": "bin/needle" -      }, -      "engines": { -        "node": ">= 0.10.x" -      } -    }, -    "node_modules/fsevents/node_modules/node-pre-gyp": { -      "version": "0.10.0", -      "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", -      "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", -      "dev": true, -      "inBundle": true, -      "license": "BSD-3-Clause", -      "optional": true, -      "dependencies": { -        "detect-libc": "^1.0.2", -        "mkdirp": "^0.5.1", -        "needle": "^2.2.0", -        "nopt": "^4.0.1", -        "npm-packlist": "^1.1.6", -        "npmlog": "^4.0.2", -        "rc": "^1.1.7", -        "rimraf": "^2.6.1", -        "semver": "^5.3.0", -        "tar": "^4" -      }, -      "bin": { -        "node-pre-gyp": "bin/node-pre-gyp" -      } -    }, -    "node_modules/fsevents/node_modules/nopt": { -      "version": "4.0.1", -      "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", -      "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "abbrev": "1", -        "osenv": "^0.1.4" -      }, -      "bin": { -        "nopt": "bin/nopt.js" -      } -    }, -    "node_modules/fsevents/node_modules/npm-bundled": { -      "version": "1.0.3", -      "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", -      "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/npm-packlist": { -      "version": "1.1.10", -      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", -      "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "ignore-walk": "^3.0.1", -        "npm-bundled": "^1.0.1" -      } -    }, -    "node_modules/fsevents/node_modules/npmlog": { -      "version": "4.1.2", -      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", -      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "are-we-there-yet": "~1.1.2", -        "console-control-strings": "~1.1.0", -        "gauge": "~2.7.3", -        "set-blocking": "~2.0.0" -      } -    }, -    "node_modules/fsevents/node_modules/number-is-nan": { -      "version": "1.0.1", -      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", -      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/fsevents/node_modules/object-assign": { -      "version": "4.1.1", -      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", -      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/fsevents/node_modules/once": { -      "version": "1.4.0", -      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", -      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "wrappy": "1" -      } -    }, -    "node_modules/fsevents/node_modules/os-homedir": { -      "version": "1.0.2", -      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", -      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/fsevents/node_modules/os-tmpdir": { -      "version": "1.0.2", -      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", -      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/fsevents/node_modules/osenv": { -      "version": "0.1.5", -      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", -      "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "os-homedir": "^1.0.0", -        "os-tmpdir": "^1.0.0" -      } -    }, -    "node_modules/fsevents/node_modules/path-is-absolute": { -      "version": "1.0.1", -      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", -      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/fsevents/node_modules/process-nextick-args": { -      "version": "2.0.0", -      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", -      "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/rc": { -      "version": "1.2.7", -      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", -      "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", -      "dev": true, -      "inBundle": true, -      "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", -      "optional": true, -      "dependencies": { -        "deep-extend": "^0.5.1", -        "ini": "~1.3.0", -        "minimist": "^1.2.0", -        "strip-json-comments": "~2.0.1" -      }, -      "bin": { -        "rc": "cli.js" -      } -    }, -    "node_modules/fsevents/node_modules/rc/node_modules/minimist": { -      "version": "1.2.0", -      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", -      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/readable-stream": { -      "version": "2.3.6", -      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", -      "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "dependencies": { -        "core-util-is": "~1.0.0", -        "inherits": "~2.0.3", -        "isarray": "~1.0.0", -        "process-nextick-args": "~2.0.0", -        "safe-buffer": "~5.1.1", -        "string_decoder": "~1.1.1", -        "util-deprecate": "~1.0.1" -      } -    }, -    "node_modules/fsevents/node_modules/rimraf": { -      "version": "2.6.2", -      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", -      "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "glob": "^7.0.5" -      }, -      "bin": { -        "rimraf": "bin.js" -      } -    }, -    "node_modules/fsevents/node_modules/safe-buffer": { -      "version": "5.1.1", -      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", -      "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/safer-buffer": { -      "version": "2.1.2", -      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", -      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/sax": { -      "version": "1.2.4", -      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", -      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/semver": { -      "version": "5.5.0", -      "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", -      "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "bin": { -        "semver": "bin/semver" -      } -    }, -    "node_modules/fsevents/node_modules/set-blocking": { -      "version": "2.0.0", -      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", -      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/signal-exit": { -      "version": "3.0.2", -      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", -      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/string_decoder": { -      "version": "1.1.1", -      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", -      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "dependencies": { -        "safe-buffer": "~5.1.0" -      } -    }, -    "node_modules/fsevents/node_modules/string-width": { -      "version": "1.0.2", -      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", -      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "dependencies": { -        "code-point-at": "^1.0.0", -        "is-fullwidth-code-point": "^1.0.0", -        "strip-ansi": "^3.0.0" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/fsevents/node_modules/strip-ansi": { -      "version": "3.0.1", -      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", -      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "dependencies": { -        "ansi-regex": "^2.0.0" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/fsevents/node_modules/strip-json-comments": { -      "version": "2.0.1", -      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", -      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/fsevents/node_modules/tar": { -      "version": "4.4.1", -      "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz", -      "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "chownr": "^1.0.1", -        "fs-minipass": "^1.2.5", -        "minipass": "^2.2.4", -        "minizlib": "^1.1.0", -        "mkdirp": "^0.5.0", -        "safe-buffer": "^5.1.1", -        "yallist": "^3.0.2" +        "bindings": "^1.5.0", +        "nan": "^2.12.1"        },        "engines": { -        "node": ">=4.5" -      } -    }, -    "node_modules/fsevents/node_modules/util-deprecate": { -      "version": "1.0.2", -      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", -      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", -      "dev": true, -      "inBundle": true, -      "license": "MIT", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/wide-align": { -      "version": "1.1.2", -      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", -      "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true, -      "dependencies": { -        "string-width": "^1.0.2" +        "node": ">= 4.0"        }      }, -    "node_modules/fsevents/node_modules/wrappy": { -      "version": "1.0.2", -      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", -      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true -    }, -    "node_modules/fsevents/node_modules/yallist": { -      "version": "3.0.2", -      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", -      "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", -      "dev": true, -      "inBundle": true, -      "license": "ISC", -      "optional": true -    },      "node_modules/function-bind": {        "version": "1.1.1",        "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -2867,10 +1935,24 @@        "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",        "dev": true      }, +    "node_modules/get-intrinsic": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", +      "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", +      "dev": true, +      "dependencies": { +        "function-bind": "^1.1.1", +        "has": "^1.0.3", +        "has-symbols": "^1.0.3" +      }, +      "funding": { +        "url": "https://github.com/sponsors/ljharb" +      } +    },      "node_modules/get-value": {        "version": "2.0.6",        "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", -      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", +      "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -2896,7 +1978,7 @@      "node_modules/glob-parent": {        "version": "3.1.0",        "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", -      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", +      "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",        "dev": true,        "dependencies": {          "is-glob": "^3.1.0", @@ -2906,7 +1988,7 @@      "node_modules/glob-parent/node_modules/is-glob": {        "version": "3.1.0",        "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", -      "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", +      "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",        "dev": true,        "dependencies": {          "is-extglob": "^2.1.0" @@ -2918,7 +2000,7 @@      "node_modules/glob-stream": {        "version": "6.1.0",        "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", -      "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", +      "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==",        "dev": true,        "dependencies": {          "extend": "^3.0.0", @@ -2937,20 +2019,32 @@        }      },      "node_modules/glob-watcher": { -      "version": "5.0.1", -      "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.1.tgz", -      "integrity": "sha512-fK92r2COMC199WCyGUblrZKhjra3cyVMDiypDdqg1vsSDmexnbYivK1kNR4QItiNXLKmGlqan469ks67RtNa2g==", +      "version": "5.0.5", +      "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", +      "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==",        "dev": true,        "dependencies": { +        "anymatch": "^2.0.0",          "async-done": "^1.2.0",          "chokidar": "^2.0.0", +        "is-negated-glob": "^1.0.0",          "just-debounce": "^1.0.0", +        "normalize-path": "^3.0.0",          "object.defaults": "^1.1.0"        },        "engines": {          "node": ">= 0.10"        }      }, +    "node_modules/glob-watcher/node_modules/normalize-path": { +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", +      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", +      "dev": true, +      "engines": { +        "node": ">=0.10.0" +      } +    },      "node_modules/global-modules": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", @@ -2968,7 +2062,7 @@      "node_modules/global-prefix": {        "version": "1.0.2",        "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", -      "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", +      "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",        "dev": true,        "dependencies": {          "expand-tilde": "^2.0.2", @@ -3003,14 +2097,14 @@        }      },      "node_modules/gulp": { -      "version": "4.0.0", -      "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.0.tgz", -      "integrity": "sha1-lXZsYB2t5Kd+0+eyttwDiBtZY2Y=", +      "version": "4.0.2", +      "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", +      "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==",        "dev": true,        "dependencies": { -        "glob-watcher": "^5.0.0", -        "gulp-cli": "^2.0.0", -        "undertaker": "^1.0.0", +        "glob-watcher": "^5.0.3", +        "gulp-cli": "^2.2.0", +        "undertaker": "^1.2.1",          "vinyl-fs": "^3.0.0"        },        "bin": { @@ -3020,6 +2114,53 @@          "node": ">= 0.10"        }      }, +    "node_modules/gulp-cli": { +      "version": "2.3.0", +      "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", +      "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", +      "dev": true, +      "dependencies": { +        "ansi-colors": "^1.0.1", +        "archy": "^1.0.0", +        "array-sort": "^1.0.0", +        "color-support": "^1.1.3", +        "concat-stream": "^1.6.0", +        "copy-props": "^2.0.1", +        "fancy-log": "^1.3.2", +        "gulplog": "^1.0.0", +        "interpret": "^1.4.0", +        "isobject": "^3.0.1", +        "liftoff": "^3.1.0", +        "matchdep": "^2.0.0", +        "mute-stdout": "^1.0.0", +        "pretty-hrtime": "^1.0.0", +        "replace-homedir": "^1.0.0", +        "semver-greatest-satisfied-range": "^1.1.0", +        "v8flags": "^3.2.0", +        "yargs": "^7.1.0" +      }, +      "bin": { +        "gulp": "bin/gulp.js" +      }, +      "engines": { +        "node": ">= 0.10" +      } +    }, +    "node_modules/gulp-cli/node_modules/concat-stream": { +      "version": "1.6.2", +      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", +      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", +      "dev": true, +      "engines": [ +        "node >= 0.8" +      ], +      "dependencies": { +        "buffer-from": "^1.0.0", +        "inherits": "^2.0.3", +        "readable-stream": "^2.2.2", +        "typedarray": "^0.0.6" +      } +    },      "node_modules/gulp-sourcemaps": {        "version": "2.6.4",        "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-2.6.4.tgz", @@ -3043,9 +2184,9 @@        }      },      "node_modules/gulp-sourcemaps/node_modules/acorn": { -      "version": "5.7.3", -      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", -      "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", +      "version": "5.7.4", +      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", +      "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",        "dev": true,        "bin": {          "acorn": "bin/acorn" @@ -3085,53 +2226,6 @@        "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",        "dev": true      }, -    "node_modules/gulp/node_modules/concat-stream": { -      "version": "1.6.2", -      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", -      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", -      "dev": true, -      "engines": [ -        "node >= 0.8" -      ], -      "dependencies": { -        "buffer-from": "^1.0.0", -        "inherits": "^2.0.3", -        "readable-stream": "^2.2.2", -        "typedarray": "^0.0.6" -      } -    }, -    "node_modules/gulp/node_modules/gulp-cli": { -      "version": "2.0.1", -      "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.0.1.tgz", -      "integrity": "sha512-RxujJJdN8/O6IW2nPugl7YazhmrIEjmiVfPKrWt68r71UCaLKS71Hp0gpKT+F6qOUFtr7KqtifDKaAJPRVvMYQ==", -      "dev": true, -      "dependencies": { -        "ansi-colors": "^1.0.1", -        "archy": "^1.0.0", -        "array-sort": "^1.0.0", -        "color-support": "^1.1.3", -        "concat-stream": "^1.6.0", -        "copy-props": "^2.0.1", -        "fancy-log": "^1.3.2", -        "gulplog": "^1.0.0", -        "interpret": "^1.1.0", -        "isobject": "^3.0.1", -        "liftoff": "^2.5.0", -        "matchdep": "^2.0.0", -        "mute-stdout": "^1.0.0", -        "pretty-hrtime": "^1.0.0", -        "replace-homedir": "^1.0.0", -        "semver-greatest-satisfied-range": "^1.1.0", -        "v8flags": "^3.0.1", -        "yargs": "^7.1.0" -      }, -      "bin": { -        "gulp": "bin/gulp.js" -      }, -      "engines": { -        "node": ">= 0.10" -      } -    },      "node_modules/gulplog": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", @@ -3168,19 +2262,34 @@          "node": ">= 0.10"        }      }, -    "node_modules/has-symbols": { +    "node_modules/has-property-descriptors": {        "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", -      "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", +      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", +      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", +      "dev": true, +      "dependencies": { +        "get-intrinsic": "^1.1.1" +      }, +      "funding": { +        "url": "https://github.com/sponsors/ljharb" +      } +    }, +    "node_modules/has-symbols": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", +      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",        "dev": true,        "engines": {          "node": ">= 0.4" +      }, +      "funding": { +        "url": "https://github.com/sponsors/ljharb"        }      },      "node_modules/has-value": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", -      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", +      "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",        "dev": true,        "dependencies": {          "get-value": "^2.0.6", @@ -3194,7 +2303,7 @@      "node_modules/has-values": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", -      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", +      "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",        "dev": true,        "dependencies": {          "is-number": "^3.0.0", @@ -3207,7 +2316,7 @@      "node_modules/has-values/node_modules/kind-of": {        "version": "4.0.0",        "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", -      "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", +      "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",        "dev": true,        "dependencies": {          "is-buffer": "^1.1.5" @@ -3251,9 +2360,9 @@        }      },      "node_modules/homedir-polyfill": { -      "version": "1.0.1", -      "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", -      "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", +      "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",        "dev": true,        "dependencies": {          "parse-passwd": "^1.0.0" @@ -3263,9 +2372,9 @@        }      },      "node_modules/hosted-git-info": { -      "version": "2.7.1", -      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", -      "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", +      "version": "2.8.9", +      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", +      "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",        "dev": true      },      "node_modules/htmlescape": { @@ -3312,13 +2421,10 @@        "dev": true      },      "node_modules/ini": { -      "version": "1.3.5", -      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", -      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", -      "dev": true, -      "engines": { -        "node": "*" -      } +      "version": "1.3.8", +      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", +      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", +      "dev": true      },      "node_modules/inline-source-map": {        "version": "0.6.2", @@ -3366,15 +2472,18 @@        }      },      "node_modules/interpret": { -      "version": "1.1.0", -      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", -      "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", -      "dev": true +      "version": "1.4.0", +      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", +      "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", +      "dev": true, +      "engines": { +        "node": ">= 0.10" +      }      },      "node_modules/invert-kv": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", -      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", +      "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -3394,25 +2503,22 @@        }      },      "node_modules/is-accessor-descriptor": { -      "version": "0.1.6", -      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", -      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", +      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",        "dev": true,        "dependencies": { -        "kind-of": "^3.0.2" +        "kind-of": "^6.0.0"        },        "engines": {          "node": ">=0.10.0"        }      },      "node_modules/is-accessor-descriptor/node_modules/kind-of": { -      "version": "3.2.2", -      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", -      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", +      "version": "6.0.3", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", +      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",        "dev": true, -      "dependencies": { -        "is-buffer": "^1.1.5" -      },        "engines": {          "node": ">=0.10.0"        } @@ -3426,7 +2532,7 @@      "node_modules/is-binary-path": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", -      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", +      "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",        "dev": true,        "dependencies": {          "binary-extensions": "^1.0.0" @@ -3441,60 +2547,57 @@        "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",        "dev": true      }, -    "node_modules/is-builtin-module": { -      "version": "1.0.0", -      "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", -      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", +    "node_modules/is-core-module": { +      "version": "2.9.0", +      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", +      "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",        "dev": true,        "dependencies": { -        "builtin-modules": "^1.0.0" +        "has": "^1.0.3"        }, -      "engines": { -        "node": ">=0.10.0" +      "funding": { +        "url": "https://github.com/sponsors/ljharb"        }      },      "node_modules/is-data-descriptor": { -      "version": "0.1.4", -      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", -      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", +      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",        "dev": true,        "dependencies": { -        "kind-of": "^3.0.2" +        "kind-of": "^6.0.0"        },        "engines": {          "node": ">=0.10.0"        }      },      "node_modules/is-data-descriptor/node_modules/kind-of": { -      "version": "3.2.2", -      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", -      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", +      "version": "6.0.3", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", +      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",        "dev": true, -      "dependencies": { -        "is-buffer": "^1.1.5" -      },        "engines": {          "node": ">=0.10.0"        }      },      "node_modules/is-descriptor": { -      "version": "0.1.6", -      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", -      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", +      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",        "dev": true,        "dependencies": { -        "is-accessor-descriptor": "^0.1.6", -        "is-data-descriptor": "^0.1.4", -        "kind-of": "^5.0.0" +        "is-accessor-descriptor": "^1.0.0", +        "is-data-descriptor": "^1.0.0", +        "kind-of": "^6.0.2"        },        "engines": {          "node": ">=0.10.0"        }      },      "node_modules/is-descriptor/node_modules/kind-of": { -      "version": "5.1.0", -      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", -      "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", +      "version": "6.0.3", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", +      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -3503,7 +2606,7 @@      "node_modules/is-extendable": {        "version": "0.1.1",        "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", -      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", +      "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -3512,7 +2615,7 @@      "node_modules/is-extglob": {        "version": "2.1.1",        "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", -      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", +      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -3521,7 +2624,7 @@      "node_modules/is-fullwidth-code-point": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", -      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", +      "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",        "dev": true,        "dependencies": {          "number-is-nan": "^1.0.0" @@ -3531,9 +2634,9 @@        }      },      "node_modules/is-glob": { -      "version": "4.0.0", -      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", -      "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", +      "version": "4.0.3", +      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", +      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",        "dev": true,        "dependencies": {          "is-extglob": "^2.1.1" @@ -3545,7 +2648,7 @@      "node_modules/is-negated-glob": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", -      "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", +      "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -3554,7 +2657,7 @@      "node_modules/is-number": {        "version": "3.0.0",        "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", -      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", +      "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",        "dev": true,        "dependencies": {          "kind-of": "^3.0.2" @@ -3566,7 +2669,7 @@      "node_modules/is-number/node_modules/kind-of": {        "version": "3.2.2",        "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", -      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", +      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",        "dev": true,        "dependencies": {          "is-buffer": "^1.1.5" @@ -3576,13 +2679,10 @@        }      },      "node_modules/is-plain-object": { -      "version": "2.0.4", -      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", -      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +      "version": "5.0.0", +      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", +      "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",        "dev": true, -      "dependencies": { -        "isobject": "^3.0.1" -      },        "engines": {          "node": ">=0.10.0"        } @@ -3626,7 +2726,7 @@      "node_modules/is-valid-glob": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", -      "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", +      "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -3650,13 +2750,13 @@      "node_modules/isexe": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", -      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", +      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",        "dev": true      },      "node_modules/isobject": {        "version": "3.0.1",        "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", -      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", +      "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -3671,6 +2771,12 @@          "jsonify": "~0.0.0"        }      }, +    "node_modules/json-stable-stringify-without-jsonify": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", +      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", +      "dev": true +    },      "node_modules/jsonify": {        "version": "0.0.0",        "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", @@ -3703,15 +2809,15 @@        }      },      "node_modules/just-debounce": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", -      "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", +      "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==",        "dev": true      },      "node_modules/kind-of": { -      "version": "6.0.2", -      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", -      "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", +      "version": "5.1.0", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", +      "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -3737,7 +2843,7 @@      "node_modules/last-run": {        "version": "1.1.1",        "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", -      "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", +      "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==",        "dev": true,        "dependencies": {          "default-resolution": "^2.0.0", @@ -3748,9 +2854,9 @@        }      },      "node_modules/lazystream": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", -      "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", +      "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",        "dev": true,        "dependencies": {          "readable-stream": "^2.0.5" @@ -3762,7 +2868,7 @@      "node_modules/lcid": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", -      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", +      "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==",        "dev": true,        "dependencies": {          "invert-kv": "^1.0.0" @@ -3774,7 +2880,7 @@      "node_modules/lead": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", -      "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", +      "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==",        "dev": true,        "dependencies": {          "flush-write-stream": "^1.0.2" @@ -3784,13 +2890,13 @@        }      },      "node_modules/liftoff": { -      "version": "2.5.0", -      "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", -      "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", +      "version": "3.1.0", +      "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", +      "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==",        "dev": true,        "dependencies": {          "extend": "^3.0.0", -        "findup-sync": "^2.0.0", +        "findup-sync": "^3.0.0",          "fined": "^1.0.1",          "flagged-respawn": "^1.0.0",          "is-plain-object": "^2.0.4", @@ -3802,10 +2908,22 @@          "node": ">= 0.8"        }      }, +    "node_modules/liftoff/node_modules/is-plain-object": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +      "dev": true, +      "dependencies": { +        "isobject": "^3.0.1" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    },      "node_modules/load-json-file": {        "version": "1.1.0", -      "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", -      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", +      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", +      "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",        "dev": true,        "dependencies": {          "graceful-fs": "^4.1.2", @@ -3819,15 +2937,9 @@        }      },      "node_modules/lodash": { -      "version": "4.17.11", -      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", -      "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", -      "dev": true -    }, -    "node_modules/lodash.debounce": { -      "version": "4.0.8", -      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", -      "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", +      "version": "4.17.21", +      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", +      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",        "dev": true      },      "node_modules/lodash.memoize": { @@ -3872,10 +2984,19 @@          "node": ">=0.10.0"        }      }, +    "node_modules/make-iterator/node_modules/kind-of": { +      "version": "6.0.3", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", +      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", +      "dev": true, +      "engines": { +        "node": ">=0.10.0" +      } +    },      "node_modules/map-cache": {        "version": "0.2.2",        "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", -      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", +      "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -3884,7 +3005,7 @@      "node_modules/map-visit": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", -      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", +      "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",        "dev": true,        "dependencies": {          "object-visit": "^1.0.0" @@ -3896,7 +3017,7 @@      "node_modules/matchdep": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", -      "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", +      "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==",        "dev": true,        "dependencies": {          "findup-sync": "^2.0.0", @@ -3908,6 +3029,33 @@          "node": ">= 0.10.0"        }      }, +    "node_modules/matchdep/node_modules/findup-sync": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", +      "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", +      "dev": true, +      "dependencies": { +        "detect-file": "^1.0.0", +        "is-glob": "^3.1.0", +        "micromatch": "^3.0.4", +        "resolve-dir": "^1.0.1" +      }, +      "engines": { +        "node": ">= 0.10" +      } +    }, +    "node_modules/matchdep/node_modules/is-glob": { +      "version": "3.1.0", +      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", +      "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", +      "dev": true, +      "dependencies": { +        "is-extglob": "^2.1.0" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    },      "node_modules/md5.js": {        "version": "1.3.5",        "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -3987,6 +3135,52 @@          "node": ">=0.10.0"        }      }, +    "node_modules/micromatch/node_modules/extend-shallow": { +      "version": "3.0.2", +      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", +      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", +      "dev": true, +      "dependencies": { +        "assign-symbols": "^1.0.0", +        "is-extendable": "^1.0.1" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/micromatch/node_modules/is-extendable": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", +      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", +      "dev": true, +      "dependencies": { +        "is-plain-object": "^2.0.4" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/micromatch/node_modules/is-plain-object": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +      "dev": true, +      "dependencies": { +        "isobject": "^3.0.1" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/micromatch/node_modules/kind-of": { +      "version": "6.0.3", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", +      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", +      "dev": true, +      "engines": { +        "node": ">=0.10.0" +      } +    },      "node_modules/miller-rabin": {        "version": "4.0.1",        "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", @@ -4025,15 +3219,15 @@        }      },      "node_modules/minimist": { -      "version": "1.2.0", -      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", -      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", +      "version": "1.2.6", +      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", +      "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",        "dev": true      },      "node_modules/mixin-deep": { -      "version": "1.3.1", -      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", -      "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", +      "version": "1.3.2", +      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", +      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",        "dev": true,        "dependencies": {          "for-in": "^1.0.2", @@ -4055,6 +3249,18 @@          "node": ">=0.10.0"        }      }, +    "node_modules/mixin-deep/node_modules/is-plain-object": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +      "dev": true, +      "dependencies": { +        "isobject": "^3.0.1" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    },      "node_modules/module-deps": {        "version": "4.1.1",        "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz", @@ -4084,6 +3290,12 @@          "node": ">= 0.6"        }      }, +    "node_modules/ms": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", +      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", +      "dev": true +    },      "node_modules/mute-stdout": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", @@ -4094,9 +3306,9 @@        }      },      "node_modules/nan": { -      "version": "2.11.1", -      "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", -      "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", +      "version": "2.16.0", +      "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", +      "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==",        "dev": true,        "optional": true      }, @@ -4122,6 +3334,52 @@          "node": ">=0.10.0"        }      }, +    "node_modules/nanomatch/node_modules/extend-shallow": { +      "version": "3.0.2", +      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", +      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", +      "dev": true, +      "dependencies": { +        "assign-symbols": "^1.0.0", +        "is-extendable": "^1.0.1" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/nanomatch/node_modules/is-extendable": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", +      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", +      "dev": true, +      "dependencies": { +        "is-plain-object": "^2.0.4" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/nanomatch/node_modules/is-plain-object": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +      "dev": true, +      "dependencies": { +        "isobject": "^3.0.1" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/nanomatch/node_modules/kind-of": { +      "version": "6.0.3", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", +      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", +      "dev": true, +      "engines": { +        "node": ">=0.10.0" +      } +    },      "node_modules/next-tick": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -4129,13 +3387,13 @@        "dev": true      },      "node_modules/normalize-package-data": { -      "version": "2.4.0", -      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", -      "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", +      "version": "2.5.0", +      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", +      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",        "dev": true,        "dependencies": {          "hosted-git-info": "^2.1.4", -        "is-builtin-module": "^1.0.0", +        "resolve": "^1.10.0",          "semver": "2 || 3 || 4 || 5",          "validate-npm-package-license": "^3.0.1"        } @@ -4153,9 +3411,9 @@        }      },      "node_modules/now-and-later": { -      "version": "2.0.0", -      "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz", -      "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=", +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", +      "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",        "dev": true,        "dependencies": {          "once": "^1.3.2" @@ -4167,7 +3425,7 @@      "node_modules/number-is-nan": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", -      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", +      "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -4185,7 +3443,7 @@      "node_modules/object-copy": {        "version": "0.1.0",        "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", -      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", +      "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",        "dev": true,        "dependencies": {          "copy-descriptor": "^0.1.0", @@ -4199,7 +3457,7 @@      "node_modules/object-copy/node_modules/define-property": {        "version": "0.2.5",        "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", -      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", +      "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",        "dev": true,        "dependencies": {          "is-descriptor": "^0.1.0" @@ -4208,10 +3466,57 @@          "node": ">=0.10.0"        }      }, +    "node_modules/object-copy/node_modules/is-accessor-descriptor": { +      "version": "0.1.6", +      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", +      "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", +      "dev": true, +      "dependencies": { +        "kind-of": "^3.0.2" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/object-copy/node_modules/is-data-descriptor": { +      "version": "0.1.4", +      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", +      "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", +      "dev": true, +      "dependencies": { +        "kind-of": "^3.0.2" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/object-copy/node_modules/is-descriptor": { +      "version": "0.1.6", +      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", +      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", +      "dev": true, +      "dependencies": { +        "is-accessor-descriptor": "^0.1.6", +        "is-data-descriptor": "^0.1.4", +        "kind-of": "^5.0.0" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { +      "version": "5.1.0", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", +      "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", +      "dev": true, +      "engines": { +        "node": ">=0.10.0" +      } +    },      "node_modules/object-copy/node_modules/kind-of": {        "version": "3.2.2",        "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", -      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", +      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",        "dev": true,        "dependencies": {          "is-buffer": "^1.1.5" @@ -4221,9 +3526,9 @@        }      },      "node_modules/object-keys": { -      "version": "1.0.12", -      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", -      "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", +      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",        "dev": true,        "engines": {          "node": ">= 0.4" @@ -4232,7 +3537,7 @@      "node_modules/object-visit": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", -      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", +      "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",        "dev": true,        "dependencies": {          "isobject": "^3.0.0" @@ -4242,24 +3547,27 @@        }      },      "node_modules/object.assign": { -      "version": "4.1.0", -      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", -      "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", +      "version": "4.1.2", +      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", +      "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",        "dev": true,        "dependencies": { -        "define-properties": "^1.1.2", -        "function-bind": "^1.1.1", -        "has-symbols": "^1.0.0", -        "object-keys": "^1.0.11" +        "call-bind": "^1.0.0", +        "define-properties": "^1.1.3", +        "has-symbols": "^1.0.1", +        "object-keys": "^1.1.1"        },        "engines": {          "node": ">= 0.4" +      }, +      "funding": { +        "url": "https://github.com/sponsors/ljharb"        }      },      "node_modules/object.defaults": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", -      "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", +      "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",        "dev": true,        "dependencies": {          "array-each": "^1.0.1", @@ -4274,7 +3582,7 @@      "node_modules/object.map": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", -      "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", +      "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==",        "dev": true,        "dependencies": {          "for-own": "^1.0.0", @@ -4287,7 +3595,7 @@      "node_modules/object.pick": {        "version": "1.3.0",        "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", -      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", +      "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",        "dev": true,        "dependencies": {          "isobject": "^3.0.1" @@ -4299,7 +3607,7 @@      "node_modules/object.reduce": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", -      "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", +      "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==",        "dev": true,        "dependencies": {          "for-own": "^1.0.0", @@ -4310,9 +3618,9 @@        }      },      "node_modules/once": { -      "version": "1.3.3", -      "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", -      "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", +      "version": "1.4.0", +      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", +      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",        "dev": true,        "dependencies": {          "wrappy": "1" @@ -4321,7 +3629,7 @@      "node_modules/ordered-read-streams": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", -      "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", +      "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==",        "dev": true,        "dependencies": {          "readable-stream": "^2.0.1" @@ -4335,8 +3643,8 @@      },      "node_modules/os-locale": {        "version": "1.4.0", -      "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", -      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", +      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", +      "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==",        "dev": true,        "dependencies": {          "lcid": "^1.0.0" @@ -4376,7 +3684,7 @@      "node_modules/parse-filepath": {        "version": "1.0.2",        "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", -      "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", +      "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",        "dev": true,        "dependencies": {          "is-absolute": "^1.0.0", @@ -4399,10 +3707,19 @@          "node": ">=0.10.0"        }      }, +    "node_modules/parse-node-version": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", +      "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", +      "dev": true, +      "engines": { +        "node": ">= 0.10" +      } +    },      "node_modules/parse-passwd": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", -      "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", +      "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -4411,7 +3728,7 @@      "node_modules/pascalcase": {        "version": "0.1.1",        "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", -      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", +      "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -4426,13 +3743,13 @@      "node_modules/path-dirname": {        "version": "1.0.2",        "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", -      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", +      "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",        "dev": true      },      "node_modules/path-exists": {        "version": "2.1.0",        "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", -      "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", +      "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",        "dev": true,        "dependencies": {          "pinkie-promise": "^2.0.0" @@ -4451,9 +3768,9 @@        }      },      "node_modules/path-parse": { -      "version": "1.0.5", -      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", -      "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", +      "version": "1.0.7", +      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", +      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",        "dev": true      },      "node_modules/path-platform": { @@ -4468,7 +3785,7 @@      "node_modules/path-root": {        "version": "0.1.1",        "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", -      "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", +      "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",        "dev": true,        "dependencies": {          "path-root-regex": "^0.1.0" @@ -4480,7 +3797,7 @@      "node_modules/path-root-regex": {        "version": "0.1.2",        "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", -      "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", +      "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -4489,7 +3806,7 @@      "node_modules/path-type": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", -      "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", +      "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",        "dev": true,        "dependencies": {          "graceful-fs": "^4.1.2", @@ -4518,8 +3835,8 @@      },      "node_modules/pify": {        "version": "2.3.0", -      "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", -      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", +      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", +      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -4528,7 +3845,7 @@      "node_modules/pinkie": {        "version": "2.0.4",        "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", -      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", +      "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -4537,7 +3854,7 @@      "node_modules/pinkie-promise": {        "version": "2.0.1",        "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", -      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", +      "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",        "dev": true,        "dependencies": {          "pinkie": "^2.0.0" @@ -4549,7 +3866,7 @@      "node_modules/posix-character-classes": {        "version": "0.1.1",        "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", -      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", +      "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -4564,7 +3881,7 @@      "node_modules/pretty-hrtime": {        "version": "1.0.3",        "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", -      "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", +      "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",        "dev": true,        "engines": {          "node": ">= 0.8" @@ -4681,7 +3998,7 @@      "node_modules/read-pkg": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", -      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", +      "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",        "dev": true,        "dependencies": {          "load-json-file": "^1.0.0", @@ -4695,7 +4012,7 @@      "node_modules/read-pkg-up": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", -      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", +      "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",        "dev": true,        "dependencies": {          "find-up": "^1.0.0", @@ -4707,7 +4024,7 @@      },      "node_modules/readable-stream": {        "version": "2.3.6", -      "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", +      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",        "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",        "dev": true,        "dependencies": { @@ -4720,12 +4037,6 @@          "util-deprecate": "~1.0.1"        }      }, -    "node_modules/readable-stream/node_modules/isarray": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", -      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", -      "dev": true -    },      "node_modules/readable-stream/node_modules/process-nextick-args": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", @@ -4758,7 +4069,7 @@      "node_modules/rechoir": {        "version": "0.6.2",        "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", -      "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", +      "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",        "dev": true,        "dependencies": {          "resolve": "^1.1.6" @@ -4780,6 +4091,43 @@          "node": ">=0.10.0"        }      }, +    "node_modules/regex-not/node_modules/extend-shallow": { +      "version": "3.0.2", +      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", +      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", +      "dev": true, +      "dependencies": { +        "assign-symbols": "^1.0.0", +        "is-extendable": "^1.0.1" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/regex-not/node_modules/is-extendable": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", +      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", +      "dev": true, +      "dependencies": { +        "is-plain-object": "^2.0.4" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/regex-not/node_modules/is-plain-object": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +      "dev": true, +      "dependencies": { +        "isobject": "^3.0.1" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    },      "node_modules/remove-bom-buffer": {        "version": "3.0.0",        "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", @@ -4796,7 +4144,7 @@      "node_modules/remove-bom-stream": {        "version": "1.2.0",        "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", -      "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", +      "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==",        "dev": true,        "dependencies": {          "remove-bom-buffer": "^3.0.0", @@ -4814,9 +4162,9 @@        "dev": true      },      "node_modules/repeat-element": { -      "version": "1.1.3", -      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", -      "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", +      "version": "1.1.4", +      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", +      "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -4825,7 +4173,7 @@      "node_modules/repeat-string": {        "version": "1.6.1",        "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", -      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", +      "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",        "dev": true,        "engines": {          "node": ">=0.10" @@ -4834,7 +4182,7 @@      "node_modules/replace-homedir": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", -      "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", +      "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==",        "dev": true,        "dependencies": {          "homedir-polyfill": "^1.0.1", @@ -4848,7 +4196,7 @@      "node_modules/require-directory": {        "version": "2.1.1",        "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", -      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", +      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -4857,22 +4205,30 @@      "node_modules/require-main-filename": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", -      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", +      "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==",        "dev": true      },      "node_modules/resolve": { -      "version": "1.4.0", -      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", -      "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", +      "version": "1.22.0", +      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", +      "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",        "dev": true,        "dependencies": { -        "path-parse": "^1.0.5" +        "is-core-module": "^2.8.1", +        "path-parse": "^1.0.7", +        "supports-preserve-symlinks-flag": "^1.0.0" +      }, +      "bin": { +        "resolve": "bin/resolve" +      }, +      "funding": { +        "url": "https://github.com/sponsors/ljharb"        }      },      "node_modules/resolve-dir": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", -      "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", +      "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",        "dev": true,        "dependencies": {          "expand-tilde": "^2.0.0", @@ -4885,7 +4241,7 @@      "node_modules/resolve-options": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", -      "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", +      "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==",        "dev": true,        "dependencies": {          "value-or-function": "^3.0.0" @@ -4928,7 +4284,7 @@      "node_modules/safe-regex": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", -      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", +      "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",        "dev": true,        "dependencies": {          "ret": "~0.1.10" @@ -4946,7 +4302,7 @@      "node_modules/semver-greatest-satisfied-range": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", -      "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", +      "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==",        "dev": true,        "dependencies": {          "sver-compat": "^1.5.0" @@ -4958,13 +4314,13 @@      "node_modules/set-blocking": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", -      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", +      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",        "dev": true      },      "node_modules/set-value": { -      "version": "2.0.0", -      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", -      "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", +      "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",        "dev": true,        "dependencies": {          "extend-shallow": "^2.0.1", @@ -4976,13 +4332,13 @@          "node": ">=0.10.0"        }      }, -    "node_modules/set-value/node_modules/extend-shallow": { -      "version": "2.0.1", -      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", -      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", +    "node_modules/set-value/node_modules/is-plain-object": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",        "dev": true,        "dependencies": { -        "is-extendable": "^0.1.0" +        "isobject": "^3.0.1"        },        "engines": {          "node": ">=0.10.0" @@ -5012,16 +4368,10 @@        }      },      "node_modules/shell-quote": { -      "version": "1.6.1", -      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", -      "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", -      "dev": true, -      "dependencies": { -        "array-filter": "~0.0.0", -        "array-map": "~0.0.0", -        "array-reduce": "~0.0.0", -        "jsonify": "~0.0.0" -      } +      "version": "1.7.3", +      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", +      "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", +      "dev": true      },      "node_modules/simple-concat": {        "version": "1.0.0", @@ -5065,7 +4415,7 @@      "node_modules/snapdragon-node/node_modules/define-property": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", -      "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", +      "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",        "dev": true,        "dependencies": {          "is-descriptor": "^1.0.0" @@ -5074,60 +4424,58 @@          "node": ">=0.10.0"        }      }, -    "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", -      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", +    "node_modules/snapdragon-util": { +      "version": "3.0.1", +      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", +      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",        "dev": true,        "dependencies": { -        "kind-of": "^6.0.0" +        "kind-of": "^3.2.0"        },        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/snapdragon-node/node_modules/is-data-descriptor": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", -      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", +    "node_modules/snapdragon-util/node_modules/kind-of": { +      "version": "3.2.2", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",        "dev": true,        "dependencies": { -        "kind-of": "^6.0.0" +        "is-buffer": "^1.1.5"        },        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/snapdragon-node/node_modules/is-descriptor": { -      "version": "1.0.2", -      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", -      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", +    "node_modules/snapdragon/node_modules/define-property": { +      "version": "0.2.5", +      "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", +      "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",        "dev": true,        "dependencies": { -        "is-accessor-descriptor": "^1.0.0", -        "is-data-descriptor": "^1.0.0", -        "kind-of": "^6.0.2" +        "is-descriptor": "^0.1.0"        },        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/snapdragon-util": { -      "version": "3.0.1", -      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", -      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", +    "node_modules/snapdragon/node_modules/is-accessor-descriptor": { +      "version": "0.1.6", +      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", +      "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",        "dev": true,        "dependencies": { -        "kind-of": "^3.2.0" +        "kind-of": "^3.0.2"        },        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/snapdragon-util/node_modules/kind-of": { +    "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": {        "version": "3.2.2",        "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", -      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", +      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",        "dev": true,        "dependencies": {          "is-buffer": "^1.1.5" @@ -5136,61 +4484,44 @@          "node": ">=0.10.0"        }      }, -    "node_modules/snapdragon/node_modules/atob": { -      "version": "2.1.2", -      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", -      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", +    "node_modules/snapdragon/node_modules/is-data-descriptor": { +      "version": "0.1.4", +      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", +      "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",        "dev": true, -      "bin": { -        "atob": "bin/atob.js" +      "dependencies": { +        "kind-of": "^3.0.2"        },        "engines": { -        "node": ">= 4.5.0" +        "node": ">=0.10.0"        }      }, -    "node_modules/snapdragon/node_modules/define-property": { -      "version": "0.2.5", -      "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", -      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", +    "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { +      "version": "3.2.2", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",        "dev": true,        "dependencies": { -        "is-descriptor": "^0.1.0" +        "is-buffer": "^1.1.5"        },        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/snapdragon/node_modules/extend-shallow": { -      "version": "2.0.1", -      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", -      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", +    "node_modules/snapdragon/node_modules/is-descriptor": { +      "version": "0.1.6", +      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", +      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",        "dev": true,        "dependencies": { -        "is-extendable": "^0.1.0" +        "is-accessor-descriptor": "^0.1.6", +        "is-data-descriptor": "^0.1.4", +        "kind-of": "^5.0.0"        },        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/snapdragon/node_modules/source-map-resolve": { -      "version": "0.5.2", -      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", -      "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", -      "dev": true, -      "dependencies": { -        "atob": "^2.1.1", -        "decode-uri-component": "^0.2.0", -        "resolve-url": "^0.2.1", -        "source-map-url": "^0.4.0", -        "urix": "^0.1.0" -      } -    }, -    "node_modules/snapdragon/node_modules/source-map-url": { -      "version": "0.4.0", -      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", -      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", -      "dev": true -    },      "node_modules/source-map": {        "version": "0.5.7",        "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -5229,9 +4560,9 @@        }      },      "node_modules/spdx-correct": { -      "version": "3.0.2", -      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", -      "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", +      "version": "3.1.1", +      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", +      "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",        "dev": true,        "dependencies": {          "spdx-expression-parse": "^3.0.0", @@ -5239,15 +4570,15 @@        }      },      "node_modules/spdx-exceptions": { -      "version": "2.2.0", -      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", -      "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", +      "version": "2.3.0", +      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", +      "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",        "dev": true      },      "node_modules/spdx-expression-parse": { -      "version": "3.0.0", -      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", -      "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", +      "version": "3.0.1", +      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", +      "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",        "dev": true,        "dependencies": {          "spdx-exceptions": "^2.1.0", @@ -5255,9 +4586,9 @@        }      },      "node_modules/spdx-license-ids": { -      "version": "3.0.1", -      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", -      "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", +      "version": "3.0.11", +      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", +      "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",        "dev": true      },      "node_modules/split-string": { @@ -5272,10 +4603,47 @@          "node": ">=0.10.0"        }      }, +    "node_modules/split-string/node_modules/extend-shallow": { +      "version": "3.0.2", +      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", +      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", +      "dev": true, +      "dependencies": { +        "assign-symbols": "^1.0.0", +        "is-extendable": "^1.0.1" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/split-string/node_modules/is-extendable": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", +      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", +      "dev": true, +      "dependencies": { +        "is-plain-object": "^2.0.4" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/split-string/node_modules/is-plain-object": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +      "dev": true, +      "dependencies": { +        "isobject": "^3.0.1" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    },      "node_modules/stack-trace": {        "version": "0.0.10",        "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", -      "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", +      "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",        "dev": true,        "engines": {          "node": "*" @@ -5284,7 +4652,7 @@      "node_modules/static-extend": {        "version": "0.1.2",        "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", -      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", +      "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",        "dev": true,        "dependencies": {          "define-property": "^0.2.5", @@ -5297,7 +4665,7 @@      "node_modules/static-extend/node_modules/define-property": {        "version": "0.2.5",        "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", -      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", +      "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",        "dev": true,        "dependencies": {          "is-descriptor": "^0.1.0" @@ -5306,6 +4674,68 @@          "node": ">=0.10.0"        }      }, +    "node_modules/static-extend/node_modules/is-accessor-descriptor": { +      "version": "0.1.6", +      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", +      "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", +      "dev": true, +      "dependencies": { +        "kind-of": "^3.0.2" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { +      "version": "3.2.2", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", +      "dev": true, +      "dependencies": { +        "is-buffer": "^1.1.5" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/static-extend/node_modules/is-data-descriptor": { +      "version": "0.1.4", +      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", +      "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", +      "dev": true, +      "dependencies": { +        "kind-of": "^3.0.2" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { +      "version": "3.2.2", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", +      "dev": true, +      "dependencies": { +        "is-buffer": "^1.1.5" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/static-extend/node_modules/is-descriptor": { +      "version": "0.1.6", +      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", +      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", +      "dev": true, +      "dependencies": { +        "is-accessor-descriptor": "^0.1.6", +        "is-data-descriptor": "^0.1.4", +        "kind-of": "^5.0.0" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    },      "node_modules/stream-browserify": {        "version": "2.0.1",        "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", @@ -5346,9 +4776,9 @@        }      },      "node_modules/stream-shift": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", -      "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", +      "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",        "dev": true      },      "node_modules/stream-splicer": { @@ -5373,7 +4803,7 @@      "node_modules/string-width": {        "version": "1.0.2",        "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", -      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", +      "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",        "dev": true,        "dependencies": {          "code-point-at": "^1.0.0", @@ -5387,7 +4817,7 @@      "node_modules/strip-ansi": {        "version": "3.0.1",        "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", -      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", +      "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",        "dev": true,        "dependencies": {          "ansi-regex": "^2.0.0" @@ -5435,10 +4865,22 @@          "minimist": "^1.1.0"        }      }, +    "node_modules/supports-preserve-symlinks-flag": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", +      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", +      "dev": true, +      "engines": { +        "node": ">= 0.4" +      }, +      "funding": { +        "url": "https://github.com/sponsors/ljharb" +      } +    },      "node_modules/sver-compat": {        "version": "1.5.0",        "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", -      "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", +      "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==",        "dev": true,        "dependencies": {          "es6-iterator": "^2.0.1", @@ -5471,49 +4913,19 @@        }      },      "node_modules/through2-filter": { -      "version": "2.0.0", -      "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", -      "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", +      "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",        "dev": true,        "dependencies": {          "through2": "~2.0.0",          "xtend": "~4.0.0"        }      }, -    "node_modules/through2/node_modules/isarray": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", -      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", -      "dev": true -    }, -    "node_modules/through2/node_modules/readable-stream": { -      "version": "2.3.3", -      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", -      "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", -      "dev": true, -      "dependencies": { -        "core-util-is": "~1.0.0", -        "inherits": "~2.0.3", -        "isarray": "~1.0.0", -        "process-nextick-args": "~1.0.6", -        "safe-buffer": "~5.1.1", -        "string_decoder": "~1.0.3", -        "util-deprecate": "~1.0.1" -      } -    }, -    "node_modules/through2/node_modules/string_decoder": { -      "version": "1.0.3", -      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", -      "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", -      "dev": true, -      "dependencies": { -        "safe-buffer": "~5.1.0" -      } -    },      "node_modules/time-stamp": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", -      "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", +      "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -5566,7 +4978,7 @@      "node_modules/to-absolute-glob": {        "version": "2.0.2",        "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", -      "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", +      "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==",        "dev": true,        "dependencies": {          "is-absolute": "^1.0.0", @@ -5585,7 +4997,7 @@      "node_modules/to-object-path": {        "version": "0.3.0",        "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", -      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", +      "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",        "dev": true,        "dependencies": {          "kind-of": "^3.0.2" @@ -5597,7 +5009,7 @@      "node_modules/to-object-path/node_modules/kind-of": {        "version": "3.2.2",        "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", -      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", +      "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",        "dev": true,        "dependencies": {          "is-buffer": "^1.1.5" @@ -5624,7 +5036,7 @@      "node_modules/to-regex-range": {        "version": "2.1.1",        "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", -      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", +      "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",        "dev": true,        "dependencies": {          "is-number": "^3.0.0", @@ -5634,10 +5046,47 @@          "node": ">=0.10.0"        }      }, +    "node_modules/to-regex/node_modules/extend-shallow": { +      "version": "3.0.2", +      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", +      "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", +      "dev": true, +      "dependencies": { +        "assign-symbols": "^1.0.0", +        "is-extendable": "^1.0.1" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/to-regex/node_modules/is-extendable": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", +      "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", +      "dev": true, +      "dependencies": { +        "is-plain-object": "^2.0.4" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    }, +    "node_modules/to-regex/node_modules/is-plain-object": { +      "version": "2.0.4", +      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +      "dev": true, +      "dependencies": { +        "isobject": "^3.0.1" +      }, +      "engines": { +        "node": ">=0.10.0" +      } +    },      "node_modules/to-through": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", -      "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", +      "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==",        "dev": true,        "dependencies": {          "through2": "^2.0.3" @@ -5737,7 +5186,7 @@      "node_modules/unc-path-regex": {        "version": "0.1.2",        "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", -      "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", +      "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",        "dev": true,        "engines": {          "node": ">=0.10.0" @@ -5759,9 +5208,9 @@        }      },      "node_modules/undertaker": { -      "version": "1.2.0", -      "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.0.tgz", -      "integrity": "sha1-M52kZGJS0ILcN45wgGcpl1DhG0k=", +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", +      "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==",        "dev": true,        "dependencies": {          "arr-flatten": "^1.0.1", @@ -5769,6 +5218,7 @@          "bach": "^1.0.0",          "collection-map": "^1.0.0",          "es6-weak-map": "^2.0.1", +        "fast-levenshtein": "^1.0.0",          "last-run": "^1.1.0",          "object.defaults": "^1.0.0",          "object.reduce": "^1.0.0", @@ -5781,77 +5231,41 @@      "node_modules/undertaker-registry": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", -      "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", +      "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==",        "dev": true,        "engines": {          "node": ">= 0.10"        }      },      "node_modules/union-value": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", -      "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", +      "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",        "dev": true,        "dependencies": {          "arr-union": "^3.1.0",          "get-value": "^2.0.6",          "is-extendable": "^0.1.1", -        "set-value": "^0.4.3" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/union-value/node_modules/extend-shallow": { -      "version": "2.0.1", -      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", -      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", -      "dev": true, -      "dependencies": { -        "is-extendable": "^0.1.0" -      }, -      "engines": { -        "node": ">=0.10.0" -      } -    }, -    "node_modules/union-value/node_modules/set-value": { -      "version": "0.4.3", -      "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", -      "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", -      "dev": true, -      "dependencies": { -        "extend-shallow": "^2.0.1", -        "is-extendable": "^0.1.1", -        "is-plain-object": "^2.0.1", -        "to-object-path": "^0.3.0" +        "set-value": "^2.0.1"        },        "engines": {          "node": ">=0.10.0"        }      },      "node_modules/unique-stream": { -      "version": "2.2.1", -      "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", -      "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", -      "dev": true, -      "dependencies": { -        "json-stable-stringify": "^1.0.0", -        "through2-filter": "^2.0.0" -      } -    }, -    "node_modules/unique-stream/node_modules/json-stable-stringify": { -      "version": "1.0.1", -      "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", -      "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", +      "version": "2.3.1", +      "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", +      "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",        "dev": true,        "dependencies": { -        "jsonify": "~0.0.0" +        "json-stable-stringify-without-jsonify": "^1.0.1", +        "through2-filter": "^3.0.0"        }      },      "node_modules/unset-value": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", -      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", +      "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",        "dev": true,        "dependencies": {          "has-value": "^0.3.1", @@ -5864,7 +5278,7 @@      "node_modules/unset-value/node_modules/has-value": {        "version": "0.3.1",        "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", -      "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", +      "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",        "dev": true,        "dependencies": {          "get-value": "^2.0.3", @@ -5878,7 +5292,7 @@      "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {        "version": "2.1.0",        "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", -      "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", +      "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",        "dev": true,        "dependencies": {          "isarray": "1.0.0" @@ -5890,25 +5304,20 @@      "node_modules/unset-value/node_modules/has-values": {        "version": "0.1.4",        "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", -      "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", +      "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",        "dev": true,        "engines": {          "node": ">=0.10.0"        }      }, -    "node_modules/unset-value/node_modules/isarray": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", -      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", -      "dev": true -    },      "node_modules/upath": { -      "version": "1.1.0", -      "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", -      "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", +      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",        "dev": true,        "engines": { -        "node": ">=4" +        "node": ">=4", +        "yarn": "*"        }      },      "node_modules/urix": { @@ -5958,15 +5367,15 @@        "dev": true      },      "node_modules/v8flags": { -      "version": "3.1.1", -      "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.1.tgz", -      "integrity": "sha512-iw/1ViSEaff8NJ3HLyEjawk/8hjJib3E7pvG4pddVXfUg1983s3VGsiClDjhK64MQVDGqc1Q8r18S4VKQZS9EQ==", +      "version": "3.2.0", +      "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", +      "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",        "dev": true,        "dependencies": {          "homedir-polyfill": "^1.0.1"        },        "engines": { -        "node": ">= 0.10.0" +        "node": ">= 0.10"        }      },      "node_modules/validate-npm-package-license": { @@ -5982,7 +5391,7 @@      "node_modules/value-or-function": {        "version": "3.0.0",        "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", -      "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", +      "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==",        "dev": true,        "engines": {          "node": ">= 0.10" @@ -6056,7 +5465,7 @@      "node_modules/vinyl-sourcemap": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", -      "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", +      "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==",        "dev": true,        "dependencies": {          "append-buffer": "^1.0.2", @@ -6072,9 +5481,9 @@        }      },      "node_modules/vinyl-sourcemap/node_modules/convert-source-map": { -      "version": "1.6.0", -      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", -      "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", +      "version": "1.8.0", +      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", +      "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",        "dev": true,        "dependencies": {          "safe-buffer": "~5.1.1" @@ -6137,13 +5546,13 @@      "node_modules/which-module": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", -      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", +      "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==",        "dev": true      },      "node_modules/wrap-ansi": {        "version": "2.1.0", -      "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", -      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", +      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", +      "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==",        "dev": true,        "dependencies": {          "string-width": "^1.0.1", @@ -6169,15 +5578,15 @@        }      },      "node_modules/y18n": { -      "version": "3.2.1", -      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", -      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", +      "version": "3.2.2", +      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", +      "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",        "dev": true      },      "node_modules/yargs": { -      "version": "7.1.0", -      "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", -      "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", +      "version": "7.1.2", +      "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", +      "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==",        "dev": true,        "dependencies": {          "camelcase": "^3.0.0", @@ -6192,16 +5601,17 @@          "string-width": "^1.0.2",          "which-module": "^1.0.0",          "y18n": "^3.2.1", -        "yargs-parser": "^5.0.0" +        "yargs-parser": "^5.0.1"        }      },      "node_modules/yargs-parser": { -      "version": "5.0.0", -      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", -      "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", +      "version": "5.0.1", +      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", +      "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==",        "dev": true,        "dependencies": { -        "camelcase": "^3.0.0" +        "camelcase": "^3.0.0", +        "object.assign": "^4.1.0"        }      }    }, @@ -6244,9 +5654,9 @@        }      },      "acorn": { -      "version": "6.4.1", -      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", -      "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", +      "version": "6.4.2", +      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", +      "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",        "dev": true      },      "acorn-dynamic-import": { @@ -6275,7 +5685,7 @@      },      "ansi-colors": {        "version": "1.1.0", -      "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", +      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",        "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",        "dev": true,        "requires": { @@ -6285,7 +5695,7 @@      "ansi-gray": {        "version": "0.1.1",        "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", -      "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", +      "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==",        "dev": true,        "requires": {          "ansi-wrap": "0.1.0" @@ -6294,13 +5704,13 @@      "ansi-regex": {        "version": "2.1.1",        "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", -      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", +      "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",        "dev": true      },      "ansi-wrap": {        "version": "0.1.0",        "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", -      "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", +      "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==",        "dev": true      },      "any-promise": { @@ -6322,7 +5732,7 @@      "append-buffer": {        "version": "1.0.2",        "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", -      "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", +      "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==",        "dev": true,        "requires": {          "buffer-equal": "^1.0.0" @@ -6331,19 +5741,19 @@      "archy": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", -      "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", +      "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",        "dev": true      },      "arr-diff": {        "version": "4.0.0",        "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", -      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", +      "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",        "dev": true      },      "arr-filter": {        "version": "1.1.2",        "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", -      "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", +      "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==",        "dev": true,        "requires": {          "make-iterator": "^1.0.0" @@ -6358,7 +5768,7 @@      "arr-map": {        "version": "2.0.2",        "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", -      "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", +      "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==",        "dev": true,        "requires": {          "make-iterator": "^1.0.0" @@ -6367,25 +5777,19 @@      "arr-union": {        "version": "3.1.0",        "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", -      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", +      "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",        "dev": true      },      "array-each": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", -      "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", -      "dev": true -    }, -    "array-filter": { -      "version": "0.0.1", -      "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", -      "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", +      "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",        "dev": true      },      "array-initial": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", -      "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", +      "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==",        "dev": true,        "requires": {          "array-slice": "^1.0.0", @@ -6417,18 +5821,6 @@          }        }      }, -    "array-map": { -      "version": "0.0.0", -      "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", -      "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", -      "dev": true -    }, -    "array-reduce": { -      "version": "0.0.0", -      "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", -      "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", -      "dev": true -    },      "array-slice": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", @@ -6444,20 +5836,12 @@          "default-compare": "^1.0.0",          "get-value": "^2.0.6",          "kind-of": "^5.0.2" -      }, -      "dependencies": { -        "kind-of": { -          "version": "5.1.0", -          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", -          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", -          "dev": true -        }        }      },      "array-unique": {        "version": "0.3.2",        "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", -      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", +      "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",        "dev": true      },      "asn1.js": { @@ -6500,19 +5884,27 @@      "assign-symbols": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", -      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", +      "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",        "dev": true      },      "async-done": { -      "version": "1.3.1", -      "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.1.tgz", -      "integrity": "sha512-R1BaUeJ4PMoLNJuk+0tLJgjmEqVsdN118+Z8O+alhnQDQgy0kmD5Mqi0DNEmMx2LM0Ed5yekKu+ZXYvIHceicg==", +      "version": "1.3.2", +      "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", +      "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==",        "dev": true,        "requires": {          "end-of-stream": "^1.1.0",          "once": "^1.3.2", -        "process-nextick-args": "^1.0.7", +        "process-nextick-args": "^2.0.0",          "stream-exhaust": "^1.0.1" +      }, +      "dependencies": { +        "process-nextick-args": { +          "version": "2.0.1", +          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", +          "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", +          "dev": true +        }        }      },      "async-each": { @@ -6524,7 +5916,7 @@      "async-settle": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", -      "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", +      "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==",        "dev": true,        "requires": {          "async-done": "^1.2.2" @@ -6539,7 +5931,7 @@      "bach": {        "version": "1.2.0",        "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", -      "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", +      "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==",        "dev": true,        "requires": {          "arr-filter": "^1.1.1", @@ -6577,40 +5969,11 @@          "define-property": {            "version": "1.0.0",            "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", -          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", +          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",            "dev": true,            "requires": {              "is-descriptor": "^1.0.0"            } -        }, -        "is-accessor-descriptor": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", -          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", -          "dev": true, -          "requires": { -            "kind-of": "^6.0.0" -          } -        }, -        "is-data-descriptor": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", -          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", -          "dev": true, -          "requires": { -            "kind-of": "^6.0.0" -          } -        }, -        "is-descriptor": { -          "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", -          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", -          "dev": true, -          "requires": { -            "is-accessor-descriptor": "^1.0.0", -            "is-data-descriptor": "^1.0.0", -            "kind-of": "^6.0.2" -          }          }        }      }, @@ -6638,7 +6001,7 @@      },      "bl": {        "version": "1.2.3", -      "resolved": "http://registry.npmjs.org/bl/-/bl-1.2.3.tgz", +      "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",        "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",        "dev": true,        "requires": { @@ -6647,9 +6010,9 @@        }      },      "bn.js": { -      "version": "4.11.8", -      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", -      "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", +      "version": "4.12.0", +      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", +      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",        "dev": true      },      "brace-expansion": { @@ -6678,17 +6041,6 @@          "snapdragon-node": "^2.0.1",          "split-string": "^3.0.2",          "to-regex": "^3.0.1" -      }, -      "dependencies": { -        "extend-shallow": { -          "version": "2.0.1", -          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", -          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", -          "dev": true, -          "requires": { -            "is-extendable": "^0.1.0" -          } -        }        }      },      "brorand": { @@ -6875,7 +6227,7 @@      "buffer-equal": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", -      "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", +      "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==",        "dev": true      },      "buffer-from": { @@ -6890,12 +6242,6 @@        "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",        "dev": true      }, -    "builtin-modules": { -      "version": "1.1.1", -      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", -      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", -      "dev": true -    },      "builtin-status-codes": {        "version": "3.0.0",        "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -6920,15 +6266,25 @@        }      },      "cached-path-relative": { -      "version": "1.0.2", -      "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz", -      "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==", +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", +      "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==",        "dev": true      }, +    "call-bind": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", +      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", +      "dev": true, +      "requires": { +        "function-bind": "^1.1.1", +        "get-intrinsic": "^1.0.2" +      } +    },      "camelcase": {        "version": "3.0.0",        "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", -      "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", +      "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==",        "dev": true      },      "chokidar": { @@ -6984,18 +6340,69 @@          "define-property": {            "version": "0.2.5",            "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", -          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", +          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",            "dev": true,            "requires": {              "is-descriptor": "^0.1.0"            } +        }, +        "is-accessor-descriptor": { +          "version": "0.1.6", +          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", +          "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", +          "dev": true, +          "requires": { +            "kind-of": "^3.0.2" +          }, +          "dependencies": { +            "kind-of": { +              "version": "3.2.2", +              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", +              "dev": true, +              "requires": { +                "is-buffer": "^1.1.5" +              } +            } +          } +        }, +        "is-data-descriptor": { +          "version": "0.1.4", +          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", +          "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", +          "dev": true, +          "requires": { +            "kind-of": "^3.0.2" +          }, +          "dependencies": { +            "kind-of": { +              "version": "3.2.2", +              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", +              "dev": true, +              "requires": { +                "is-buffer": "^1.1.5" +              } +            } +          } +        }, +        "is-descriptor": { +          "version": "0.1.6", +          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", +          "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", +          "dev": true, +          "requires": { +            "is-accessor-descriptor": "^0.1.6", +            "is-data-descriptor": "^0.1.4", +            "kind-of": "^5.0.0" +          }          }        }      },      "cliui": {        "version": "3.2.0",        "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", -      "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", +      "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==",        "dev": true,        "requires": {          "string-width": "^1.0.1", @@ -7031,13 +6438,13 @@      "code-point-at": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", -      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", +      "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",        "dev": true      },      "collection-map": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", -      "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", +      "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==",        "dev": true,        "requires": {          "arr-map": "^2.0.2", @@ -7048,7 +6455,7 @@      "collection-visit": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", -      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", +      "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",        "dev": true,        "requires": {          "map-visit": "^1.0.0", @@ -7080,9 +6487,9 @@        "dev": true      },      "component-emitter": { -      "version": "1.2.1", -      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", -      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", +      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",        "dev": true      },      "concat-map": { @@ -7148,17 +6555,17 @@      "copy-descriptor": {        "version": "0.1.1",        "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", -      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", +      "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",        "dev": true      },      "copy-props": { -      "version": "2.0.4", -      "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", -      "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", +      "version": "2.0.5", +      "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", +      "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==",        "dev": true,        "requires": { -        "each-props": "^1.3.0", -        "is-plain-object": "^2.0.1" +        "each-props": "^1.3.2", +        "is-plain-object": "^5.0.0"        }      },      "core-util-is": { @@ -7265,14 +6672,6 @@        "dev": true,        "requires": {          "ms": "2.0.0" -      }, -      "dependencies": { -        "ms": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", -          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", -          "dev": true -        }        }      },      "debug-fabulous": { @@ -7306,7 +6705,7 @@      "decamelize": {        "version": "1.2.0",        "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", -      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", +      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",        "dev": true      },      "decode-uri-component": { @@ -7322,29 +6721,22 @@        "dev": true,        "requires": {          "kind-of": "^5.0.2" -      }, -      "dependencies": { -        "kind-of": { -          "version": "5.1.0", -          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", -          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", -          "dev": true -        }        }      },      "default-resolution": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", -      "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", +      "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==",        "dev": true      },      "define-properties": { -      "version": "1.1.3", -      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", -      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", +      "version": "1.1.4", +      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", +      "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",        "dev": true,        "requires": { -        "object-keys": "^1.0.12" +        "has-property-descriptors": "^1.0.0", +        "object-keys": "^1.1.1"        }      },      "define-property": { @@ -7355,37 +6747,6 @@        "requires": {          "is-descriptor": "^1.0.2",          "isobject": "^3.0.1" -      }, -      "dependencies": { -        "is-accessor-descriptor": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", -          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", -          "dev": true, -          "requires": { -            "kind-of": "^6.0.0" -          } -        }, -        "is-data-descriptor": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", -          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", -          "dev": true, -          "requires": { -            "kind-of": "^6.0.0" -          } -        }, -        "is-descriptor": { -          "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", -          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", -          "dev": true, -          "requires": { -            "is-accessor-descriptor": "^1.0.0", -            "is-data-descriptor": "^1.0.0", -            "kind-of": "^6.0.2" -          } -        }        }      },      "defined": { @@ -7419,7 +6780,7 @@      "detect-file": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", -      "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", +      "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",        "dev": true      },      "detect-newline": { @@ -7473,9 +6834,9 @@        }      },      "duplexify": { -      "version": "3.6.1", -      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", -      "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", +      "version": "3.7.1", +      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", +      "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",        "dev": true,        "requires": {          "end-of-stream": "^1.0.0", @@ -7492,41 +6853,49 @@        "requires": {          "is-plain-object": "^2.0.1",          "object.defaults": "^1.1.0" +      }, +      "dependencies": { +        "is-plain-object": { +          "version": "2.0.4", +          "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +          "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +          "dev": true, +          "requires": { +            "isobject": "^3.0.1" +          } +        }        }      },      "elliptic": { -      "version": "6.5.3", -      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", -      "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", +      "version": "6.5.4", +      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", +      "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",        "dev": true,        "requires": { -        "bn.js": "^4.4.0", -        "brorand": "^1.0.1", +        "bn.js": "^4.11.9", +        "brorand": "^1.1.0",          "hash.js": "^1.0.0", -        "hmac-drbg": "^1.0.0", -        "inherits": "^2.0.1", -        "minimalistic-assert": "^1.0.0", -        "minimalistic-crypto-utils": "^1.0.0" +        "hmac-drbg": "^1.0.1", +        "inherits": "^2.0.4", +        "minimalistic-assert": "^1.0.1", +        "minimalistic-crypto-utils": "^1.0.1" +      }, +      "dependencies": { +        "inherits": { +          "version": "2.0.4", +          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", +          "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", +          "dev": true +        }        }      },      "end-of-stream": { -      "version": "1.4.1", -      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", -      "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", +      "version": "1.4.4", +      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", +      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",        "dev": true,        "requires": {          "once": "^1.4.0" -      }, -      "dependencies": { -        "once": { -          "version": "1.4.0", -          "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", -          "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", -          "dev": true, -          "requires": { -            "wrappy": "1" -          } -        }        }      },      "error-ex": { @@ -7610,7 +6979,7 @@      "expand-brackets": {        "version": "2.1.4",        "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", -      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", +      "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",        "dev": true,        "requires": {          "debug": "^2.3.3", @@ -7622,45 +6991,72 @@          "to-regex": "^3.0.1"        },        "dependencies": { -        "debug": { -          "version": "2.6.9", -          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", -          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", -          "dev": true, -          "requires": { -            "ms": "2.0.0" -          } -        },          "define-property": {            "version": "0.2.5",            "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", -          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", +          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",            "dev": true,            "requires": {              "is-descriptor": "^0.1.0"            }          }, -        "extend-shallow": { -          "version": "2.0.1", -          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", -          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", +        "is-accessor-descriptor": { +          "version": "0.1.6", +          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", +          "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",            "dev": true,            "requires": { -            "is-extendable": "^0.1.0" +            "kind-of": "^3.0.2" +          }, +          "dependencies": { +            "kind-of": { +              "version": "3.2.2", +              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", +              "dev": true, +              "requires": { +                "is-buffer": "^1.1.5" +              } +            }            }          }, -        "ms": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", -          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", -          "dev": true +        "is-data-descriptor": { +          "version": "0.1.4", +          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", +          "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", +          "dev": true, +          "requires": { +            "kind-of": "^3.0.2" +          }, +          "dependencies": { +            "kind-of": { +              "version": "3.2.2", +              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", +              "dev": true, +              "requires": { +                "is-buffer": "^1.1.5" +              } +            } +          } +        }, +        "is-descriptor": { +          "version": "0.1.6", +          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", +          "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", +          "dev": true, +          "requires": { +            "is-accessor-descriptor": "^0.1.6", +            "is-data-descriptor": "^0.1.4", +            "kind-of": "^5.0.0" +          }          }        }      },      "expand-tilde": {        "version": "2.0.2",        "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", -      "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", +      "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",        "dev": true,        "requires": {          "homedir-polyfill": "^1.0.1" @@ -7673,24 +7069,12 @@        "dev": true      },      "extend-shallow": { -      "version": "3.0.2", -      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", -      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", +      "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",        "dev": true,        "requires": { -        "assign-symbols": "^1.0.0", -        "is-extendable": "^1.0.1" -      }, -      "dependencies": { -        "is-extendable": { -          "version": "1.0.1", -          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", -          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", -          "dev": true, -          "requires": { -            "is-plain-object": "^2.0.4" -          } -        } +        "is-extendable": "^0.1.0"        }      },      "extglob": { @@ -7712,63 +7096,32 @@          "define-property": {            "version": "1.0.0",            "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", -          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", +          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",            "dev": true,            "requires": {              "is-descriptor": "^1.0.0"            } -        }, -        "extend-shallow": { -          "version": "2.0.1", -          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", -          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", -          "dev": true, -          "requires": { -            "is-extendable": "^0.1.0" -          } -        }, -        "is-accessor-descriptor": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", -          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", -          "dev": true, -          "requires": { -            "kind-of": "^6.0.0" -          } -        }, -        "is-data-descriptor": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", -          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", -          "dev": true, -          "requires": { -            "kind-of": "^6.0.0" -          } -        }, -        "is-descriptor": { -          "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", -          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", -          "dev": true, -          "requires": { -            "is-accessor-descriptor": "^1.0.0", -            "is-data-descriptor": "^1.0.0", -            "kind-of": "^6.0.2" -          }          }        }      },      "fancy-log": { -      "version": "1.3.2", -      "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", -      "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", +      "version": "1.3.3", +      "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", +      "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",        "dev": true,        "requires": {          "ansi-gray": "^0.1.1",          "color-support": "^1.1.3", +        "parse-node-version": "^1.0.0",          "time-stamp": "^1.0.0"        }      }, +    "fast-levenshtein": { +      "version": "1.1.4", +      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", +      "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==", +      "dev": true +    },      "file-uri-to-path": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -7779,30 +7132,19 @@      "fill-range": {        "version": "4.0.0",        "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", -      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", +      "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",        "dev": true,        "requires": {          "extend-shallow": "^2.0.1",          "is-number": "^3.0.0",          "repeat-string": "^1.6.1",          "to-regex-range": "^2.1.0" -      }, -      "dependencies": { -        "extend-shallow": { -          "version": "2.0.1", -          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", -          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", -          "dev": true, -          "requires": { -            "is-extendable": "^0.1.0" -          } -        }        }      },      "find-up": {        "version": "1.1.2",        "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", -      "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", +      "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",        "dev": true,        "requires": {          "path-exists": "^2.0.0", @@ -7810,32 +7152,21 @@        }      },      "findup-sync": { -      "version": "2.0.0", -      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", -      "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", +      "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",        "dev": true,        "requires": {          "detect-file": "^1.0.0", -        "is-glob": "^3.1.0", +        "is-glob": "^4.0.0",          "micromatch": "^3.0.4",          "resolve-dir": "^1.0.1" -      }, -      "dependencies": { -        "is-glob": { -          "version": "3.1.0", -          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", -          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", -          "dev": true, -          "requires": { -            "is-extglob": "^2.1.0" -          } -        }        }      },      "fined": { -      "version": "1.1.0", -      "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", -      "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", +      "version": "1.2.0", +      "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", +      "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",        "dev": true,        "requires": {          "expand-tilde": "^2.0.2", @@ -7843,34 +7174,45 @@          "object.defaults": "^1.1.0",          "object.pick": "^1.2.0",          "parse-filepath": "^1.0.1" +      }, +      "dependencies": { +        "is-plain-object": { +          "version": "2.0.4", +          "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +          "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +          "dev": true, +          "requires": { +            "isobject": "^3.0.1" +          } +        }        }      },      "flagged-respawn": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", -      "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", +      "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",        "dev": true      },      "flush-write-stream": { -      "version": "1.0.3", -      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", -      "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", +      "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",        "dev": true,        "requires": { -        "inherits": "^2.0.1", -        "readable-stream": "^2.0.4" +        "inherits": "^2.0.3", +        "readable-stream": "^2.3.6"        }      },      "for-in": {        "version": "1.0.2",        "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", -      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", +      "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",        "dev": true      },      "for-own": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", -      "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", +      "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",        "dev": true,        "requires": {          "for-in": "^1.0.1" @@ -7879,7 +7221,7 @@      "fragment-cache": {        "version": "0.2.1",        "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", -      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", +      "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",        "dev": true,        "requires": {          "map-cache": "^0.2.2" @@ -7888,7 +7230,7 @@      "fs-mkdirp-stream": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", -      "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", +      "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==",        "dev": true,        "requires": {          "graceful-fs": "^4.1.11", @@ -7902,620 +7244,14 @@        "dev": true      },      "fsevents": { -      "version": "1.2.12", -      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", -      "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", +      "version": "1.2.13", +      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", +      "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",        "dev": true,        "optional": true,        "requires": {          "bindings": "^1.5.0", -        "nan": "^2.12.1", -        "node-pre-gyp": "*" -      }, -      "dependencies": { -        "abbrev": { -          "version": "1.1.1", -          "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", -          "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "ansi-regex": { -          "version": "2.1.1", -          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", -          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "aproba": { -          "version": "1.2.0", -          "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", -          "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "are-we-there-yet": { -          "version": "1.1.5", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "delegates": "^1.0.0", -            "readable-stream": "^2.0.6" -          } -        }, -        "balanced-match": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", -          "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "brace-expansion": { -          "version": "1.1.11", -          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", -          "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "balanced-match": "^1.0.0", -            "concat-map": "0.0.1" -          } -        }, -        "chownr": { -          "version": "1.1.4", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "code-point-at": { -          "version": "1.1.0", -          "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", -          "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "concat-map": { -          "version": "0.0.1", -          "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", -          "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "console-control-strings": { -          "version": "1.1.0", -          "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", -          "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "core-util-is": { -          "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", -          "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "debug": { -          "version": "3.2.6", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "ms": "^2.1.1" -          } -        }, -        "deep-extend": { -          "version": "0.6.0", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "delegates": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", -          "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "detect-libc": { -          "version": "1.0.3", -          "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", -          "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "fs-minipass": { -          "version": "1.2.7", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "minipass": "^2.6.0" -          } -        }, -        "fs.realpath": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", -          "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "gauge": { -          "version": "2.7.4", -          "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", -          "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "aproba": "^1.0.3", -            "console-control-strings": "^1.0.0", -            "has-unicode": "^2.0.0", -            "object-assign": "^4.1.0", -            "signal-exit": "^3.0.0", -            "string-width": "^1.0.1", -            "strip-ansi": "^3.0.1", -            "wide-align": "^1.1.0" -          } -        }, -        "glob": { -          "version": "7.1.6", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "fs.realpath": "^1.0.0", -            "inflight": "^1.0.4", -            "inherits": "2", -            "minimatch": "^3.0.4", -            "once": "^1.3.0", -            "path-is-absolute": "^1.0.0" -          } -        }, -        "has-unicode": { -          "version": "2.0.1", -          "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", -          "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "iconv-lite": { -          "version": "0.4.24", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "safer-buffer": ">= 2.1.2 < 3" -          } -        }, -        "ignore-walk": { -          "version": "3.0.3", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "minimatch": "^3.0.4" -          } -        }, -        "inflight": { -          "version": "1.0.6", -          "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", -          "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "once": "^1.3.0", -            "wrappy": "1" -          } -        }, -        "inherits": { -          "version": "2.0.4", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "is-fullwidth-code-point": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", -          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "number-is-nan": "^1.0.0" -          } -        }, -        "isarray": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", -          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "minimatch": { -          "version": "3.0.4", -          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", -          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "brace-expansion": "^1.1.7" -          } -        }, -        "minimist": { -          "version": "1.2.5", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "minipass": { -          "version": "2.9.0", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "safe-buffer": "^5.1.2", -            "yallist": "^3.0.0" -          } -        }, -        "minizlib": { -          "version": "1.3.3", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "minipass": "^2.9.0" -          } -        }, -        "mkdirp": { -          "version": "0.5.3", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "minimist": "^1.2.5" -          } -        }, -        "ms": { -          "version": "2.1.2", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "needle": { -          "version": "2.3.3", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "debug": "^3.2.6", -            "iconv-lite": "^0.4.4", -            "sax": "^1.2.4" -          } -        }, -        "node-pre-gyp": { -          "version": "0.14.0", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "detect-libc": "^1.0.2", -            "mkdirp": "^0.5.1", -            "needle": "^2.2.1", -            "nopt": "^4.0.1", -            "npm-packlist": "^1.1.6", -            "npmlog": "^4.0.2", -            "rc": "^1.2.7", -            "rimraf": "^2.6.1", -            "semver": "^5.3.0", -            "tar": "^4.4.2" -          } -        }, -        "nopt": { -          "version": "4.0.3", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "abbrev": "1", -            "osenv": "^0.1.4" -          } -        }, -        "npm-bundled": { -          "version": "1.1.1", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "npm-normalize-package-bin": "^1.0.1" -          } -        }, -        "npm-normalize-package-bin": { -          "version": "1.0.1", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "npm-packlist": { -          "version": "1.4.8", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "ignore-walk": "^3.0.1", -            "npm-bundled": "^1.0.1", -            "npm-normalize-package-bin": "^1.0.1" -          } -        }, -        "npmlog": { -          "version": "4.1.2", -          "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", -          "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "are-we-there-yet": "~1.1.2", -            "console-control-strings": "~1.1.0", -            "gauge": "~2.7.3", -            "set-blocking": "~2.0.0" -          } -        }, -        "number-is-nan": { -          "version": "1.0.1", -          "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", -          "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "object-assign": { -          "version": "4.1.1", -          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", -          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "once": { -          "version": "1.4.0", -          "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", -          "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "wrappy": "1" -          } -        }, -        "os-homedir": { -          "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", -          "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "os-tmpdir": { -          "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", -          "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "osenv": { -          "version": "0.1.5", -          "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", -          "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "os-homedir": "^1.0.0", -            "os-tmpdir": "^1.0.0" -          } -        }, -        "path-is-absolute": { -          "version": "1.0.1", -          "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", -          "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "process-nextick-args": { -          "version": "2.0.1", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "rc": { -          "version": "1.2.8", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "deep-extend": "^0.6.0", -            "ini": "~1.3.0", -            "minimist": "^1.2.0", -            "strip-json-comments": "~2.0.1" -          } -        }, -        "readable-stream": { -          "version": "2.3.7", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "core-util-is": "~1.0.0", -            "inherits": "~2.0.3", -            "isarray": "~1.0.0", -            "process-nextick-args": "~2.0.0", -            "safe-buffer": "~5.1.1", -            "string_decoder": "~1.1.1", -            "util-deprecate": "~1.0.1" -          } -        }, -        "rimraf": { -          "version": "2.7.1", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "glob": "^7.1.3" -          } -        }, -        "safe-buffer": { -          "version": "5.1.2", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "safer-buffer": { -          "version": "2.1.2", -          "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", -          "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "sax": { -          "version": "1.2.4", -          "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", -          "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "semver": { -          "version": "5.7.1", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "set-blocking": { -          "version": "2.0.0", -          "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", -          "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "signal-exit": { -          "version": "3.0.2", -          "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", -          "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "string_decoder": { -          "version": "1.1.1", -          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", -          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "safe-buffer": "~5.1.0" -          } -        }, -        "string-width": { -          "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", -          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "code-point-at": "^1.0.0", -            "is-fullwidth-code-point": "^1.0.0", -            "strip-ansi": "^3.0.0" -          } -        }, -        "strip-ansi": { -          "version": "3.0.1", -          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", -          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "ansi-regex": "^2.0.0" -          } -        }, -        "strip-json-comments": { -          "version": "2.0.1", -          "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", -          "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "tar": { -          "version": "4.4.13", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "chownr": "^1.1.1", -            "fs-minipass": "^1.2.5", -            "minipass": "^2.8.6", -            "minizlib": "^1.2.1", -            "mkdirp": "^0.5.0", -            "safe-buffer": "^5.1.2", -            "yallist": "^3.0.3" -          } -        }, -        "util-deprecate": { -          "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", -          "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "wide-align": { -          "version": "1.1.3", -          "bundled": true, -          "dev": true, -          "optional": true, -          "requires": { -            "string-width": "^1.0.2 || 2" -          } -        }, -        "wrappy": { -          "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", -          "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", -          "bundled": true, -          "dev": true, -          "optional": true -        }, -        "yallist": { -          "version": "3.1.1", -          "bundled": true, -          "dev": true, -          "optional": true -        } +        "nan": "^2.12.1"        }      },      "function-bind": { @@ -8541,10 +7277,21 @@        "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",        "dev": true      }, +    "get-intrinsic": { +      "version": "1.1.2", +      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", +      "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", +      "dev": true, +      "requires": { +        "function-bind": "^1.1.1", +        "has": "^1.0.3", +        "has-symbols": "^1.0.3" +      } +    },      "get-value": {        "version": "2.0.6",        "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", -      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", +      "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",        "dev": true      },      "glob": { @@ -8564,7 +7311,7 @@      "glob-parent": {        "version": "3.1.0",        "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", -      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", +      "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",        "dev": true,        "requires": {          "is-glob": "^3.1.0", @@ -8574,7 +7321,7 @@          "is-glob": {            "version": "3.1.0",            "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", -          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", +          "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",            "dev": true,            "requires": {              "is-extglob": "^2.1.0" @@ -8585,7 +7332,7 @@      "glob-stream": {        "version": "6.1.0",        "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", -      "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", +      "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==",        "dev": true,        "requires": {          "extend": "^3.0.0", @@ -8601,9 +7348,9 @@        }      },      "glob-watcher": { -      "version": "5.0.3", -      "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", -      "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", +      "version": "5.0.5", +      "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", +      "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==",        "dev": true,        "requires": {          "anymatch": "^2.0.0", @@ -8611,7 +7358,16 @@          "chokidar": "^2.0.0",          "is-negated-glob": "^1.0.0",          "just-debounce": "^1.0.0", +        "normalize-path": "^3.0.0",          "object.defaults": "^1.1.0" +      }, +      "dependencies": { +        "normalize-path": { +          "version": "3.0.0", +          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", +          "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", +          "dev": true +        }        }      },      "global-modules": { @@ -8628,7 +7384,7 @@      "global-prefix": {        "version": "1.0.2",        "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", -      "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", +      "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",        "dev": true,        "requires": {          "expand-tilde": "^2.0.2", @@ -8654,15 +7410,41 @@        "dev": true      },      "gulp": { -      "version": "4.0.0", -      "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.0.tgz", -      "integrity": "sha1-lXZsYB2t5Kd+0+eyttwDiBtZY2Y=", +      "version": "4.0.2", +      "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", +      "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==",        "dev": true,        "requires": { -        "glob-watcher": "^5.0.0", -        "gulp-cli": "^2.0.0", -        "undertaker": "^1.0.0", +        "glob-watcher": "^5.0.3", +        "gulp-cli": "^2.2.0", +        "undertaker": "^1.2.1",          "vinyl-fs": "^3.0.0" +      } +    }, +    "gulp-cli": { +      "version": "2.3.0", +      "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", +      "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", +      "dev": true, +      "requires": { +        "ansi-colors": "^1.0.1", +        "archy": "^1.0.0", +        "array-sort": "^1.0.0", +        "color-support": "^1.1.3", +        "concat-stream": "^1.6.0", +        "copy-props": "^2.0.1", +        "fancy-log": "^1.3.2", +        "gulplog": "^1.0.0", +        "interpret": "^1.4.0", +        "isobject": "^3.0.1", +        "liftoff": "^3.1.0", +        "matchdep": "^2.0.0", +        "mute-stdout": "^1.0.0", +        "pretty-hrtime": "^1.0.0", +        "replace-homedir": "^1.0.0", +        "semver-greatest-satisfied-range": "^1.1.0", +        "v8flags": "^3.2.0", +        "yargs": "^7.1.0"        },        "dependencies": {          "concat-stream": { @@ -8676,32 +7458,6 @@              "readable-stream": "^2.2.2",              "typedarray": "^0.0.6"            } -        }, -        "gulp-cli": { -          "version": "2.0.1", -          "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.0.1.tgz", -          "integrity": "sha512-RxujJJdN8/O6IW2nPugl7YazhmrIEjmiVfPKrWt68r71UCaLKS71Hp0gpKT+F6qOUFtr7KqtifDKaAJPRVvMYQ==", -          "dev": true, -          "requires": { -            "ansi-colors": "^1.0.1", -            "archy": "^1.0.0", -            "array-sort": "^1.0.0", -            "color-support": "^1.1.3", -            "concat-stream": "^1.6.0", -            "copy-props": "^2.0.1", -            "fancy-log": "^1.3.2", -            "gulplog": "^1.0.0", -            "interpret": "^1.1.0", -            "isobject": "^3.0.1", -            "liftoff": "^2.5.0", -            "matchdep": "^2.0.0", -            "mute-stdout": "^1.0.0", -            "pretty-hrtime": "^1.0.0", -            "replace-homedir": "^1.0.0", -            "semver-greatest-satisfied-range": "^1.1.0", -            "v8flags": "^3.0.1", -            "yargs": "^7.1.0" -          }          }        }      }, @@ -8789,16 +7545,25 @@          "sparkles": "^1.0.0"        }      }, -    "has-symbols": { +    "has-property-descriptors": {        "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", -      "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", +      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", +      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", +      "dev": true, +      "requires": { +        "get-intrinsic": "^1.1.1" +      } +    }, +    "has-symbols": { +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", +      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",        "dev": true      },      "has-value": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", -      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", +      "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",        "dev": true,        "requires": {          "get-value": "^2.0.6", @@ -8809,7 +7574,7 @@      "has-values": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", -      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", +      "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",        "dev": true,        "requires": {          "is-number": "^3.0.0", @@ -8819,7 +7584,7 @@          "kind-of": {            "version": "4.0.0",            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", -          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", +          "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",            "dev": true,            "requires": {              "is-buffer": "^1.1.5" @@ -8838,9 +7603,9 @@        }      },      "hash.js": { -      "version": "1.1.7", -      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", -      "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", +      "version": "1.1.5", +      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", +      "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==",        "dev": true,        "requires": {          "inherits": "^2.0.3", @@ -8859,18 +7624,18 @@        }      },      "homedir-polyfill": { -      "version": "1.0.1", -      "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", -      "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", +      "version": "1.0.3", +      "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", +      "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",        "dev": true,        "requires": {          "parse-passwd": "^1.0.0"        }      },      "hosted-git-info": { -      "version": "2.7.1", -      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", -      "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", +      "version": "2.8.9", +      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", +      "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",        "dev": true      },      "htmlescape": { @@ -8914,9 +7679,9 @@        "dev": true      },      "ini": { -      "version": "1.3.7", -      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", -      "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", +      "version": "1.3.8", +      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", +      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",        "dev": true      },      "inline-source-map": { @@ -8961,15 +7726,15 @@        }      },      "interpret": { -      "version": "1.1.0", -      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", -      "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", +      "version": "1.4.0", +      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", +      "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",        "dev": true      },      "invert-kv": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", -      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", +      "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==",        "dev": true      },      "is-absolute": { @@ -8983,22 +7748,19 @@        }      },      "is-accessor-descriptor": { -      "version": "0.1.6", -      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", -      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", +      "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",        "dev": true,        "requires": { -        "kind-of": "^3.0.2" +        "kind-of": "^6.0.0"        },        "dependencies": {          "kind-of": { -          "version": "3.2.2", -          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", -          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", -          "dev": true, -          "requires": { -            "is-buffer": "^1.1.5" -          } +          "version": "6.0.3", +          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", +          "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", +          "dev": true          }        }      }, @@ -9011,7 +7773,7 @@      "is-binary-path": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", -      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", +      "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",        "dev": true,        "requires": {          "binary-extensions": "^1.0.0" @@ -9023,50 +7785,47 @@        "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",        "dev": true      }, -    "is-builtin-module": { -      "version": "1.0.0", -      "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", -      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", +    "is-core-module": { +      "version": "2.9.0", +      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", +      "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",        "dev": true,        "requires": { -        "builtin-modules": "^1.0.0" +        "has": "^1.0.3"        }      },      "is-data-descriptor": { -      "version": "0.1.4", -      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", -      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", +      "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",        "dev": true,        "requires": { -        "kind-of": "^3.0.2" +        "kind-of": "^6.0.0"        },        "dependencies": {          "kind-of": { -          "version": "3.2.2", -          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", -          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", -          "dev": true, -          "requires": { -            "is-buffer": "^1.1.5" -          } +          "version": "6.0.3", +          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", +          "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", +          "dev": true          }        }      },      "is-descriptor": { -      "version": "0.1.6", -      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", -      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", +      "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",        "dev": true,        "requires": { -        "is-accessor-descriptor": "^0.1.6", -        "is-data-descriptor": "^0.1.4", -        "kind-of": "^5.0.0" +        "is-accessor-descriptor": "^1.0.0", +        "is-data-descriptor": "^1.0.0", +        "kind-of": "^6.0.2"        },        "dependencies": {          "kind-of": { -          "version": "5.1.0", -          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", -          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", +          "version": "6.0.3", +          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", +          "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",            "dev": true          }        } @@ -9074,28 +7833,28 @@      "is-extendable": {        "version": "0.1.1",        "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", -      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", +      "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",        "dev": true      },      "is-extglob": {        "version": "2.1.1",        "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", -      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", +      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",        "dev": true      },      "is-fullwidth-code-point": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", -      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", +      "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",        "dev": true,        "requires": {          "number-is-nan": "^1.0.0"        }      },      "is-glob": { -      "version": "4.0.1", -      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", -      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", +      "version": "4.0.3", +      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", +      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",        "dev": true,        "requires": {          "is-extglob": "^2.1.1" @@ -9104,13 +7863,13 @@      "is-negated-glob": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", -      "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", +      "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==",        "dev": true      },      "is-number": {        "version": "3.0.0",        "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", -      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", +      "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",        "dev": true,        "requires": {          "kind-of": "^3.0.2" @@ -9119,7 +7878,7 @@          "kind-of": {            "version": "3.2.2",            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", -          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", +          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",            "dev": true,            "requires": {              "is-buffer": "^1.1.5" @@ -9128,13 +7887,10 @@        }      },      "is-plain-object": { -      "version": "2.0.4", -      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", -      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", -      "dev": true, -      "requires": { -        "isobject": "^3.0.1" -      } +      "version": "5.0.0", +      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", +      "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", +      "dev": true      },      "is-promise": {        "version": "2.1.0", @@ -9169,7 +7925,7 @@      "is-valid-glob": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", -      "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", +      "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==",        "dev": true      },      "is-windows": { @@ -9187,13 +7943,13 @@      "isexe": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", -      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", +      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",        "dev": true      },      "isobject": {        "version": "3.0.1",        "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", -      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", +      "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",        "dev": true      },      "json-stable-stringify": { @@ -9205,6 +7961,12 @@          "jsonify": "~0.0.0"        }      }, +    "json-stable-stringify-without-jsonify": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", +      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", +      "dev": true +    },      "jsonify": {        "version": "0.0.0",        "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", @@ -9228,15 +7990,15 @@        }      },      "just-debounce": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", -      "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", +      "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==",        "dev": true      },      "kind-of": { -      "version": "6.0.3", -      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", -      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", +      "version": "5.1.0", +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", +      "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",        "dev": true      },      "labeled-stream-splicer": { @@ -9261,7 +8023,7 @@      "last-run": {        "version": "1.1.1",        "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", -      "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", +      "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==",        "dev": true,        "requires": {          "default-resolution": "^2.0.0", @@ -9269,9 +8031,9 @@        }      },      "lazystream": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", -      "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", +      "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",        "dev": true,        "requires": {          "readable-stream": "^2.0.5" @@ -9280,7 +8042,7 @@      "lcid": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", -      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", +      "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==",        "dev": true,        "requires": {          "invert-kv": "^1.0.0" @@ -9289,32 +8051,43 @@      "lead": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", -      "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", +      "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==",        "dev": true,        "requires": {          "flush-write-stream": "^1.0.2"        }      },      "liftoff": { -      "version": "2.5.0", -      "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", -      "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", +      "version": "3.1.0", +      "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", +      "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==",        "dev": true,        "requires": {          "extend": "^3.0.0", -        "findup-sync": "^2.0.0", +        "findup-sync": "^3.0.0",          "fined": "^1.0.1",          "flagged-respawn": "^1.0.0",          "is-plain-object": "^2.0.4",          "object.map": "^1.0.0",          "rechoir": "^0.6.2",          "resolve": "^1.1.7" +      }, +      "dependencies": { +        "is-plain-object": { +          "version": "2.0.4", +          "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +          "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +          "dev": true, +          "requires": { +            "isobject": "^3.0.1" +          } +        }        }      },      "load-json-file": {        "version": "1.1.0", -      "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", -      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", +      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", +      "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",        "dev": true,        "requires": {          "graceful-fs": "^4.1.2", @@ -9325,9 +8098,9 @@        }      },      "lodash": { -      "version": "4.17.20", -      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", -      "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", +      "version": "4.17.21", +      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", +      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",        "dev": true      },      "lodash.memoize": { @@ -9367,18 +8140,26 @@        "dev": true,        "requires": {          "kind-of": "^6.0.2" +      }, +      "dependencies": { +        "kind-of": { +          "version": "6.0.3", +          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", +          "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", +          "dev": true +        }        }      },      "map-cache": {        "version": "0.2.2",        "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", -      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", +      "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",        "dev": true      },      "map-visit": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", -      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", +      "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",        "dev": true,        "requires": {          "object-visit": "^1.0.0" @@ -9387,13 +8168,36 @@      "matchdep": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", -      "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", +      "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==",        "dev": true,        "requires": {          "findup-sync": "^2.0.0",          "micromatch": "^3.0.4",          "resolve": "^1.4.0",          "stack-trace": "0.0.10" +      }, +      "dependencies": { +        "findup-sync": { +          "version": "2.0.0", +          "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", +          "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", +          "dev": true, +          "requires": { +            "detect-file": "^1.0.0", +            "is-glob": "^3.1.0", +            "micromatch": "^3.0.4", +            "resolve-dir": "^1.0.1" +          } +        }, +        "is-glob": { +          "version": "3.1.0", +          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", +          "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", +          "dev": true, +          "requires": { +            "is-extglob": "^2.1.0" +          } +        }        }      },      "md5.js": { @@ -9474,6 +8278,42 @@          "regex-not": "^1.0.0",          "snapdragon": "^0.8.1",          "to-regex": "^3.0.2" +      }, +      "dependencies": { +        "extend-shallow": { +          "version": "3.0.2", +          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", +          "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", +          "dev": true, +          "requires": { +            "assign-symbols": "^1.0.0", +            "is-extendable": "^1.0.1" +          } +        }, +        "is-extendable": { +          "version": "1.0.1", +          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", +          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", +          "dev": true, +          "requires": { +            "is-plain-object": "^2.0.4" +          } +        }, +        "is-plain-object": { +          "version": "2.0.4", +          "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +          "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +          "dev": true, +          "requires": { +            "isobject": "^3.0.1" +          } +        }, +        "kind-of": { +          "version": "6.0.3", +          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", +          "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", +          "dev": true +        }        }      },      "miller-rabin": { @@ -9508,9 +8348,9 @@        }      },      "minimist": { -      "version": "1.2.5", -      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", -      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", +      "version": "1.2.6", +      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", +      "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",        "dev": true      },      "mixin-deep": { @@ -9531,6 +8371,15 @@            "requires": {              "is-plain-object": "^2.0.4"            } +        }, +        "is-plain-object": { +          "version": "2.0.4", +          "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +          "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +          "dev": true, +          "requires": { +            "isobject": "^3.0.1" +          }          }        }      }, @@ -9557,6 +8406,12 @@          "xtend": "^4.0.0"        }      }, +    "ms": { +      "version": "2.0.0", +      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", +      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", +      "dev": true +    },      "mute-stdout": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", @@ -9564,9 +8419,9 @@        "dev": true      },      "nan": { -      "version": "2.14.0", -      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", -      "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", +      "version": "2.16.0", +      "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", +      "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==",        "dev": true,        "optional": true      }, @@ -9587,6 +8442,42 @@          "regex-not": "^1.0.0",          "snapdragon": "^0.8.1",          "to-regex": "^3.0.1" +      }, +      "dependencies": { +        "extend-shallow": { +          "version": "3.0.2", +          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", +          "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", +          "dev": true, +          "requires": { +            "assign-symbols": "^1.0.0", +            "is-extendable": "^1.0.1" +          } +        }, +        "is-extendable": { +          "version": "1.0.1", +          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", +          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", +          "dev": true, +          "requires": { +            "is-plain-object": "^2.0.4" +          } +        }, +        "is-plain-object": { +          "version": "2.0.4", +          "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +          "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +          "dev": true, +          "requires": { +            "isobject": "^3.0.1" +          } +        }, +        "kind-of": { +          "version": "6.0.3", +          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", +          "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", +          "dev": true +        }        }      },      "next-tick": { @@ -9596,13 +8487,13 @@        "dev": true      },      "normalize-package-data": { -      "version": "2.4.0", -      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", -      "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", +      "version": "2.5.0", +      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", +      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",        "dev": true,        "requires": {          "hosted-git-info": "^2.1.4", -        "is-builtin-module": "^1.0.0", +        "resolve": "^1.10.0",          "semver": "2 || 3 || 4 || 5",          "validate-npm-package-license": "^3.0.1"        } @@ -9617,9 +8508,9 @@        }      },      "now-and-later": { -      "version": "2.0.0", -      "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz", -      "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=", +      "version": "2.0.1", +      "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", +      "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==",        "dev": true,        "requires": {          "once": "^1.3.2" @@ -9628,7 +8519,7 @@      "number-is-nan": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", -      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", +      "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",        "dev": true      },      "object-assign": { @@ -9640,7 +8531,7 @@      "object-copy": {        "version": "0.1.0",        "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", -      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", +      "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",        "dev": true,        "requires": {          "copy-descriptor": "^0.1.0", @@ -9651,16 +8542,53 @@          "define-property": {            "version": "0.2.5",            "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", -          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", +          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",            "dev": true,            "requires": {              "is-descriptor": "^0.1.0"            }          }, +        "is-accessor-descriptor": { +          "version": "0.1.6", +          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", +          "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", +          "dev": true, +          "requires": { +            "kind-of": "^3.0.2" +          } +        }, +        "is-data-descriptor": { +          "version": "0.1.4", +          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", +          "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", +          "dev": true, +          "requires": { +            "kind-of": "^3.0.2" +          } +        }, +        "is-descriptor": { +          "version": "0.1.6", +          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", +          "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", +          "dev": true, +          "requires": { +            "is-accessor-descriptor": "^0.1.6", +            "is-data-descriptor": "^0.1.4", +            "kind-of": "^5.0.0" +          }, +          "dependencies": { +            "kind-of": { +              "version": "5.1.0", +              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", +              "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", +              "dev": true +            } +          } +        },          "kind-of": {            "version": "3.2.2",            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", -          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", +          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",            "dev": true,            "requires": {              "is-buffer": "^1.1.5" @@ -9669,36 +8597,36 @@        }      },      "object-keys": { -      "version": "1.0.12", -      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", -      "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", +      "version": "1.1.1", +      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", +      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",        "dev": true      },      "object-visit": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", -      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", +      "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",        "dev": true,        "requires": {          "isobject": "^3.0.0"        }      },      "object.assign": { -      "version": "4.1.0", -      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", -      "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", +      "version": "4.1.2", +      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", +      "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",        "dev": true,        "requires": { -        "define-properties": "^1.1.2", -        "function-bind": "^1.1.1", -        "has-symbols": "^1.0.0", -        "object-keys": "^1.0.11" +        "call-bind": "^1.0.0", +        "define-properties": "^1.1.3", +        "has-symbols": "^1.0.1", +        "object-keys": "^1.1.1"        }      },      "object.defaults": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", -      "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", +      "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",        "dev": true,        "requires": {          "array-each": "^1.0.1", @@ -9710,7 +8638,7 @@      "object.map": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", -      "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", +      "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==",        "dev": true,        "requires": {          "for-own": "^1.0.0", @@ -9720,7 +8648,7 @@      "object.pick": {        "version": "1.3.0",        "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", -      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", +      "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",        "dev": true,        "requires": {          "isobject": "^3.0.1" @@ -9729,7 +8657,7 @@      "object.reduce": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", -      "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", +      "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==",        "dev": true,        "requires": {          "for-own": "^1.0.0", @@ -9737,9 +8665,9 @@        }      },      "once": { -      "version": "1.3.3", -      "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", -      "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", +      "version": "1.4.0", +      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", +      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",        "dev": true,        "requires": {          "wrappy": "1" @@ -9748,7 +8676,7 @@      "ordered-read-streams": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", -      "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", +      "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==",        "dev": true,        "requires": {          "readable-stream": "^2.0.1" @@ -9762,8 +8690,8 @@      },      "os-locale": {        "version": "1.4.0", -      "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", -      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", +      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", +      "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==",        "dev": true,        "requires": {          "lcid": "^1.0.0" @@ -9800,7 +8728,7 @@      "parse-filepath": {        "version": "1.0.2",        "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", -      "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", +      "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",        "dev": true,        "requires": {          "is-absolute": "^1.0.0", @@ -9817,16 +8745,22 @@          "error-ex": "^1.2.0"        }      }, +    "parse-node-version": { +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", +      "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", +      "dev": true +    },      "parse-passwd": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", -      "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", +      "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",        "dev": true      },      "pascalcase": {        "version": "0.1.1",        "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", -      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", +      "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",        "dev": true      },      "path-browserify": { @@ -9838,13 +8772,13 @@      "path-dirname": {        "version": "1.0.2",        "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", -      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", +      "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",        "dev": true      },      "path-exists": {        "version": "2.1.0",        "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", -      "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", +      "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",        "dev": true,        "requires": {          "pinkie-promise": "^2.0.0" @@ -9857,9 +8791,9 @@        "dev": true      },      "path-parse": { -      "version": "1.0.5", -      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", -      "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", +      "version": "1.0.7", +      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", +      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",        "dev": true      },      "path-platform": { @@ -9871,7 +8805,7 @@      "path-root": {        "version": "0.1.1",        "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", -      "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", +      "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",        "dev": true,        "requires": {          "path-root-regex": "^0.1.0" @@ -9880,13 +8814,13 @@      "path-root-regex": {        "version": "0.1.2",        "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", -      "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", +      "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",        "dev": true      },      "path-type": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", -      "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", +      "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",        "dev": true,        "requires": {          "graceful-fs": "^4.1.2", @@ -9909,20 +8843,20 @@      },      "pify": {        "version": "2.3.0", -      "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", -      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", +      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", +      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",        "dev": true      },      "pinkie": {        "version": "2.0.4",        "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", -      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", +      "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",        "dev": true      },      "pinkie-promise": {        "version": "2.0.1",        "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", -      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", +      "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",        "dev": true,        "requires": {          "pinkie": "^2.0.0" @@ -9931,7 +8865,7 @@      "posix-character-classes": {        "version": "0.1.1",        "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", -      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", +      "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",        "dev": true      },      "preact": { @@ -9942,7 +8876,7 @@      "pretty-hrtime": {        "version": "1.0.3",        "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", -      "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", +      "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",        "dev": true      },      "process": { @@ -10049,7 +8983,7 @@      "read-pkg": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", -      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", +      "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",        "dev": true,        "requires": {          "load-json-file": "^1.0.0", @@ -10060,7 +8994,7 @@      "read-pkg-up": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", -      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", +      "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",        "dev": true,        "requires": {          "find-up": "^1.0.0", @@ -10082,12 +9016,6 @@          "util-deprecate": "~1.0.1"        },        "dependencies": { -        "isarray": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", -          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", -          "dev": true -        },          "process-nextick-args": {            "version": "2.0.0",            "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", @@ -10119,7 +9047,7 @@      "rechoir": {        "version": "0.6.2",        "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", -      "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", +      "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",        "dev": true,        "requires": {          "resolve": "^1.1.6" @@ -10133,6 +9061,36 @@        "requires": {          "extend-shallow": "^3.0.2",          "safe-regex": "^1.1.0" +      }, +      "dependencies": { +        "extend-shallow": { +          "version": "3.0.2", +          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", +          "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", +          "dev": true, +          "requires": { +            "assign-symbols": "^1.0.0", +            "is-extendable": "^1.0.1" +          } +        }, +        "is-extendable": { +          "version": "1.0.1", +          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", +          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", +          "dev": true, +          "requires": { +            "is-plain-object": "^2.0.4" +          } +        }, +        "is-plain-object": { +          "version": "2.0.4", +          "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +          "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +          "dev": true, +          "requires": { +            "isobject": "^3.0.1" +          } +        }        }      },      "remove-bom-buffer": { @@ -10148,7 +9106,7 @@      "remove-bom-stream": {        "version": "1.2.0",        "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", -      "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", +      "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==",        "dev": true,        "requires": {          "remove-bom-buffer": "^3.0.0", @@ -10163,21 +9121,21 @@        "dev": true      },      "repeat-element": { -      "version": "1.1.3", -      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", -      "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", +      "version": "1.1.4", +      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", +      "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",        "dev": true      },      "repeat-string": {        "version": "1.6.1",        "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", -      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", +      "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",        "dev": true      },      "replace-homedir": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", -      "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", +      "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==",        "dev": true,        "requires": {          "homedir-polyfill": "^1.0.1", @@ -10188,28 +9146,30 @@      "require-directory": {        "version": "2.1.1",        "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", -      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", +      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",        "dev": true      },      "require-main-filename": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", -      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", +      "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==",        "dev": true      },      "resolve": { -      "version": "1.4.0", -      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", -      "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", +      "version": "1.22.0", +      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", +      "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",        "dev": true,        "requires": { -        "path-parse": "^1.0.5" +        "is-core-module": "^2.8.1", +        "path-parse": "^1.0.7", +        "supports-preserve-symlinks-flag": "^1.0.0"        }      },      "resolve-dir": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", -      "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", +      "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",        "dev": true,        "requires": {          "expand-tilde": "^2.0.0", @@ -10219,7 +9179,7 @@      "resolve-options": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", -      "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", +      "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==",        "dev": true,        "requires": {          "value-or-function": "^3.0.0" @@ -10256,7 +9216,7 @@      "safe-regex": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", -      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", +      "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",        "dev": true,        "requires": {          "ret": "~0.1.10" @@ -10271,7 +9231,7 @@      "semver-greatest-satisfied-range": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", -      "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", +      "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==",        "dev": true,        "requires": {          "sver-compat": "^1.5.0" @@ -10280,7 +9240,7 @@      "set-blocking": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", -      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", +      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",        "dev": true      },      "set-value": { @@ -10295,13 +9255,13 @@          "split-string": "^3.0.1"        },        "dependencies": { -        "extend-shallow": { -          "version": "2.0.1", -          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", -          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", +        "is-plain-object": { +          "version": "2.0.4", +          "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +          "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",            "dev": true,            "requires": { -            "is-extendable": "^0.1.0" +            "isobject": "^3.0.1"            }          }        } @@ -10327,16 +9287,10 @@        }      },      "shell-quote": { -      "version": "1.6.1", -      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", -      "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", -      "dev": true, -      "requires": { -        "array-filter": "~0.0.0", -        "array-map": "~0.0.0", -        "array-reduce": "~0.0.0", -        "jsonify": "~0.0.0" -      } +      "version": "1.7.3", +      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", +      "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", +      "dev": true      },      "simple-concat": {        "version": "1.0.0", @@ -10360,48 +9314,65 @@          "use": "^3.1.0"        },        "dependencies": { -        "atob": { -          "version": "2.1.2", -          "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", -          "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", -          "dev": true -        },          "define-property": {            "version": "0.2.5",            "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", -          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", +          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",            "dev": true,            "requires": {              "is-descriptor": "^0.1.0"            }          }, -        "extend-shallow": { -          "version": "2.0.1", -          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", -          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", +        "is-accessor-descriptor": { +          "version": "0.1.6", +          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", +          "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",            "dev": true,            "requires": { -            "is-extendable": "^0.1.0" +            "kind-of": "^3.0.2" +          }, +          "dependencies": { +            "kind-of": { +              "version": "3.2.2", +              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", +              "dev": true, +              "requires": { +                "is-buffer": "^1.1.5" +              } +            }            }          }, -        "source-map-resolve": { -          "version": "0.5.2", -          "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", -          "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", +        "is-data-descriptor": { +          "version": "0.1.4", +          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", +          "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",            "dev": true,            "requires": { -            "atob": "^2.1.1", -            "decode-uri-component": "^0.2.0", -            "resolve-url": "^0.2.1", -            "source-map-url": "^0.4.0", -            "urix": "^0.1.0" +            "kind-of": "^3.0.2" +          }, +          "dependencies": { +            "kind-of": { +              "version": "3.2.2", +              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", +              "dev": true, +              "requires": { +                "is-buffer": "^1.1.5" +              } +            }            }          }, -        "source-map-url": { -          "version": "0.4.0", -          "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", -          "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", -          "dev": true +        "is-descriptor": { +          "version": "0.1.6", +          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", +          "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", +          "dev": true, +          "requires": { +            "is-accessor-descriptor": "^0.1.6", +            "is-data-descriptor": "^0.1.4", +            "kind-of": "^5.0.0" +          }          }        }      }, @@ -10419,40 +9390,11 @@          "define-property": {            "version": "1.0.0",            "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", -          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", +          "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",            "dev": true,            "requires": {              "is-descriptor": "^1.0.0"            } -        }, -        "is-accessor-descriptor": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", -          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", -          "dev": true, -          "requires": { -            "kind-of": "^6.0.0" -          } -        }, -        "is-data-descriptor": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", -          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", -          "dev": true, -          "requires": { -            "kind-of": "^6.0.0" -          } -        }, -        "is-descriptor": { -          "version": "1.0.2", -          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", -          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", -          "dev": true, -          "requires": { -            "is-accessor-descriptor": "^1.0.0", -            "is-data-descriptor": "^1.0.0", -            "kind-of": "^6.0.2" -          }          }        }      }, @@ -10468,7 +9410,7 @@          "kind-of": {            "version": "3.2.2",            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", -          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", +          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",            "dev": true,            "requires": {              "is-buffer": "^1.1.5" @@ -10508,9 +9450,9 @@        "dev": true      },      "spdx-correct": { -      "version": "3.0.2", -      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", -      "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", +      "version": "3.1.1", +      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", +      "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",        "dev": true,        "requires": {          "spdx-expression-parse": "^3.0.0", @@ -10518,15 +9460,15 @@        }      },      "spdx-exceptions": { -      "version": "2.2.0", -      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", -      "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", +      "version": "2.3.0", +      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", +      "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",        "dev": true      },      "spdx-expression-parse": { -      "version": "3.0.0", -      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", -      "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", +      "version": "3.0.1", +      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", +      "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",        "dev": true,        "requires": {          "spdx-exceptions": "^2.1.0", @@ -10534,9 +9476,9 @@        }      },      "spdx-license-ids": { -      "version": "3.0.1", -      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", -      "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", +      "version": "3.0.11", +      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", +      "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",        "dev": true      },      "split-string": { @@ -10546,18 +9488,48 @@        "dev": true,        "requires": {          "extend-shallow": "^3.0.0" +      }, +      "dependencies": { +        "extend-shallow": { +          "version": "3.0.2", +          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", +          "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", +          "dev": true, +          "requires": { +            "assign-symbols": "^1.0.0", +            "is-extendable": "^1.0.1" +          } +        }, +        "is-extendable": { +          "version": "1.0.1", +          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", +          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", +          "dev": true, +          "requires": { +            "is-plain-object": "^2.0.4" +          } +        }, +        "is-plain-object": { +          "version": "2.0.4", +          "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +          "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +          "dev": true, +          "requires": { +            "isobject": "^3.0.1" +          } +        }        }      },      "stack-trace": {        "version": "0.0.10",        "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", -      "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", +      "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",        "dev": true      },      "static-extend": {        "version": "0.1.2",        "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", -      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", +      "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",        "dev": true,        "requires": {          "define-property": "^0.2.5", @@ -10567,11 +9539,62 @@          "define-property": {            "version": "0.2.5",            "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", -          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", +          "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",            "dev": true,            "requires": {              "is-descriptor": "^0.1.0"            } +        }, +        "is-accessor-descriptor": { +          "version": "0.1.6", +          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", +          "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", +          "dev": true, +          "requires": { +            "kind-of": "^3.0.2" +          }, +          "dependencies": { +            "kind-of": { +              "version": "3.2.2", +              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", +              "dev": true, +              "requires": { +                "is-buffer": "^1.1.5" +              } +            } +          } +        }, +        "is-data-descriptor": { +          "version": "0.1.4", +          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", +          "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", +          "dev": true, +          "requires": { +            "kind-of": "^3.0.2" +          }, +          "dependencies": { +            "kind-of": { +              "version": "3.2.2", +              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", +              "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", +              "dev": true, +              "requires": { +                "is-buffer": "^1.1.5" +              } +            } +          } +        }, +        "is-descriptor": { +          "version": "0.1.6", +          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", +          "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", +          "dev": true, +          "requires": { +            "is-accessor-descriptor": "^0.1.6", +            "is-data-descriptor": "^0.1.4", +            "kind-of": "^5.0.0" +          }          }        }      }, @@ -10615,9 +9638,9 @@        }      },      "stream-shift": { -      "version": "1.0.0", -      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", -      "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", +      "version": "1.0.1", +      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", +      "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",        "dev": true      },      "stream-splicer": { @@ -10642,7 +9665,7 @@      "string-width": {        "version": "1.0.2",        "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", -      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", +      "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",        "dev": true,        "requires": {          "code-point-at": "^1.0.0", @@ -10653,7 +9676,7 @@      "strip-ansi": {        "version": "3.0.1",        "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", -      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", +      "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",        "dev": true,        "requires": {          "ansi-regex": "^2.0.0" @@ -10689,10 +9712,16 @@          "minimist": "^1.1.0"        }      }, +    "supports-preserve-symlinks-flag": { +      "version": "1.0.0", +      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", +      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", +      "dev": true +    },      "sver-compat": {        "version": "1.5.0",        "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", -      "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", +      "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==",        "dev": true,        "requires": {          "es6-iterator": "^2.0.1", @@ -10722,44 +9751,12 @@        "requires": {          "readable-stream": "^2.1.5",          "xtend": "~4.0.1" -      }, -      "dependencies": { -        "isarray": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", -          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", -          "dev": true -        }, -        "readable-stream": { -          "version": "2.3.3", -          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", -          "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", -          "dev": true, -          "requires": { -            "core-util-is": "~1.0.0", -            "inherits": "~2.0.3", -            "isarray": "~1.0.0", -            "process-nextick-args": "~1.0.6", -            "safe-buffer": "~5.1.1", -            "string_decoder": "~1.0.3", -            "util-deprecate": "~1.0.1" -          } -        }, -        "string_decoder": { -          "version": "1.0.3", -          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", -          "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", -          "dev": true, -          "requires": { -            "safe-buffer": "~5.1.0" -          } -        }        }      },      "through2-filter": { -      "version": "2.0.0", -      "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", -      "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", +      "version": "3.0.0", +      "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", +      "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",        "dev": true,        "requires": {          "through2": "~2.0.0", @@ -10769,7 +9766,7 @@      "time-stamp": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", -      "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", +      "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==",        "dev": true      },      "timers-browserify": { @@ -10818,7 +9815,7 @@      "to-absolute-glob": {        "version": "2.0.2",        "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", -      "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", +      "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==",        "dev": true,        "requires": {          "is-absolute": "^1.0.0", @@ -10834,7 +9831,7 @@      "to-object-path": {        "version": "0.3.0",        "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", -      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", +      "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",        "dev": true,        "requires": {          "kind-of": "^3.0.2" @@ -10843,7 +9840,7 @@          "kind-of": {            "version": "3.2.2",            "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", -          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", +          "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",            "dev": true,            "requires": {              "is-buffer": "^1.1.5" @@ -10861,12 +9858,42 @@          "extend-shallow": "^3.0.2",          "regex-not": "^1.0.2",          "safe-regex": "^1.1.0" +      }, +      "dependencies": { +        "extend-shallow": { +          "version": "3.0.2", +          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", +          "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", +          "dev": true, +          "requires": { +            "assign-symbols": "^1.0.0", +            "is-extendable": "^1.0.1" +          } +        }, +        "is-extendable": { +          "version": "1.0.1", +          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", +          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", +          "dev": true, +          "requires": { +            "is-plain-object": "^2.0.4" +          } +        }, +        "is-plain-object": { +          "version": "2.0.4", +          "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", +          "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", +          "dev": true, +          "requires": { +            "isobject": "^3.0.1" +          } +        }        }      },      "to-regex-range": {        "version": "2.1.1",        "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", -      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", +      "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",        "dev": true,        "requires": {          "is-number": "^3.0.0", @@ -10876,7 +9903,7 @@      "to-through": {        "version": "2.0.0",        "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", -      "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", +      "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==",        "dev": true,        "requires": {          "through2": "^2.0.3" @@ -10953,7 +9980,7 @@      "unc-path-regex": {        "version": "0.1.2",        "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", -      "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", +      "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",        "dev": true      },      "undeclared-identifiers": { @@ -10969,9 +9996,9 @@        }      },      "undertaker": { -      "version": "1.2.0", -      "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.0.tgz", -      "integrity": "sha1-M52kZGJS0ILcN45wgGcpl1DhG0k=", +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", +      "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==",        "dev": true,        "requires": {          "arr-flatten": "^1.0.1", @@ -10979,6 +10006,7 @@          "bach": "^1.0.0",          "collection-map": "^1.0.0",          "es6-weak-map": "^2.0.1", +        "fast-levenshtein": "^1.0.0",          "last-run": "^1.1.0",          "object.defaults": "^1.0.0",          "object.reduce": "^1.0.0", @@ -10988,7 +10016,7 @@      "undertaker-registry": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", -      "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", +      "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==",        "dev": true      },      "union-value": { @@ -11004,30 +10032,19 @@        }      },      "unique-stream": { -      "version": "2.2.1", -      "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", -      "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", +      "version": "2.3.1", +      "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", +      "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",        "dev": true,        "requires": { -        "json-stable-stringify": "^1.0.0", -        "through2-filter": "^2.0.0" -      }, -      "dependencies": { -        "json-stable-stringify": { -          "version": "1.0.1", -          "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", -          "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", -          "dev": true, -          "requires": { -            "jsonify": "~0.0.0" -          } -        } +        "json-stable-stringify-without-jsonify": "^1.0.1", +        "through2-filter": "^3.0.0"        }      },      "unset-value": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", -      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", +      "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",        "dev": true,        "requires": {          "has-value": "^0.3.1", @@ -11037,7 +10054,7 @@          "has-value": {            "version": "0.3.1",            "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", -          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", +          "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",            "dev": true,            "requires": {              "get-value": "^2.0.3", @@ -11048,7 +10065,7 @@              "isobject": {                "version": "2.1.0",                "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", -              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", +              "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",                "dev": true,                "requires": {                  "isarray": "1.0.0" @@ -11059,13 +10076,7 @@          "has-values": {            "version": "0.1.4",            "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", -          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", -          "dev": true -        }, -        "isarray": { -          "version": "1.0.0", -          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", -          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", +          "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",            "dev": true          }        } @@ -11122,9 +10133,9 @@        "dev": true      },      "v8flags": { -      "version": "3.1.1", -      "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.1.tgz", -      "integrity": "sha512-iw/1ViSEaff8NJ3HLyEjawk/8hjJib3E7pvG4pddVXfUg1983s3VGsiClDjhK64MQVDGqc1Q8r18S4VKQZS9EQ==", +      "version": "3.2.0", +      "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", +      "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",        "dev": true,        "requires": {          "homedir-polyfill": "^1.0.1" @@ -11143,7 +10154,7 @@      "value-or-function": {        "version": "3.0.0",        "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", -      "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", +      "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==",        "dev": true      },      "vinyl": { @@ -11228,7 +10239,7 @@      "vinyl-sourcemap": {        "version": "1.1.0",        "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", -      "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", +      "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==",        "dev": true,        "requires": {          "append-buffer": "^1.0.2", @@ -11241,9 +10252,9 @@        },        "dependencies": {          "convert-source-map": { -          "version": "1.6.0", -          "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", -          "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", +          "version": "1.8.0", +          "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", +          "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",            "dev": true,            "requires": {              "safe-buffer": "~5.1.1" @@ -11281,13 +10292,13 @@      "which-module": {        "version": "1.0.0",        "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", -      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", +      "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==",        "dev": true      },      "wrap-ansi": {        "version": "2.1.0", -      "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", -      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", +      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", +      "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==",        "dev": true,        "requires": {          "string-width": "^1.0.1", @@ -11307,15 +10318,15 @@        "dev": true      },      "y18n": { -      "version": "3.2.1", -      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", -      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", +      "version": "3.2.2", +      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", +      "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",        "dev": true      },      "yargs": { -      "version": "7.1.0", -      "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", -      "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", +      "version": "7.1.2", +      "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", +      "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==",        "dev": true,        "requires": {          "camelcase": "^3.0.0", @@ -11330,16 +10341,17 @@          "string-width": "^1.0.2",          "which-module": "^1.0.0",          "y18n": "^3.2.1", -        "yargs-parser": "^5.0.0" +        "yargs-parser": "^5.0.1"        }      },      "yargs-parser": { -      "version": "5.0.0", -      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", -      "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", +      "version": "5.0.1", +      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", +      "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==",        "dev": true,        "requires": { -        "camelcase": "^3.0.0" +        "camelcase": "^3.0.0", +        "object.assign": "^4.1.0"        }      }    } diff --git a/haddock-api/resources/html/package.json b/haddock-api/resources/html/package.json index e7967351..224e5ef2 100644 --- a/haddock-api/resources/html/package.json +++ b/haddock-api/resources/html/package.json @@ -22,7 +22,7 @@    },    "devDependencies": {      "browserify": "^14.5.0", -    "gulp": "^4.0.0", +    "gulp": "^4.0.2",      "gulp-sourcemaps": "^2.6.4",      "gulp-uglify": "^3.0.1",      "tsify": "^3.0.4", diff --git a/haddock-api/resources/html/quick-jump.min.js b/haddock-api/resources/html/quick-jump.min.js index 06c35c74..0b0eeb27 100644 --- a/haddock-api/resources/html/quick-jump.min.js +++ b/haddock-api/resources/html/quick-jump.min.js @@ -1,2 +1,2 @@ -!function i(s,a,l){function c(t,e){if(!a[t]){if(!s[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(u)return u(t,!0);var o=new Error("Cannot find module '"+t+"'");throw o.code="MODULE_NOT_FOUND",o}var r=a[t]={exports:{}};s[t][0].call(r.exports,function(e){return c(s[t][1][e]||e)},r,r.exports,i,s,a,l)}return a[t].exports}for(var u="function"==typeof require&&require,e=0;e<l.length;e++)c(l[e]);return c}({1:[function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(n,"__esModule",{value:!0});var i=e("fuse.js"),s=e("preact"),a=s.h,l=s.Component;var c=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(t){return a("li",null,a("a",{href:"#",onClick:function(e){e.preventDefault(),t.onClick()}},t.title))},t}(l);function u(e){var t=document.querySelector("#page-menu"),n=document.createElement("li");t.insertBefore(n,t.firstChild),s.render(a(c,{onClick:e,title:"Quick Jump"}),t,n)}function h(e,t){return t.length<=e?t:t.slice(0,e)}var p=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.linkIndex=0,e.focusPlease=!1,e.navigatedByKeyboard=!1,e}return r(e,t),e.prototype.componentWillMount=function(){var e,t,n,o,r=this;this.setState({searchString:"",isVisible:!1,expanded:{},activeLinkIndex:-1,moduleResults:[]}),e=this.props.baseUrl+"/doc-index.json",t=function(e){r.setState({fuse:new i(e,{threshold:.25,caseSensitive:!0,includeScore:!0,tokenize:!0,keys:[{name:"name",weight:.7},{name:"module",weight:.3}]}),moduleResults:[]})},n=function(e){console&&console.error("could not load 'doc-index.json' for searching",e),r.setState({failedLoading:!0})},(o=new XMLHttpRequest).onreadystatechange=function(){if(o.readyState===XMLHttpRequest.DONE)if(200===o.status){if(t)try{t(JSON.parse(o.responseText))}catch(e){n(o)}}else n&&n(o)},o.open("GET",e,!0),o.send(),document.addEventListener("mousedown",this.hide.bind(this)),document.addEventListener("keydown",function(e){r.state.isVisible&&("Escape"===e.key?r.hide():"ArrowUp"===e.key||"k"===e.key&&e.ctrlKey?(e.preventDefault(),r.navigateLinks(-1)):"ArrowDown"===e.key||"j"===e.key&&e.ctrlKey?(e.preventDefault(),r.navigateLinks(1)):"Enter"===e.key&&0<=r.state.activeLinkIndex&&r.followActiveLink()),"s"===e.key&&"input"!==e.target.tagName.toLowerCase()&&(e.preventDefault(),r.show())})},e.prototype.hide=function(){this.setState({isVisible:!1,searchString:""})},e.prototype.show=function(){this.state.isVisible||(this.focusPlease=!0,this.setState({isVisible:!0,activeLinkIndex:-1}))},e.prototype.toggleVisibility=function(){this.state.isVisible?this.hide():this.show()},e.prototype.navigateLinks=function(e){var t=Math.max(-1,Math.min(this.linkIndex-1,this.state.activeLinkIndex+e));this.navigatedByKeyboard=!0,this.setState({activeLinkIndex:t})},e.prototype.followActiveLink=function(){this.activeLinkAction&&this.activeLinkAction()},e.prototype.updateResults=function(){var e=this.input&&this.input.value||"",t=this.state.fuse.search(e),o={};t.forEach(function(e){var t=e.item.module;(o[t]||(o[t]=[])).push(e)});var r=[],n=function(e){var t=o[e],n=0;t.forEach(function(e){n+=1/e.score}),r.push({module:e,totalScore:1/n,items:t})};for(var i in o)n(i);r.sort(function(e,t){return e.totalScore-t.totalScore}),this.setState({searchString:e,isVisible:!0,moduleResults:r})},e.prototype.componentDidUpdate=function(){if(this.searchResults&&this.activeLink&&this.navigatedByKeyboard){var e=this.activeLink.getClientRects()[0],t=this.searchResults.getClientRects()[0].top;e.bottom>window.innerHeight?this.searchResults.scrollTop+=e.bottom-window.innerHeight+80:e.top<t&&(this.searchResults.scrollTop-=t-e.top+80)}this.focusPlease&&this.input&&this.input.focus(),this.navigatedByKeyboard=!1,this.focusPlease=!1},e.prototype.componentDidMount=function(){this.props.showHideTrigger(this.toggleVisibility.bind(this))},e.prototype.render=function(e,t){var r=this;if(t.failedLoading){var n="file:"==window.location.protocol;return a("div",{id:"search",class:t.isVisible?"":"hidden"},a("div",{id:"search-results"},a("p",{class:"error"},"Failed to load file 'doc-index.json' containing definitions in this package."),n?a("p",{class:"error"},"To use quick jump, load this page with HTTP (from a local static file web server) instead of using the ",a("code",null,"file://")," protocol. (For security reasons, it is not possible to fetch auxiliary files using JS in a HTML page opened with ",a("code",null,"file://"),".)"):[]))}this.linkIndex=0;var o=function(e){e.stopPropagation()},i=h(10,t.moduleResults).map(function(e){return r.renderResultsInModule(e)});return a("div",{id:"search",class:t.isVisible?"":"hidden"},a("div",{id:"search-form",onMouseDown:o},a("input",{placeholder:"Search in package by name",ref:function(e){r.input=e},onFocus:this.show.bind(this),onClick:this.show.bind(this),onInput:this.updateResults.bind(this)})),a("div",{id:"search-results",ref:function(e){r.searchResults=e},onMouseDown:o,onMouseOver:function(e){for(var t=e.target;t&&"function"==typeof t.getAttribute;){var n=t.getAttribute("data-link-index");if("string"==typeof n){var o=parseInt(n,10);r.setState({activeLinkIndex:o});break}t=t.parentNode}}},""===t.searchString?[a(v,null),a(f,null)]:0==i.length?a(g,{searchString:t.searchString}):a("ul",null,i)))},e.prototype.renderResultsInModule=function(e){var n=this,t=e.items,o=e.module,r=this.state.expanded[o]||t.length<=10,i=r?t:h(8,t);return a("li",{class:"search-module"},a("h4",null,o),a("ul",null,i.map(function(e){return t=e.item,a("li",{class:"search-result"},n.navigationLink(n.props.baseUrl+"/"+t.link,{},a(d,{html:t.display_html})));var t}),r?[]:a("li",{class:"more-results"},this.actionLink(function(){var e=Object.assign({},n.state.expanded);e[o]=!0,n.setState({expanded:e})},{},"show "+(t.length-i.length)+" more results from this module"))))},e.prototype.navigationLink=function(e,t){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=Object.assign({href:e,onClick:this.hide.bind(this)},t);return this.menuLink.apply(this,[i,function(){window.location.href=e,n.hide()}].concat(o))},e.prototype.actionLink=function(t,e){for(var n=[],o=2;o<arguments.length;o++)n[o-2]=arguments[o];var r=Object.assign({href:"#",onClick:function(e){e.preventDefault(),t()}},e);return this.menuLink.apply(this,[r,t].concat(n))},e.prototype.menuLink=function(e,t){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=this.linkIndex;i===this.state.activeLinkIndex&&(e.class=(e.class?e.class+" ":"")+"active-link",e.ref=function(e){e&&(n.activeLink=e)},this.activeLinkAction=t);var s=Object.assign({"data-link-index":i},e);return this.linkIndex+=1,a.apply(void 0,["a",s].concat(o))},e}(l),d=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shouldComponentUpdate=function(e){return this.props.html!==e.html},t.prototype.render=function(e){return a("div",{dangerouslySetInnerHTML:{__html:e.html}})},t}(l);function f(){return a("table",{class:"keyboard-shortcuts"},a("tr",null,a("th",null,"Key"),a("th",null,"Shortcut")),a("tr",null,a("td",null,a("span",{class:"key"},"s")),a("td",null,"Open this search box")),a("tr",null,a("td",null,a("span",{class:"key"},"esc")),a("td",null,"Close this search box")),a("tr",null,a("td",null,a("span",{class:"key"},"↓"),",",a("span",{class:"key"},"ctrl")," + ",a("span",{class:"key"},"j")),a("td",null,"Move down in search results")),a("tr",null,a("td",null,a("span",{class:"key"},"↑"),",",a("span",{class:"key"},"ctrl")," + ",a("span",{class:"key"},"k")),a("td",null,"Move up in search results")),a("tr",null,a("td",null,a("span",{class:"key"},"↵")),a("td",null,"Go to active search result")))}function v(){return a("p",null,"You can find any exported type, constructor, class, function or pattern defined in this package by (approximate) name.")}function g(e){var t=[a("p",null,"Your search for '",e.searchString,"' produced the following list of results: ",a("code",null,"[]"),"."),a("p",null,a("code",null,"Nothing")," matches your query for '",e.searchString,"'."),a("p",null,a("code",null,"Left \"no matches for '",e.searchString,"'\" :: Either String (NonEmpty SearchResult)"))];return t[(e.searchString||"a").charCodeAt(0)%t.length]}function _(e,t){s.render(a(p,{baseUrl:e||".",showHideTrigger:t||u}),document.body)}n.init=_,window.quickNav={init:_}},{"fuse.js":2,preact:3}],2:[function(e,t,n){var o,r;o=this,r=function(){return function(n){var o={};function r(e){if(o[e])return o[e].exports;var t=o[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}return r.m=n,r.c=o,r.i=function(e){return e},r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=8)}([function(e,t,n){"use strict";e.exports=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";var o=function(){function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}}();var u=n(5),h=n(7),y=n(4),r=function(){function m(e,t){var n=t.location,o=void 0===n?0:n,r=t.distance,i=void 0===r?100:r,s=t.threshold,a=void 0===s?.6:s,l=t.maxPatternLength,c=void 0===l?32:l,u=t.isCaseSensitive,h=void 0!==u&&u,p=t.tokenSeparator,d=void 0===p?/ +/g:p,f=t.findAllMatches,v=void 0!==f&&f,g=t.minMatchCharLength,_=void 0===g?1:g;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,m),this.options={location:o,distance:i,threshold:a,maxPatternLength:c,isCaseSensitive:h,tokenSeparator:d,findAllMatches:v,minMatchCharLength:_},this.pattern=this.options.isCaseSensitive?e:e.toLowerCase(),this.pattern.length<=c&&(this.patternAlphabet=y(this.pattern))}return o(m,[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var t=this.options,n=t.maxPatternLength,o=t.tokenSeparator;if(this.pattern.length>n)return u(e,this.pattern,o);var r=this.options,i=r.location,s=r.distance,a=r.threshold,l=r.findAllMatches,c=r.minMatchCharLength;return h(e,this.pattern,this.patternAlphabet,{location:i,distance:s,threshold:a,findAllMatches:l,minMatchCharLength:c})}}]),m}();e.exports=r},function(e,t,n){"use strict";var u=n(0);e.exports=function(e,t){return function e(t,n,o){if(n){var r=n.indexOf("."),i=n,s=null;-1!==r&&(i=n.slice(0,r),s=n.slice(r+1));var a=t[i];if(null!=a)if(s||"string"!=typeof a&&"number"!=typeof a)if(u(a))for(var l=0,c=a.length;l<c;l+=1)e(a[l],s,o);else s&&e(a,s,o);else o.push(a.toString())}else o.push(t);return o}(e,t,[])}},function(e,t,n){"use strict";e.exports=function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=[],o=-1,r=-1,i=0,s=e.length;i<s;i+=1){var a=e[i];a&&-1===o?o=i:a||-1===o||(t<=(r=i-1)-o+1&&n.push([o,r]),o=-1)}return e[i-1]&&t<=i-o&&n.push([o,i-1]),n}},function(e,t,n){"use strict";e.exports=function(e){for(var t={},n=e.length,o=0;o<n;o+=1)t[e.charAt(o)]=0;for(var r=0;r<n;r+=1)t[e.charAt(r)]|=1<<n-r-1;return t}},function(e,t,n){"use strict";var u=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;e.exports=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:/ +/g,o=new RegExp(t.replace(u,"\\$&").replace(n,"|")),r=e.match(o),i=!!r,s=[];if(i)for(var a=0,l=r.length;a<l;a+=1){var c=r[a];s.push([e.indexOf(c),c.length-1])}return{score:i?.5:1,isMatch:i,matchedIndices:s}}},function(e,t,n){"use strict";e.exports=function(e,t){var n=t.errors,o=void 0===n?0:n,r=t.currentLocation,i=void 0===r?0:r,s=t.expectedLocation,a=void 0===s?0:s,l=t.distance,c=void 0===l?100:l,u=o/e.length,h=Math.abs(a-i);return c?u+h/c:h?1:u}},function(e,t,n){"use strict";var U=n(6),R=n(3);e.exports=function(e,t,n,o){for(var r=o.location,i=void 0===r?0:r,s=o.distance,a=void 0===s?100:s,l=o.threshold,c=void 0===l?.6:l,u=o.findAllMatches,h=void 0!==u&&u,p=o.minMatchCharLength,d=void 0===p?1:p,f=i,v=e.length,g=c,_=e.indexOf(t,f),m=t.length,y=[],k=0;k<v;k+=1)y[k]=0;if(-1!==_){var b=U(t,{errors:0,currentLocation:_,expectedLocation:f,distance:a});if(g=Math.min(b,g),-1!==(_=e.lastIndexOf(t,f+m))){var x=U(t,{errors:0,currentLocation:_,expectedLocation:f,distance:a});g=Math.min(x,g)}}_=-1;for(var S=[],w=1,L=m+v,C=1<<m-1,M=0;M<m;M+=1){for(var A=0,N=L;A<N;){U(t,{errors:M,currentLocation:f+N,expectedLocation:f,distance:a})<=g?A=N:L=N,N=Math.floor((L-A)/2+A)}L=N;var I=Math.max(1,f-N+1),T=h?v:Math.min(f+N,v)+m,O=Array(T+2);O[T+1]=(1<<M)-1;for(var P=T;I<=P;P-=1){var j=P-1,E=n[e.charAt(j)];if(E&&(y[j]=1),O[P]=(O[P+1]<<1|1)&E,0!==M&&(O[P]|=(S[P+1]|S[P])<<1|1|S[P+1]),O[P]&C&&(w=U(t,{errors:M,currentLocation:j,expectedLocation:f,distance:a}))<=g){if(g=w,(_=j)<=f)break;I=Math.max(1,2*f-_)}}if(g<U(t,{errors:M+1,currentLocation:f,expectedLocation:f,distance:a}))break;S=O}return{isMatch:0<=_,score:0===w?.001:w,matchedIndices:R(y,d)}}},function(e,t,n){"use strict";var o=function(){function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}}();var i=n(1),F=n(2),U=n(0),r=function(){function D(e,t){var n=t.location,o=void 0===n?0:n,r=t.distance,i=void 0===r?100:r,s=t.threshold,a=void 0===s?.6:s,l=t.maxPatternLength,c=void 0===l?32:l,u=t.caseSensitive,h=void 0!==u&&u,p=t.tokenSeparator,d=void 0===p?/ +/g:p,f=t.findAllMatches,v=void 0!==f&&f,g=t.minMatchCharLength,_=void 0===g?1:g,m=t.id,y=void 0===m?null:m,k=t.keys,b=void 0===k?[]:k,x=t.shouldSort,S=void 0===x||x,w=t.getFn,L=void 0===w?F:w,C=t.sortFn,M=void 0===C?function(e,t){return e.score-t.score}:C,A=t.tokenize,N=void 0!==A&&A,I=t.matchAllTokens,T=void 0!==I&&I,O=t.includeMatches,P=void 0!==O&&O,j=t.includeScore,E=void 0!==j&&j,U=t.verbose,R=void 0!==U&&U;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,D),this.options={location:o,distance:i,threshold:a,maxPatternLength:c,isCaseSensitive:h,tokenSeparator:d,findAllMatches:v,minMatchCharLength:_,id:y,keys:b,includeMatches:P,includeScore:E,shouldSort:S,getFn:L,sortFn:M,verbose:R,tokenize:N,matchAllTokens:T},this.setCollection(e)}return o(D,[{key:"setCollection",value:function(e){return this.list=e}},{key:"search",value:function(e){this._log('---------\nSearch pattern: "'+e+'"');var t=this._prepareSearchers(e),n=t.tokenSearchers,o=t.fullSearcher,r=this._search(n,o),i=r.weights,s=r.results;return this._computeScore(i,s),this.options.shouldSort&&this._sort(s),this._format(s)}},{key:"_prepareSearchers",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var n=e.split(this.options.tokenSeparator),o=0,r=n.length;o<r;o+=1)t.push(new i(n[o],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],n=this.list,o={},r=[];if("string"==typeof n[0]){for(var i=0,s=n.length;i<s;i+=1)this._analyze({key:"",value:n[i],record:i,index:i},{resultMap:o,results:r,tokenSearchers:e,fullSearcher:t});return{weights:null,results:r}}for(var a={},l=0,c=n.length;l<c;l+=1)for(var u=n[l],h=0,p=this.options.keys.length;h<p;h+=1){var d=this.options.keys[h];if("string"!=typeof d){if(a[d.name]={weight:1-d.weight||1},d.weight<=0||1<d.weight)throw new Error("Key weight has to be > 0 and <= 1");d=d.name}else a[d]={weight:1};this._analyze({key:d,value:this.options.getFn(u,d),record:u,index:l},{resultMap:o,results:r,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:r}}},{key:"_analyze",value:function(e,t){var n=e.key,o=e.arrayIndex,r=void 0===o?-1:o,i=e.value,s=e.record,a=e.index,l=t.tokenSearchers,c=void 0===l?[]:l,u=t.fullSearcher,h=void 0===u?[]:u,p=t.resultMap,d=void 0===p?{}:p,f=t.results,v=void 0===f?[]:f;if(null!=i){var g=!1,_=-1,m=0;if("string"==typeof i){this._log("\nKey: "+(""===n?"-":n));var y=h.search(i);if(this._log('Full text: "'+i+'", score: '+y.score),this.options.tokenize){for(var k=i.split(this.options.tokenSeparator),b=[],x=0;x<c.length;x+=1){var S=c[x];this._log('\nPattern: "'+S.pattern+'"');for(var w=!1,L=0;L<k.length;L+=1){var C=k[L],M=S.search(C),A={};M.isMatch?(A[C]=M.score,w=g=!0,b.push(M.score)):(A[C]=1,this.options.matchAllTokens||b.push(1)),this._log('Token: "'+C+'", score: '+A[C])}w&&(m+=1)}_=b[0];for(var N=b.length,I=1;I<N;I+=1)_+=b[I];_/=N,this._log("Token score average:",_)}var T=y.score;-1<_&&(T=(T+_)/2),this._log("Score average:",T);var O=!this.options.tokenize||!this.options.matchAllTokens||m>=c.length;if(this._log("\nCheck Matches: "+O),(g||y.isMatch)&&O){var P=d[a];P?P.output.push({key:n,arrayIndex:r,value:i,score:T,matchedIndices:y.matchedIndices}):(d[a]={item:s,output:[{key:n,arrayIndex:r,value:i,score:T,matchedIndices:y.matchedIndices}]},v.push(d[a]))}}else if(U(i))for(var j=0,E=i.length;j<E;j+=1)this._analyze({key:n,arrayIndex:j,value:i[j],record:s,index:a},{resultMap:d,results:v,tokenSearchers:c,fullSearcher:h})}}},{key:"_computeScore",value:function(e,t){this._log("\n\nComputing score:\n");for(var n=0,o=t.length;n<o;n+=1){for(var r=t[n].output,i=r.length,s=1,a=1,l=0;l<i;l+=1){var c=e?e[r[l].key].weight:1,u=(1===c?r[l].score:r[l].score||.001)*c;1!==c?a=Math.min(a,u):s*=r[l].nScore=u}t[n].score=1===a?s:a,this._log(t[n])}}},{key:"_sort",value:function(e){this._log("\n\nSorting...."),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){var t=[];this.options.verbose&&this._log("\n\nOutput:\n\n",JSON.stringify(e));var n=[];this.options.includeMatches&&n.push(function(e,t){var n=e.output;t.matches=[];for(var o=0,r=n.length;o<r;o+=1){var i=n[o];if(0!==i.matchedIndices.length){var s={indices:i.matchedIndices,value:i.value};i.key&&(s.key=i.key),i.hasOwnProperty("arrayIndex")&&-1<i.arrayIndex&&(s.arrayIndex=i.arrayIndex),t.matches.push(s)}}}),this.options.includeScore&&n.push(function(e,t){t.score=e.score});for(var o=0,r=e.length;o<r;o+=1){var i=e[o];if(this.options.id&&(i.item=this.options.getFn(i.item,this.options.id)[0]),n.length){for(var s={item:i.item},a=0,l=n.length;a<l;a+=1)n[a](i,s);t.push(s)}else t.push(i.item)}return t}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}]),D}();e.exports=r}])},"object"==typeof n&&"object"==typeof t?t.exports=r():"function"==typeof define&&define.amd?define("Fuse",[],r):"object"==typeof n?n.Fuse=r():o.Fuse=r()},{}],3:[function(e,m,t){!function(){"use strict";function n(e,t){var n,o,r,i,s=h;for(i=arguments.length;2<i--;)u.push(arguments[i]);for(t&&null!=t.children&&(u.length||u.push(t.children),delete t.children);u.length;)if((o=u.pop())&&void 0!==o.pop)for(i=o.length;i--;)u.push(o[i]);else"boolean"==typeof o&&(o=null),(r="function"!=typeof e)&&(null==o?o="":"number"==typeof o?o=String(o):"string"!=typeof o&&(r=!1)),r&&n?s[s.length-1]+=o:s===h?s=[o]:s.push(o),n=r;var a=new c;return a.nodeName=e,a.children=s,a.attributes=null==t?void 0:t,a.key=null==t?void 0:t.key,void 0!==R.vnode&&R.vnode(a),a}function C(e,t){for(var n in t)e[n]=t[n];return e}function i(e){!e.__d&&(e.__d=!0)&&1==d.push(e)&&(R.debounceRendering||r)(t)}function t(){var e,t=d;for(d=[];e=t.pop();)e.__d&&E(e)}function L(e,t){return e.__n===t||e.nodeName.toLowerCase()===t.toLowerCase()}function M(e){var t=C({},e.attributes);t.children=e.children;var n=e.nodeName.defaultProps;if(void 0!==n)for(var o in n)void 0===t[o]&&(t[o]=n[o]);return t}function A(e){var t=e.parentNode;t&&t.removeChild(e)}function v(e,t,n,o,r){if("className"===t&&(t="class"),"key"===t);else if("ref"===t)n&&n(null),o&&o(e);else if("class"!==t||r)if("style"===t){if(o&&"string"!=typeof o&&"string"!=typeof n||(e.style.cssText=o||""),o&&"object"==typeof o){if("string"!=typeof n)for(var i in n)i in o||(e.style[i]="");for(var i in o)e.style[i]="number"==typeof o[i]&&!1===p.test(i)?o[i]+"px":o[i]}}else if("dangerouslySetInnerHTML"===t)o&&(e.innerHTML=o.__html||"");else if("o"==t[0]&&"n"==t[1]){var s=t!==(t=t.replace(/Capture$/,""));t=t.toLowerCase().substring(2),o?n||e.addEventListener(t,l,s):e.removeEventListener(t,l,s),(e.__l||(e.__l={}))[t]=o}else if("list"!==t&&"type"!==t&&!r&&t in e){try{e[t]=null==o?"":o}catch(e){}null!=o&&!1!==o||"spellcheck"==t||e.removeAttribute(t)}else{var a=r&&t!==(t=t.replace(/^xlink:?/,""));null==o||!1===o?a?e.removeAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase()):e.removeAttribute(t):"function"!=typeof o&&(a?e.setAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase(),o):e.setAttribute(t,o))}else e.className=o||""}function l(e){return this.__l[e.type](R.event&&R.event(e)||e)}function N(){for(var e;e=D.pop();)R.afterMount&&R.afterMount(e),e.componentDidMount&&e.componentDidMount()}function I(e,t,n,o,r,i){F++||(g=null!=r&&void 0!==r.ownerSVGElement,_=null!=e&&!("__preactattr_"in e));var s=T(e,t,n,o,i);return r&&s.parentNode!==r&&r.appendChild(s),--F||(_=!1,i||N()),s}function T(e,t,n,o,r){var i=e,s=g;if(null!=t&&"boolean"!=typeof t||(t=""),"string"==typeof t||"number"==typeof t)return e&&void 0!==e.splitText&&e.parentNode&&(!e._component||r)?e.nodeValue!=t&&(e.nodeValue=t):(i=document.createTextNode(t),e&&(e.parentNode&&e.parentNode.replaceChild(i,e),O(e,!0))),i.__preactattr_=!0,i;var a,l,c=t.nodeName;if("function"==typeof c)return function(e,t,n,o){var r=e&&e._component,i=r,s=e,a=r&&e._componentConstructor===t.nodeName,l=a,c=M(t);for(;r&&!l&&(r=r.__u);)l=r.constructor===t.nodeName;r&&l&&(!o||r._component)?(j(r,c,3,n,o),e=r.base):(i&&!a&&(U(i),e=s=null),r=P(t.nodeName,c,n),e&&!r.__b&&(r.__b=e,s=null),j(r,c,1,n,o),e=r.base,s&&e!==s&&(s._component=null,O(s,!1)));return e}(e,t,n,o);if(g="svg"===c||"foreignObject"!==c&&g,c=String(c),(!e||!L(e,c))&&(a=c,(l=g?document.createElementNS("http://www.w3.org/2000/svg",a):document.createElement(a)).__n=a,i=l,e)){for(;e.firstChild;)i.appendChild(e.firstChild);e.parentNode&&e.parentNode.replaceChild(i,e),O(e,!0)}var u=i.firstChild,h=i.__preactattr_,p=t.children;if(null==h){h=i.__preactattr_={};for(var d=i.attributes,f=d.length;f--;)h[d[f].name]=d[f].value}return!_&&p&&1===p.length&&"string"==typeof p[0]&&null!=u&&void 0!==u.splitText&&null==u.nextSibling?u.nodeValue!=p[0]&&(u.nodeValue=p[0]):(p&&p.length||null!=u)&&function(e,t,n,o,r){var i,s,a,l,c,u=e.childNodes,h=[],p={},d=0,f=0,v=u.length,g=0,_=t?t.length:0;if(0!==v)for(var m=0;m<v;m++){var y=u[m],k=y.__preactattr_,b=_&&k?y._component?y._component.__k:k.key:null;null!=b?(d++,p[b]=y):(k||(void 0!==y.splitText?!r||y.nodeValue.trim():r))&&(h[g++]=y)}if(0!==_)for(var m=0;m<_;m++){l=t[m],c=null;var b=l.key;if(null!=b)d&&void 0!==p[b]&&(c=p[b],p[b]=void 0,d--);else if(f<g)for(i=f;i<g;i++)if(void 0!==h[i]&&(x=s=h[i],w=r,"string"==typeof(S=l)||"number"==typeof S?void 0!==x.splitText:"string"==typeof S.nodeName?!x._componentConstructor&&L(x,S.nodeName):w||x._componentConstructor===S.nodeName)){c=s,h[i]=void 0,i===g-1&&g--,i===f&&f++;break}c=T(c,l,n,o),a=u[m],c&&c!==e&&c!==a&&(null==a?e.appendChild(c):c===a.nextSibling?A(a):e.insertBefore(c,a))}var x,S,w;if(d)for(var m in p)void 0!==p[m]&&O(p[m],!1);for(;f<=g;)void 0!==(c=h[g--])&&O(c,!1)}(i,p,n,o,_||null!=h.dangerouslySetInnerHTML),function(e,t,n){var o;for(o in n)t&&null!=t[o]||null==n[o]||v(e,o,n[o],n[o]=void 0,g);for(o in t)"children"===o||"innerHTML"===o||o in n&&t[o]===("value"===o||"checked"===o?e[o]:n[o])||v(e,o,n[o],n[o]=t[o],g)}(i,t.attributes,h),g=s,i}function O(e,t){var n=e._component;n?U(n):(null!=e.__preactattr_&&e.__preactattr_.ref&&e.__preactattr_.ref(null),!1!==t&&null!=e.__preactattr_||A(e),o(e))}function o(e){for(e=e.lastChild;e;){var t=e.previousSibling;O(e,!0),e=t}}function P(e,t,n){var o,r=f.length;for(e.prototype&&e.prototype.render?(o=new e(t,n),a.call(o,t,n)):((o=new a(t,n)).constructor=e,o.render=s);r--;)if(f[r].constructor===e)return o.__b=f[r].__b,f.splice(r,1),o;return o}function s(e,t,n){return this.constructor(e,n)}function j(e,t,n,o,r){e.__x||(e.__x=!0,e.__r=t.ref,e.__k=t.key,delete t.ref,delete t.key,void 0===e.constructor.getDerivedStateFromProps&&(!e.base||r?e.componentWillMount&&e.componentWillMount():e.componentWillReceiveProps&&e.componentWillReceiveProps(t,o)),o&&o!==e.context&&(e.__c||(e.__c=e.context),e.context=o),e.__p||(e.__p=e.props),e.props=t,e.__x=!1,0!==n&&(1!==n&&!1===R.syncComponentUpdates&&e.base?i(e):E(e,1,r)),e.__r&&e.__r(e))}function E(e,t,n,o){if(!e.__x){var r,i,s,a=e.props,l=e.state,c=e.context,u=e.__p||a,h=e.__s||l,p=e.__c||c,d=e.base,f=e.__b,v=d||f,g=e._component,_=!1,m=p;if(e.constructor.getDerivedStateFromProps&&(l=C(C({},l),e.constructor.getDerivedStateFromProps(a,l)),e.state=l),d&&(e.props=u,e.state=h,e.context=p,2!==t&&e.shouldComponentUpdate&&!1===e.shouldComponentUpdate(a,l,c)?_=!0:e.componentWillUpdate&&e.componentWillUpdate(a,l,c),e.props=a,e.state=l,e.context=c),e.__p=e.__s=e.__c=e.__b=null,e.__d=!1,!_){r=e.render(a,l,c),e.getChildContext&&(c=C(C({},c),e.getChildContext())),d&&e.getSnapshotBeforeUpdate&&(m=e.getSnapshotBeforeUpdate(u,h));var y,k,b=r&&r.nodeName;if("function"==typeof b){var x=M(r);(i=g)&&i.constructor===b&&x.key==i.__k?j(i,x,1,c,!1):(y=i,e._component=i=P(b,x,c),i.__b=i.__b||f,i.__u=e,j(i,x,0,c,!1),E(i,1,n,!0)),k=i.base}else s=v,(y=g)&&(s=e._component=null),(v||1===t)&&(s&&(s._component=null),k=I(s,r,c,n||!d,v&&v.parentNode,!0));if(v&&k!==v&&i!==g){var S=v.parentNode;S&&k!==S&&(S.replaceChild(k,v),y||(v._component=null,O(v,!1)))}if(y&&U(y),(e.base=k)&&!o){for(var w=e,L=e;L=L.__u;)(w=L).base=k;k._component=w,k._componentConstructor=w.constructor}}for(!d||n?D.unshift(e):_||(e.componentDidUpdate&&e.componentDidUpdate(u,h,m),R.afterUpdate&&R.afterUpdate(e));e.__h.length;)e.__h.pop().call(e);F||o||N()}}function U(e){R.beforeUnmount&&R.beforeUnmount(e);var t=e.base;e.__x=!0,e.componentWillUnmount&&e.componentWillUnmount(),e.base=null;var n=e._component;n?U(n):t&&(t.__preactattr_&&t.__preactattr_.ref&&t.__preactattr_.ref(null),A(e.__b=t),f.push(e),o(t)),e.__r&&e.__r(null)}function a(e,t){this.__d=!0,this.context=t,this.props=e,this.state=this.state||{},this.__h=[]}var c=function(){},R={},u=[],h=[],r="function"==typeof Promise?Promise.resolve().then.bind(Promise.resolve()):setTimeout,p=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,d=[],D=[],F=0,g=!1,_=!1,f=[];C(a.prototype,{setState:function(e,t){this.__s||(this.__s=this.state),this.state=C(C({},this.state),"function"==typeof e?e(this.state,this.props):e),t&&this.__h.push(t),i(this)},forceUpdate:function(e){e&&this.__h.push(e),E(this,2)},render:function(){}});var e={h:n,createElement:n,cloneElement:function(e,t){return n(e.nodeName,C(C({},e.attributes),t),2<arguments.length?[].slice.call(arguments,2):e.children)},Component:a,render:function(e,t,n){return I(n,e,{},!1,t,!1)},rerender:t,options:R};void 0!==m?m.exports=e:self.preact=e}()},{}]},{},[1]); +!function i(s,a,l){function c(t,e){if(!a[t]){if(!s[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(u)return u(t,!0);var o=new Error("Cannot find module '"+t+"'");throw o.code="MODULE_NOT_FOUND",o}var r=a[t]={exports:{}};s[t][0].call(r.exports,function(e){return c(s[t][1][e]||e)},r,r.exports,i,s,a,l)}return a[t].exports}for(var u="function"==typeof require&&require,e=0;e<l.length;e++)c(l[e]);return c}({1:[function(e,t,n){"use strict";var o,r=this&&this.__extends||(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(n,"__esModule",{value:!0});var i=e("fuse.js"),s=e("preact"),a=s.h,l=s.Component;var c=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(t){return a("li",null,a("a",{href:"#",onClick:function(e){e.preventDefault(),t.onClick()}},t.title))},t}(l);function u(e,t){return t.length<=e?t:t.slice(0,e)}var h=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.linkIndex=0,e.focusPlease=!1,e.navigatedByKeyboard=!1,e}return r(e,t),e.prototype.componentWillMount=function(){var e,t,n,o,r=this;this.setState({searchString:"",isVisible:!1,expanded:{},activeLinkIndex:-1,moduleResults:[]}),e=this.props.baseUrl+"/doc-index.json",t=function(e){r.setState({fuse:new i(e,{threshold:.25,caseSensitive:!0,includeScore:!0,tokenize:!0,keys:[{name:"name",weight:.7},{name:"module",weight:.3}]}),moduleResults:[]})},n=function(e){console&&console.error("could not load 'doc-index.json' for searching",e),r.setState({failedLoading:!0})},(o=new XMLHttpRequest).onreadystatechange=function(){if(o.readyState===XMLHttpRequest.DONE)if(200===o.status){if(t)try{t(JSON.parse(o.responseText))}catch(e){n(o)}}else n&&n(o)},o.open("GET",e,!0),o.send(),document.addEventListener("mousedown",this.hide.bind(this)),document.addEventListener("keydown",function(e){r.state.isVisible&&("Escape"===e.key?r.hide():"ArrowUp"===e.key||"k"===e.key&&e.ctrlKey?(e.preventDefault(),r.navigateLinks(-1)):"ArrowDown"===e.key||"j"===e.key&&e.ctrlKey?(e.preventDefault(),r.navigateLinks(1)):"Enter"===e.key&&0<=r.state.activeLinkIndex&&r.followActiveLink()),"s"===e.key&&"input"!==e.target.tagName.toLowerCase()&&(e.preventDefault(),r.show())})},e.prototype.hide=function(){this.setState({isVisible:!1,searchString:""})},e.prototype.show=function(){this.state.isVisible||(this.focusPlease=!0,this.setState({isVisible:!0,activeLinkIndex:-1}))},e.prototype.toggleVisibility=function(){this.state.isVisible?this.hide():this.show()},e.prototype.navigateLinks=function(e){var t=Math.max(-1,Math.min(this.linkIndex-1,this.state.activeLinkIndex+e));this.navigatedByKeyboard=!0,this.setState({activeLinkIndex:t})},e.prototype.followActiveLink=function(){this.activeLinkAction&&this.activeLinkAction()},e.prototype.updateResults=function(){var e=this.input&&this.input.value||"",t=this.state.fuse.search(e),o={};t.forEach(function(e){var t=e.item.module;(o[t]||(o[t]=[])).push(e)});var r=[],n=function(e){var t=o[e],n=0;t.forEach(function(e){n+=1/e.score}),r.push({module:e,totalScore:1/n,items:t})};for(var i in o)n(i);r.sort(function(e,t){return e.totalScore-t.totalScore}),this.setState({searchString:e,isVisible:!0,moduleResults:r})},e.prototype.componentDidUpdate=function(){if(this.searchResults&&this.activeLink&&this.navigatedByKeyboard){var e=this.activeLink.getClientRects()[0],t=this.searchResults.getClientRects()[0].top;e.bottom>window.innerHeight?this.searchResults.scrollTop+=e.bottom-window.innerHeight+80:e.top<t&&(this.searchResults.scrollTop-=t-e.top+80)}this.focusPlease&&this.input&&this.input.focus(),this.navigatedByKeyboard=!1,this.focusPlease=!1},e.prototype.componentDidMount=function(){this.props.showHideTrigger(this.toggleVisibility.bind(this))},e.prototype.render=function(e,t){var r=this;if(t.failedLoading){var n="file:"==window.location.protocol;return a("div",{id:"search",class:t.isVisible?"":"hidden"},a("div",{id:"search-results"},a("p",{class:"error"},"Failed to load file 'doc-index.json' containing definitions in this package."),n?a("p",{class:"error"},"To use quick jump, load this page with HTTP (from a local static file web server) instead of using the ",a("code",null,"file://")," protocol. (For security reasons, it is not possible to fetch auxiliary files using JS in a HTML page opened with ",a("code",null,"file://"),".)"):[]))}this.linkIndex=0;var o=function(e){e.stopPropagation()},i=u(10,t.moduleResults).map(function(e){return r.renderResultsInModule(e)});return a("div",{id:"search",class:t.isVisible?"":"hidden"},a("div",{id:"search-form",onMouseDown:o},a("input",{placeholder:"Search in package by name",ref:function(e){r.input=e},onFocus:this.show.bind(this),onClick:this.show.bind(this),onInput:this.updateResults.bind(this)})),a("div",{id:"search-results",ref:function(e){r.searchResults=e},onMouseDown:o,onMouseOver:function(e){for(var t=e.target;t&&"function"==typeof t.getAttribute;){var n=t.getAttribute("data-link-index");if("string"==typeof n){var o=parseInt(n,10);r.setState({activeLinkIndex:o});break}t=t.parentNode}}},""===t.searchString?[a(f,null),a(d,null)]:0==i.length?a(v,{searchString:t.searchString}):a("ul",null,i)))},e.prototype.renderResultsInModule=function(e){var n=this,t=e.items,o=e.module,r=this.state.expanded[o]||t.length<=10,i=r?t:u(8,t);return a("li",{class:"search-module"},a("h4",null,o),a("ul",null,i.map(function(e){return t=e.item,a("li",{class:"search-result"},n.navigationLink(n.props.baseUrl+"/"+t.link,{},a(p,{html:t.display_html})));var t}),r?[]:a("li",{class:"more-results"},this.actionLink(function(){var e=Object.assign({},n.state.expanded);e[o]=!0,n.setState({expanded:e})},{},"show "+(t.length-i.length)+" more results from this module"))))},e.prototype.navigationLink=function(e,t){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=Object.assign({href:e,onClick:this.hide.bind(this)},t);return this.menuLink.apply(this,[i,function(){window.location.href=e,n.hide()}].concat(o))},e.prototype.actionLink=function(t,e){for(var n=[],o=2;o<arguments.length;o++)n[o-2]=arguments[o];var r=Object.assign({href:"#",onClick:function(e){e.preventDefault(),t()}},e);return this.menuLink.apply(this,[r,t].concat(n))},e.prototype.menuLink=function(e,t){for(var n=this,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];var i=this.linkIndex;i===this.state.activeLinkIndex&&(e.class=(e.class?e.class+" ":"")+"active-link",e.ref=function(e){e&&(n.activeLink=e)},this.activeLinkAction=t);var s=Object.assign({"data-link-index":i},e);return this.linkIndex+=1,a.apply(void 0,["a",s].concat(o))},e}(l),p=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shouldComponentUpdate=function(e){return this.props.html!==e.html},t.prototype.render=function(e){return a("div",{dangerouslySetInnerHTML:{__html:e.html}})},t}(l);function d(){return a("table",{class:"keyboard-shortcuts"},a("tr",null,a("th",null,"Key"),a("th",null,"Shortcut")),a("tr",null,a("td",null,a("span",{class:"key"},"s")),a("td",null,"Open this search box")),a("tr",null,a("td",null,a("span",{class:"key"},"esc")),a("td",null,"Close this search box")),a("tr",null,a("td",null,a("span",{class:"key"},"↓"),",",a("span",{class:"key"},"ctrl")," + ",a("span",{class:"key"},"j")),a("td",null,"Move down in search results")),a("tr",null,a("td",null,a("span",{class:"key"},"↑"),",",a("span",{class:"key"},"ctrl")," + ",a("span",{class:"key"},"k")),a("td",null,"Move up in search results")),a("tr",null,a("td",null,a("span",{class:"key"},"↵")),a("td",null,"Go to active search result")))}function f(){return a("p",null,"You can find any exported type, constructor, class, function or pattern defined in this package by (approximate) name.")}function v(e){var t=[a("p",null,"Your search for '",e.searchString,"' produced the following list of results: ",a("code",null,"[]"),"."),a("p",null,a("code",null,"Nothing")," matches your query for '",e.searchString,"'."),a("p",null,a("code",null,"Left \"no matches for '",e.searchString,"'\" :: Either String (NonEmpty SearchResult)"))];return t[(e.searchString||"a").charCodeAt(0)%t.length]}function g(e,t){var n,o=document.getElementById("quick-jump-button");o&&s.render(a(h,{baseUrl:e||".",showHideTrigger:t||(n=o,function(e){var t=document.querySelector("#page-menu");s.render(a(c,{onClick:e,title:"Quick Jump"}),t,n)})}),document.body)}n.init=g,window.quickNav={init:g}},{"fuse.js":2,preact:3}],2:[function(e,t,n){var o,r;o=this,r=function(){return function(n){var o={};function r(e){if(o[e])return o[e].exports;var t=o[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}return r.m=n,r.c=o,r.i=function(e){return e},r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=8)}([function(e,t,n){"use strict";e.exports=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";var o=function(){function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}}();var u=n(5),h=n(7),y=n(4),r=function(){function m(e,t){var n=t.location,o=void 0===n?0:n,r=t.distance,i=void 0===r?100:r,s=t.threshold,a=void 0===s?.6:s,l=t.maxPatternLength,c=void 0===l?32:l,u=t.isCaseSensitive,h=void 0!==u&&u,p=t.tokenSeparator,d=void 0===p?/ +/g:p,f=t.findAllMatches,v=void 0!==f&&f,g=t.minMatchCharLength,_=void 0===g?1:g;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,m),this.options={location:o,distance:i,threshold:a,maxPatternLength:c,isCaseSensitive:h,tokenSeparator:d,findAllMatches:v,minMatchCharLength:_},this.pattern=this.options.isCaseSensitive?e:e.toLowerCase(),this.pattern.length<=c&&(this.patternAlphabet=y(this.pattern))}return o(m,[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var t=this.options,n=t.maxPatternLength,o=t.tokenSeparator;if(this.pattern.length>n)return u(e,this.pattern,o);var r=this.options,i=r.location,s=r.distance,a=r.threshold,l=r.findAllMatches,c=r.minMatchCharLength;return h(e,this.pattern,this.patternAlphabet,{location:i,distance:s,threshold:a,findAllMatches:l,minMatchCharLength:c})}}]),m}();e.exports=r},function(e,t,n){"use strict";var u=n(0);e.exports=function(e,t){return function e(t,n,o){if(n){var r=n.indexOf("."),i=n,s=null;-1!==r&&(i=n.slice(0,r),s=n.slice(r+1));var a=t[i];if(null!=a)if(s||"string"!=typeof a&&"number"!=typeof a)if(u(a))for(var l=0,c=a.length;l<c;l+=1)e(a[l],s,o);else s&&e(a,s,o);else o.push(a.toString())}else o.push(t);return o}(e,t,[])}},function(e,t,n){"use strict";e.exports=function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=[],o=-1,r=-1,i=0,s=e.length;i<s;i+=1){var a=e[i];a&&-1===o?o=i:a||-1===o||(t<=(r=i-1)-o+1&&n.push([o,r]),o=-1)}return e[i-1]&&t<=i-o&&n.push([o,i-1]),n}},function(e,t,n){"use strict";e.exports=function(e){for(var t={},n=e.length,o=0;o<n;o+=1)t[e.charAt(o)]=0;for(var r=0;r<n;r+=1)t[e.charAt(r)]|=1<<n-r-1;return t}},function(e,t,n){"use strict";var u=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;e.exports=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:/ +/g,o=new RegExp(t.replace(u,"\\$&").replace(n,"|")),r=e.match(o),i=!!r,s=[];if(i)for(var a=0,l=r.length;a<l;a+=1){var c=r[a];s.push([e.indexOf(c),c.length-1])}return{score:i?.5:1,isMatch:i,matchedIndices:s}}},function(e,t,n){"use strict";e.exports=function(e,t){var n=t.errors,o=void 0===n?0:n,r=t.currentLocation,i=void 0===r?0:r,s=t.expectedLocation,a=void 0===s?0:s,l=t.distance,c=void 0===l?100:l,u=o/e.length,h=Math.abs(a-i);return c?u+h/c:h?1:u}},function(e,t,n){"use strict";var U=n(6),R=n(3);e.exports=function(e,t,n,o){for(var r=o.location,i=void 0===r?0:r,s=o.distance,a=void 0===s?100:s,l=o.threshold,c=void 0===l?.6:l,u=o.findAllMatches,h=void 0!==u&&u,p=o.minMatchCharLength,d=void 0===p?1:p,f=i,v=e.length,g=c,_=e.indexOf(t,f),m=t.length,y=[],k=0;k<v;k+=1)y[k]=0;if(-1!==_){var b=U(t,{errors:0,currentLocation:_,expectedLocation:f,distance:a});if(g=Math.min(b,g),-1!==(_=e.lastIndexOf(t,f+m))){var x=U(t,{errors:0,currentLocation:_,expectedLocation:f,distance:a});g=Math.min(x,g)}}_=-1;for(var S=[],w=1,L=m+v,C=1<<m-1,M=0;M<m;M+=1){for(var A=0,I=L;A<I;){U(t,{errors:M,currentLocation:f+I,expectedLocation:f,distance:a})<=g?A=I:L=I,I=Math.floor((L-A)/2+A)}L=I;var N=Math.max(1,f-I+1),T=h?v:Math.min(f+I,v)+m,O=Array(T+2);O[T+1]=(1<<M)-1;for(var P=T;N<=P;P-=1){var j=P-1,E=n[e.charAt(j)];if(E&&(y[j]=1),O[P]=(O[P+1]<<1|1)&E,0!==M&&(O[P]|=(S[P+1]|S[P])<<1|1|S[P+1]),O[P]&C&&(w=U(t,{errors:M,currentLocation:j,expectedLocation:f,distance:a}))<=g){if(g=w,(_=j)<=f)break;N=Math.max(1,2*f-_)}}if(g<U(t,{errors:M+1,currentLocation:f,expectedLocation:f,distance:a}))break;S=O}return{isMatch:0<=_,score:0===w?.001:w,matchedIndices:R(y,d)}}},function(e,t,n){"use strict";var o=function(){function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}}();var i=n(1),F=n(2),U=n(0),r=function(){function D(e,t){var n=t.location,o=void 0===n?0:n,r=t.distance,i=void 0===r?100:r,s=t.threshold,a=void 0===s?.6:s,l=t.maxPatternLength,c=void 0===l?32:l,u=t.caseSensitive,h=void 0!==u&&u,p=t.tokenSeparator,d=void 0===p?/ +/g:p,f=t.findAllMatches,v=void 0!==f&&f,g=t.minMatchCharLength,_=void 0===g?1:g,m=t.id,y=void 0===m?null:m,k=t.keys,b=void 0===k?[]:k,x=t.shouldSort,S=void 0===x||x,w=t.getFn,L=void 0===w?F:w,C=t.sortFn,M=void 0===C?function(e,t){return e.score-t.score}:C,A=t.tokenize,I=void 0!==A&&A,N=t.matchAllTokens,T=void 0!==N&&N,O=t.includeMatches,P=void 0!==O&&O,j=t.includeScore,E=void 0!==j&&j,U=t.verbose,R=void 0!==U&&U;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,D),this.options={location:o,distance:i,threshold:a,maxPatternLength:c,isCaseSensitive:h,tokenSeparator:d,findAllMatches:v,minMatchCharLength:_,id:y,keys:b,includeMatches:P,includeScore:E,shouldSort:S,getFn:L,sortFn:M,verbose:R,tokenize:I,matchAllTokens:T},this.setCollection(e)}return o(D,[{key:"setCollection",value:function(e){return this.list=e}},{key:"search",value:function(e){this._log('---------\nSearch pattern: "'+e+'"');var t=this._prepareSearchers(e),n=t.tokenSearchers,o=t.fullSearcher,r=this._search(n,o),i=r.weights,s=r.results;return this._computeScore(i,s),this.options.shouldSort&&this._sort(s),this._format(s)}},{key:"_prepareSearchers",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var n=e.split(this.options.tokenSeparator),o=0,r=n.length;o<r;o+=1)t.push(new i(n[o],this.options));return{tokenSearchers:t,fullSearcher:new i(e,this.options)}}},{key:"_search",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],n=this.list,o={},r=[];if("string"==typeof n[0]){for(var i=0,s=n.length;i<s;i+=1)this._analyze({key:"",value:n[i],record:i,index:i},{resultMap:o,results:r,tokenSearchers:e,fullSearcher:t});return{weights:null,results:r}}for(var a={},l=0,c=n.length;l<c;l+=1)for(var u=n[l],h=0,p=this.options.keys.length;h<p;h+=1){var d=this.options.keys[h];if("string"!=typeof d){if(a[d.name]={weight:1-d.weight||1},d.weight<=0||1<d.weight)throw new Error("Key weight has to be > 0 and <= 1");d=d.name}else a[d]={weight:1};this._analyze({key:d,value:this.options.getFn(u,d),record:u,index:l},{resultMap:o,results:r,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:r}}},{key:"_analyze",value:function(e,t){var n=e.key,o=e.arrayIndex,r=void 0===o?-1:o,i=e.value,s=e.record,a=e.index,l=t.tokenSearchers,c=void 0===l?[]:l,u=t.fullSearcher,h=void 0===u?[]:u,p=t.resultMap,d=void 0===p?{}:p,f=t.results,v=void 0===f?[]:f;if(null!=i){var g=!1,_=-1,m=0;if("string"==typeof i){this._log("\nKey: "+(""===n?"-":n));var y=h.search(i);if(this._log('Full text: "'+i+'", score: '+y.score),this.options.tokenize){for(var k=i.split(this.options.tokenSeparator),b=[],x=0;x<c.length;x+=1){var S=c[x];this._log('\nPattern: "'+S.pattern+'"');for(var w=!1,L=0;L<k.length;L+=1){var C=k[L],M=S.search(C),A={};M.isMatch?(A[C]=M.score,w=g=!0,b.push(M.score)):(A[C]=1,this.options.matchAllTokens||b.push(1)),this._log('Token: "'+C+'", score: '+A[C])}w&&(m+=1)}_=b[0];for(var I=b.length,N=1;N<I;N+=1)_+=b[N];_/=I,this._log("Token score average:",_)}var T=y.score;-1<_&&(T=(T+_)/2),this._log("Score average:",T);var O=!this.options.tokenize||!this.options.matchAllTokens||m>=c.length;if(this._log("\nCheck Matches: "+O),(g||y.isMatch)&&O){var P=d[a];P?P.output.push({key:n,arrayIndex:r,value:i,score:T,matchedIndices:y.matchedIndices}):(d[a]={item:s,output:[{key:n,arrayIndex:r,value:i,score:T,matchedIndices:y.matchedIndices}]},v.push(d[a]))}}else if(U(i))for(var j=0,E=i.length;j<E;j+=1)this._analyze({key:n,arrayIndex:j,value:i[j],record:s,index:a},{resultMap:d,results:v,tokenSearchers:c,fullSearcher:h})}}},{key:"_computeScore",value:function(e,t){this._log("\n\nComputing score:\n");for(var n=0,o=t.length;n<o;n+=1){for(var r=t[n].output,i=r.length,s=1,a=1,l=0;l<i;l+=1){var c=e?e[r[l].key].weight:1,u=(1===c?r[l].score:r[l].score||.001)*c;1!==c?a=Math.min(a,u):s*=r[l].nScore=u}t[n].score=1===a?s:a,this._log(t[n])}}},{key:"_sort",value:function(e){this._log("\n\nSorting...."),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){var t=[];this.options.verbose&&this._log("\n\nOutput:\n\n",JSON.stringify(e));var n=[];this.options.includeMatches&&n.push(function(e,t){var n=e.output;t.matches=[];for(var o=0,r=n.length;o<r;o+=1){var i=n[o];if(0!==i.matchedIndices.length){var s={indices:i.matchedIndices,value:i.value};i.key&&(s.key=i.key),i.hasOwnProperty("arrayIndex")&&-1<i.arrayIndex&&(s.arrayIndex=i.arrayIndex),t.matches.push(s)}}}),this.options.includeScore&&n.push(function(e,t){t.score=e.score});for(var o=0,r=e.length;o<r;o+=1){var i=e[o];if(this.options.id&&(i.item=this.options.getFn(i.item,this.options.id)[0]),n.length){for(var s={item:i.item},a=0,l=n.length;a<l;a+=1)n[a](i,s);t.push(s)}else t.push(i.item)}return t}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}]),D}();e.exports=r}])},"object"==typeof n&&"object"==typeof t?t.exports=r():"function"==typeof define&&define.amd?define("Fuse",[],r):"object"==typeof n?n.Fuse=r():o.Fuse=r()},{}],3:[function(e,m,t){!function(){"use strict";function n(e,t){var n,o,r,i,s=h;for(i=arguments.length;2<i--;)u.push(arguments[i]);for(t&&null!=t.children&&(u.length||u.push(t.children),delete t.children);u.length;)if((o=u.pop())&&void 0!==o.pop)for(i=o.length;i--;)u.push(o[i]);else"boolean"==typeof o&&(o=null),(r="function"!=typeof e)&&(null==o?o="":"number"==typeof o?o=String(o):"string"!=typeof o&&(r=!1)),r&&n?s[s.length-1]+=o:s===h?s=[o]:s.push(o),n=r;var a=new c;return a.nodeName=e,a.children=s,a.attributes=null==t?void 0:t,a.key=null==t?void 0:t.key,void 0!==R.vnode&&R.vnode(a),a}function C(e,t){for(var n in t)e[n]=t[n];return e}function i(e){!e.__d&&(e.__d=!0)&&1==d.push(e)&&(R.debounceRendering||r)(t)}function t(){var e,t=d;for(d=[];e=t.pop();)e.__d&&E(e)}function L(e,t){return e.__n===t||e.nodeName.toLowerCase()===t.toLowerCase()}function M(e){var t=C({},e.attributes);t.children=e.children;var n=e.nodeName.defaultProps;if(void 0!==n)for(var o in n)void 0===t[o]&&(t[o]=n[o]);return t}function A(e){var t=e.parentNode;t&&t.removeChild(e)}function v(e,t,n,o,r){if("className"===t&&(t="class"),"key"===t);else if("ref"===t)n&&n(null),o&&o(e);else if("class"!==t||r)if("style"===t){if(o&&"string"!=typeof o&&"string"!=typeof n||(e.style.cssText=o||""),o&&"object"==typeof o){if("string"!=typeof n)for(var i in n)i in o||(e.style[i]="");for(var i in o)e.style[i]="number"==typeof o[i]&&!1===p.test(i)?o[i]+"px":o[i]}}else if("dangerouslySetInnerHTML"===t)o&&(e.innerHTML=o.__html||"");else if("o"==t[0]&&"n"==t[1]){var s=t!==(t=t.replace(/Capture$/,""));t=t.toLowerCase().substring(2),o?n||e.addEventListener(t,l,s):e.removeEventListener(t,l,s),(e.__l||(e.__l={}))[t]=o}else if("list"!==t&&"type"!==t&&!r&&t in e){try{e[t]=null==o?"":o}catch(e){}null!=o&&!1!==o||"spellcheck"==t||e.removeAttribute(t)}else{var a=r&&t!==(t=t.replace(/^xlink:?/,""));null==o||!1===o?a?e.removeAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase()):e.removeAttribute(t):"function"!=typeof o&&(a?e.setAttributeNS("http://www.w3.org/1999/xlink",t.toLowerCase(),o):e.setAttribute(t,o))}else e.className=o||""}function l(e){return this.__l[e.type](R.event&&R.event(e)||e)}function I(){for(var e;e=D.pop();)R.afterMount&&R.afterMount(e),e.componentDidMount&&e.componentDidMount()}function N(e,t,n,o,r,i){F++||(g=null!=r&&void 0!==r.ownerSVGElement,_=null!=e&&!("__preactattr_"in e));var s=T(e,t,n,o,i);return r&&s.parentNode!==r&&r.appendChild(s),--F||(_=!1,i||I()),s}function T(e,t,n,o,r){var i=e,s=g;if(null!=t&&"boolean"!=typeof t||(t=""),"string"==typeof t||"number"==typeof t)return e&&void 0!==e.splitText&&e.parentNode&&(!e._component||r)?e.nodeValue!=t&&(e.nodeValue=t):(i=document.createTextNode(t),e&&(e.parentNode&&e.parentNode.replaceChild(i,e),O(e,!0))),i.__preactattr_=!0,i;var a,l,c=t.nodeName;if("function"==typeof c)return function(e,t,n,o){var r=e&&e._component,i=r,s=e,a=r&&e._componentConstructor===t.nodeName,l=a,c=M(t);for(;r&&!l&&(r=r.__u);)l=r.constructor===t.nodeName;r&&l&&(!o||r._component)?(j(r,c,3,n,o),e=r.base):(i&&!a&&(U(i),e=s=null),r=P(t.nodeName,c,n),e&&!r.__b&&(r.__b=e,s=null),j(r,c,1,n,o),e=r.base,s&&e!==s&&(s._component=null,O(s,!1)));return e}(e,t,n,o);if(g="svg"===c||"foreignObject"!==c&&g,c=String(c),(!e||!L(e,c))&&(a=c,(l=g?document.createElementNS("http://www.w3.org/2000/svg",a):document.createElement(a)).__n=a,i=l,e)){for(;e.firstChild;)i.appendChild(e.firstChild);e.parentNode&&e.parentNode.replaceChild(i,e),O(e,!0)}var u=i.firstChild,h=i.__preactattr_,p=t.children;if(null==h){h=i.__preactattr_={};for(var d=i.attributes,f=d.length;f--;)h[d[f].name]=d[f].value}return!_&&p&&1===p.length&&"string"==typeof p[0]&&null!=u&&void 0!==u.splitText&&null==u.nextSibling?u.nodeValue!=p[0]&&(u.nodeValue=p[0]):(p&&p.length||null!=u)&&function(e,t,n,o,r){var i,s,a,l,c,u=e.childNodes,h=[],p={},d=0,f=0,v=u.length,g=0,_=t?t.length:0;if(0!==v)for(var m=0;m<v;m++){var y=u[m],k=y.__preactattr_,b=_&&k?y._component?y._component.__k:k.key:null;null!=b?(d++,p[b]=y):(k||(void 0!==y.splitText?!r||y.nodeValue.trim():r))&&(h[g++]=y)}if(0!==_)for(var m=0;m<_;m++){l=t[m],c=null;var b=l.key;if(null!=b)d&&void 0!==p[b]&&(c=p[b],p[b]=void 0,d--);else if(f<g)for(i=f;i<g;i++)if(void 0!==h[i]&&(x=s=h[i],w=r,"string"==typeof(S=l)||"number"==typeof S?void 0!==x.splitText:"string"==typeof S.nodeName?!x._componentConstructor&&L(x,S.nodeName):w||x._componentConstructor===S.nodeName)){c=s,h[i]=void 0,i===g-1&&g--,i===f&&f++;break}c=T(c,l,n,o),a=u[m],c&&c!==e&&c!==a&&(null==a?e.appendChild(c):c===a.nextSibling?A(a):e.insertBefore(c,a))}var x,S,w;if(d)for(var m in p)void 0!==p[m]&&O(p[m],!1);for(;f<=g;)void 0!==(c=h[g--])&&O(c,!1)}(i,p,n,o,_||null!=h.dangerouslySetInnerHTML),function(e,t,n){var o;for(o in n)t&&null!=t[o]||null==n[o]||v(e,o,n[o],n[o]=void 0,g);for(o in t)"children"===o||"innerHTML"===o||o in n&&t[o]===("value"===o||"checked"===o?e[o]:n[o])||v(e,o,n[o],n[o]=t[o],g)}(i,t.attributes,h),g=s,i}function O(e,t){var n=e._component;n?U(n):(null!=e.__preactattr_&&e.__preactattr_.ref&&e.__preactattr_.ref(null),!1!==t&&null!=e.__preactattr_||A(e),o(e))}function o(e){for(e=e.lastChild;e;){var t=e.previousSibling;O(e,!0),e=t}}function P(e,t,n){var o,r=f.length;for(e.prototype&&e.prototype.render?(o=new e(t,n),a.call(o,t,n)):((o=new a(t,n)).constructor=e,o.render=s);r--;)if(f[r].constructor===e)return o.__b=f[r].__b,f.splice(r,1),o;return o}function s(e,t,n){return this.constructor(e,n)}function j(e,t,n,o,r){e.__x||(e.__x=!0,e.__r=t.ref,e.__k=t.key,delete t.ref,delete t.key,void 0===e.constructor.getDerivedStateFromProps&&(!e.base||r?e.componentWillMount&&e.componentWillMount():e.componentWillReceiveProps&&e.componentWillReceiveProps(t,o)),o&&o!==e.context&&(e.__c||(e.__c=e.context),e.context=o),e.__p||(e.__p=e.props),e.props=t,e.__x=!1,0!==n&&(1!==n&&!1===R.syncComponentUpdates&&e.base?i(e):E(e,1,r)),e.__r&&e.__r(e))}function E(e,t,n,o){if(!e.__x){var r,i,s,a=e.props,l=e.state,c=e.context,u=e.__p||a,h=e.__s||l,p=e.__c||c,d=e.base,f=e.__b,v=d||f,g=e._component,_=!1,m=p;if(e.constructor.getDerivedStateFromProps&&(l=C(C({},l),e.constructor.getDerivedStateFromProps(a,l)),e.state=l),d&&(e.props=u,e.state=h,e.context=p,2!==t&&e.shouldComponentUpdate&&!1===e.shouldComponentUpdate(a,l,c)?_=!0:e.componentWillUpdate&&e.componentWillUpdate(a,l,c),e.props=a,e.state=l,e.context=c),e.__p=e.__s=e.__c=e.__b=null,e.__d=!1,!_){r=e.render(a,l,c),e.getChildContext&&(c=C(C({},c),e.getChildContext())),d&&e.getSnapshotBeforeUpdate&&(m=e.getSnapshotBeforeUpdate(u,h));var y,k,b=r&&r.nodeName;if("function"==typeof b){var x=M(r);(i=g)&&i.constructor===b&&x.key==i.__k?j(i,x,1,c,!1):(y=i,e._component=i=P(b,x,c),i.__b=i.__b||f,i.__u=e,j(i,x,0,c,!1),E(i,1,n,!0)),k=i.base}else s=v,(y=g)&&(s=e._component=null),(v||1===t)&&(s&&(s._component=null),k=N(s,r,c,n||!d,v&&v.parentNode,!0));if(v&&k!==v&&i!==g){var S=v.parentNode;S&&k!==S&&(S.replaceChild(k,v),y||(v._component=null,O(v,!1)))}if(y&&U(y),(e.base=k)&&!o){for(var w=e,L=e;L=L.__u;)(w=L).base=k;k._component=w,k._componentConstructor=w.constructor}}for(!d||n?D.unshift(e):_||(e.componentDidUpdate&&e.componentDidUpdate(u,h,m),R.afterUpdate&&R.afterUpdate(e));e.__h.length;)e.__h.pop().call(e);F||o||I()}}function U(e){R.beforeUnmount&&R.beforeUnmount(e);var t=e.base;e.__x=!0,e.componentWillUnmount&&e.componentWillUnmount(),e.base=null;var n=e._component;n?U(n):t&&(t.__preactattr_&&t.__preactattr_.ref&&t.__preactattr_.ref(null),A(e.__b=t),f.push(e),o(t)),e.__r&&e.__r(null)}function a(e,t){this.__d=!0,this.context=t,this.props=e,this.state=this.state||{},this.__h=[]}var c=function(){},R={},u=[],h=[],r="function"==typeof Promise?Promise.resolve().then.bind(Promise.resolve()):setTimeout,p=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,d=[],D=[],F=0,g=!1,_=!1,f=[];C(a.prototype,{setState:function(e,t){this.__s||(this.__s=this.state),this.state=C(C({},this.state),"function"==typeof e?e(this.state,this.props):e),t&&this.__h.push(t),i(this)},forceUpdate:function(e){e&&this.__h.push(e),E(this,2)},render:function(){}});var e={h:n,createElement:n,cloneElement:function(e,t){return n(e.nodeName,C(C({},e.attributes),t),2<arguments.length?[].slice.call(arguments,2):e.children)},Component:a,render:function(e,t,n){return N(n,e,{},!1,t,!1)},rerender:t,options:R};void 0!==m?m.exports=e:self.preact=e}()},{}]},{},[1]);  //# sourceMappingURL=quick-jump.min.js.map diff --git a/haddock-api/src/Documentation/Haddock.hs b/haddock-api/src/Documentation/Haddock.hs index e5d84796..1aa666ce 100644 --- a/haddock-api/src/Documentation/Haddock.hs +++ b/haddock-api/src/Documentation/Haddock.hs @@ -8,7 +8,7 @@  -- Stability   :  experimental  -- Portability :  portable  -- --- The Haddock API: A rudimentory, highly experimental API exposing some of +-- The Haddock API: A rudimentary, highly experimental API exposing some of  -- the internals of Haddock. Don't expect it to be stable.  -----------------------------------------------------------------------------  module Documentation.Haddock ( diff --git a/haddock-api/src/Haddock.hs b/haddock-api/src/Haddock.hs index 942798eb..5526a0fa 100644 --- a/haddock-api/src/Haddock.hs +++ b/haddock-api/src/Haddock.hs @@ -1,9 +1,9 @@  {-# LANGUAGE CPP                 #-}  {-# LANGUAGE LambdaCase          #-} +{-# LANGUAGE NamedFieldPuns      #-}  {-# LANGUAGE OverloadedStrings   #-}  {-# LANGUAGE Rank2Types          #-}  {-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections       #-}  {-# OPTIONS_GHC -Wwarn           #-}  -----------------------------------------------------------------------------  -- | @@ -35,6 +35,7 @@ import Haddock.Backends.Xhtml.Themes (getThemes)  import Haddock.Backends.LaTeX  import Haddock.Backends.Hoogle  import Haddock.Backends.Hyperlinker +import Haddock.Backends.Org  import Haddock.Interface  import Haddock.Interface.Json  import Haddock.Parser @@ -65,7 +66,7 @@ import System.FilePath  import System.Environment (getExecutablePath)  #else  import qualified GHC.Paths as GhcPaths -import Paths_haddock_api (getDataDir) +import Paths_haddorg_api (getDataDir)  #endif  import System.Directory (doesDirectoryExist, getTemporaryDirectory) @@ -203,11 +204,17 @@ haddockWithGhc ghc args = handleTopExceptions $ do      if not (null files) then do        (packages, ifaces, homeLinks) <- readPackagesAndProcessModules flags files +      let packageInfo = PackageInfo { piPackageName = +                                        fromMaybe (PackageName mempty) (optPackageName flags) +                                    , piPackageVersion = +                                        fromMaybe (makeVersion []) (optPackageVersion flags) +                                    }        -- Dump an "interface file" (.haddock file), if requested.        forM_ (optDumpInterfaceFile flags) $ \path -> liftIO $ do          writeInterfaceFile path InterfaceFile {              ifInstalledIfaces = map toInstalledIface ifaces +          , ifPackageInfo     = packageInfo            , ifLinkEnv         = homeLinks            } @@ -215,7 +222,7 @@ haddockWithGhc ghc args = handleTopExceptions $ do        liftIO $ renderStep logger dflags unit_state flags sinceQual qual packages ifaces      else do -      when (any (`elem` [Flag_Html, Flag_Hoogle, Flag_LaTeX]) flags) $ +      when (any (`elem` [Flag_Html, Flag_Hoogle, Flag_LaTeX, Flag_Org]) flags) $          throwE "No input file(s)."        -- Get packages supplied with --read-interface. @@ -259,7 +266,7 @@ withGhc flags action = do  readPackagesAndProcessModules :: [Flag] -> [String] -                              -> Ghc ([(DocPaths, FilePath, InterfaceFile)], [Interface], LinkEnv) +                              -> Ghc ([(DocPaths, Visibility, FilePath, InterfaceFile)], [Interface], LinkEnv)  readPackagesAndProcessModules flags files = do      -- Get packages supplied with --read-interface.      let noChecks = Flag_BypassInterfaceVersonCheck `elem` flags @@ -267,28 +274,28 @@ readPackagesAndProcessModules flags files = do      packages <- liftIO $ readInterfaceFiles name_cache (readIfaceArgs flags) noChecks      -- Create the interfaces -- this is the core part of Haddock. -    let ifaceFiles = map (\(_, _, ifaceFile) -> ifaceFile) packages +    let ifaceFiles = map (\(_, _, _, ifaceFile) -> ifaceFile) packages      (ifaces, homeLinks) <- processModules (verbosity flags) files flags ifaceFiles      return (packages, ifaces, homeLinks)  renderStep :: Logger -> DynFlags -> UnitState -> [Flag] -> SinceQual -> QualOption -           -> [(DocPaths, FilePath, InterfaceFile)] -> [Interface] -> IO () +           -> [(DocPaths, Visibility, FilePath, InterfaceFile)] -> [Interface] -> IO ()  renderStep logger dflags unit_state flags sinceQual nameQual pkgs interfaces = do -  updateHTMLXRefs (map (\(docPath, _ifaceFilePath, ifaceFile) -> +  updateHTMLXRefs (map (\(docPath, _ifaceFilePath, _showModules, ifaceFile) ->                            ( case baseUrl flags of                                Nothing  -> fst docPath                                Just url -> url </> packageName (ifUnitId ifaceFile)                            , ifaceFile)) pkgs)    let      installedIfaces = -      concatMap -        (\(_, ifaceFilePath, ifaceFile) -          -> (ifaceFilePath,) <$> ifInstalledIfaces ifaceFile) +      map +        (\(_, showModules, ifaceFilePath, ifaceFile) +          -> (ifaceFilePath, mkPackageInterfaces showModules ifaceFile))          pkgs      extSrcMap = Map.fromList $ do -      ((_, Just path), _, ifile) <- pkgs +      ((_, Just path), _, _, ifile) <- pkgs        iface <- ifInstalledIfaces ifile        return (instMod iface, path)    render logger dflags unit_state flags sinceQual nameQual interfaces installedIfaces extSrcMap @@ -306,6 +313,12 @@ render :: Logger -> DynFlags -> UnitState -> [Flag] -> SinceQual -> QualOption -  render log' dflags unit_state flags sinceQual qual ifaces installedIfaces extSrcMap = do    let +    packageInfo = PackageInfo { piPackageName    = fromMaybe (PackageName mempty) +                                                 $ optPackageName flags +                              , piPackageVersion = fromMaybe (makeVersion []) +                                                 $ optPackageVersion flags +                              } +      title                = fromMaybe "" (optTitle flags)      unicode              = Flag_UseUnicode `elem` flags      pretty               = Flag_PrettyHtml `elem` flags @@ -324,9 +337,32 @@ render log' dflags unit_state flags sinceQual qual ifaces installedIfaces extSrc      visibleIfaces    = [ i | i <- ifaces, OptHide `notElem` ifaceOptions i ] -    -- /All/ visible interfaces including external package modules. -    allIfaces        = map toInstalledIface ifaces ++ map snd installedIfaces -    allVisibleIfaces = [ i | i <- allIfaces, OptHide `notElem` instOptions i ] +    -- /All/ interfaces including external package modules, grouped by +    -- interface file (package). +    allPackages      :: [PackageInterfaces] +    allPackages      = [PackageInterfaces +                         { piPackageInfo = packageInfo +                         , piVisibility  = Visible +                         , piInstalledInterfaces  = map toInstalledIface ifaces +                         }] +                    ++ map snd packages + +    -- /All/ visible interfaces including external package modules, grouped by +    -- interface file (package). +    allVisiblePackages :: [PackageInterfaces] +    allVisiblePackages = [ pinfo { piInstalledInterfaces = +                                     filter (\i -> OptHide `notElem` instOptions i) +                                            piInstalledInterfaces +                                 } +                         | pinfo@PackageInterfaces +                             { piVisibility = Visible +                             , piInstalledInterfaces +                             } <- allPackages +                         ] + +    -- /All/ installed interfaces. +    allInstalledIfaces :: [InstalledInterface] +    allInstalledIfaces = concatMap (piInstalledInterfaces . snd) packages      pkgMod           = fmap ifaceMod (listToMaybe ifaces)      pkgKey           = fmap moduleUnit pkgMod @@ -370,7 +406,7 @@ render log' dflags unit_state flags sinceQual qual ifaces installedIfaces extSrc      sourceUrls' = (srcBase, srcModule', pkgSrcMap', pkgSrcLMap')      installedMap :: Map Module InstalledInterface -    installedMap = Map.fromList [ (unwire (instMod iface), iface) | (_, iface) <- installedIfaces ] +    installedMap = Map.fromList [ (unwire (instMod iface), iface) | iface <- allInstalledIfaces ]      -- The user gives use base-4.9.0.0, but the InstalledInterface      -- records the *wired in* identity base.  So untranslate it @@ -406,7 +442,8 @@ render log' dflags unit_state flags sinceQual qual ifaces installedIfaces extSrc        _ <- {-# SCC ppHtmlIndex #-}             ppHtmlIndex odir title pkgStr                    themes opt_mathjax opt_contents_url sourceUrls' opt_wiki_urls -                  allVisibleIfaces pretty +                  withQuickjump +                  (concatMap piInstalledInterfaces allVisiblePackages) pretty        return ()      unless withBaseURL $ @@ -417,7 +454,8 @@ render log' dflags unit_state flags sinceQual qual ifaces installedIfaces extSrc        _ <- {-# SCC ppHtmlContents #-}             ppHtmlContents unit_state odir title pkgStr                       themes opt_mathjax opt_index_url sourceUrls' opt_wiki_urls -                     allVisibleIfaces True prologue pretty +                     withQuickjump +                     allVisiblePackages True prologue pretty                       sincePkg (makeContentsQual qual)        return ()      copyHtmlBits odir libDir themes withQuickjump @@ -426,7 +464,10 @@ render log' dflags unit_state flags sinceQual qual ifaces installedIfaces extSrc              ppJsonIndex odir sourceUrls' opt_wiki_urls                          unicode Nothing qual                          ifaces -                        (nub $ map fst installedIfaces) +                        ( nub +                        . map fst +                        . filter ((== Visible) . piVisibility . snd) +                        $ packages)    when (Flag_Html `elem` flags) $ do      withTiming logger "ppHtml" (const ()) $ do @@ -434,8 +475,8 @@ render log' dflags unit_state flags sinceQual qual ifaces installedIfaces extSrc             ppHtml unit_state title pkgStr visibleIfaces reexportedIfaces odir                    prologue                    themes opt_mathjax sourceUrls' opt_wiki_urls opt_base_url -                  opt_contents_url opt_index_url unicode sincePkg qual -                  pretty withQuickjump +                  opt_contents_url opt_index_url unicode sincePkg packageInfo +                  qual pretty withQuickjump        return ()      unless withBaseURL $ do        copyHtmlBits odir libDir themes withQuickjump @@ -470,6 +511,10 @@ render log' dflags unit_state flags sinceQual qual ifaces installedIfaces extSrc             ppLaTeX title pkgStr visibleIfaces odir (fmap _doc prologue) opt_latex_style                     libDir        return () +  when (Flag_Org `elem` flags) $ do +    withTiming logger dflags' "ppOrg" (const ()) $ do +      let org = {-# SCC ppOrg #-} ppOrg title (_doc <$> prologue) (fromJust pkgStr) visibleIfaces +      writeUtf8File (fromMaybe "haddock" (cleanPkgStr <$> pkgStr) <.> "org") org     when (Flag_HyperlinkedSource `elem` flags && not (null ifaces)) $ do      withTiming logger "ppHyperlinkedSource" (const ()) $ do @@ -498,7 +543,8 @@ readInterfaceFiles name_cache pairs bypass_version_check = do            putStrLn ("   " ++ err)            putStrLn "Skipping this interface."            return Nothing -        Right f -> return (Just (paths, file, f)) +        Right f -> +          return (Just (paths, showModules, file, f ))  ------------------------------------------------------------------------------- @@ -744,4 +790,3 @@ getPrologue dflags flags =  rightOrThrowE :: Either String b -> IO b  rightOrThrowE (Left msg) = throwE msg  rightOrThrowE (Right x) = pure x - diff --git a/haddock-api/src/Haddock/Backends/Hoogle.hs b/haddock-api/src/Haddock/Backends/Hoogle.hs index 221580cc..582c535d 100644 --- a/haddock-api/src/Haddock/Backends/Hoogle.hs +++ b/haddock-api/src/Haddock/Backends/Hoogle.hs @@ -353,7 +353,7 @@ markupTag dflags = Markup {    markupMathInline           = const $ str "<math>",    markupMathDisplay          = const $ str "<math>",    markupUnorderedList        = box (TagL 'u'), -  markupOrderedList          = box (TagL 'o'), +  markupOrderedList          = box (TagL 'o') . map snd,    markupDefList              = box (TagL 'u') . map (\(a,b) -> TagInline "i" a : Str " " : b),    markupCodeBlock            = box TagPre,    markupHyperlink            = \(Hyperlink url mLabel) -> box (TagInline "a") (fromMaybe (str url) mLabel), diff --git a/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs b/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs index 12f37ced..a8a51e5d 100644 --- a/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs +++ b/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs @@ -1,6 +1,5 @@  {-# LANGUAGE RecordWildCards #-}  {-# LANGUAGE ViewPatterns #-} -{-# LANGUAGE PatternSynonyms #-}  {-# LANGUAGE OverloadedStrings #-}  {-# LANGUAGE BangPatterns #-} @@ -24,6 +23,7 @@ import System.FilePath.Posix ((</>))  import qualified Data.Map as Map  import qualified Data.Set as Set +import qualified Data.List as List  import Text.XHtml (Html, HtmlAttr, (!))  import qualified Text.XHtml as Html @@ -141,7 +141,7 @@ richToken srcs details Token{..}      contexts = concatMap (Set.elems . identInfo) . Map.elems . nodeIdentifiers $ details -    -- pick an arbitary non-evidence identifier to hyperlink with +    -- pick an arbitrary non-evidence identifier to hyperlink with      identDet = Map.lookupMin $ Map.filter notEvidence $ nodeIdentifiers $ details      notEvidence = not . any isEvidenceContext . identInfo @@ -249,14 +249,20 @@ hyperlink (srcs, srcs') ident = case ident of      Left name -> externalModHyperlink name    where +    -- In a Nix environment, we have file:// URLs with absolute paths +    makeHyperlinkUrl url | List.isPrefixOf "file://" url = url +    makeHyperlinkUrl url = ".." </> url +      internalHyperlink name content =          Html.anchor content ! [ Html.href $ "#" ++ internalAnchorIdent name ]      externalNameHyperlink name content = case Map.lookup mdl srcs of          Just SrcLocal -> Html.anchor content !              [ Html.href $ hypSrcModuleNameUrl mdl name ] -        Just (SrcExternal path) -> Html.anchor content ! -            [ Html.href $ spliceURL Nothing (Just mdl) (Just name) Nothing (".." </> path) ] +        Just (SrcExternal path) -> +          let hyperlinkUrl = makeHyperlinkUrl path </> hypSrcModuleNameUrl mdl name +           in Html.anchor content ! +                [ Html.href $ spliceURL Nothing (Just mdl) (Just name) Nothing hyperlinkUrl ]          Nothing -> content        where          mdl = nameModule name @@ -265,8 +271,10 @@ hyperlink (srcs, srcs') ident = case ident of          case Map.lookup moduleName srcs' of            Just SrcLocal -> Html.anchor content !              [ Html.href $ hypSrcModuleUrl' moduleName ] -          Just (SrcExternal path) -> Html.anchor content ! -            [ Html.href $ spliceURL' Nothing (Just moduleName) Nothing Nothing (".." </> path) ] +          Just (SrcExternal path) -> +            let hyperlinkUrl = makeHyperlinkUrl path </> hypSrcModuleUrl' moduleName +             in Html.anchor content ! +                  [ Html.href $ spliceURL' Nothing (Just moduleName) Nothing Nothing hyperlinkUrl ]            Nothing -> content diff --git a/haddock-api/src/Haddock/Backends/LaTeX.hs b/haddock-api/src/Haddock/Backends/LaTeX.hs index 349c6e8e..faa23d6a 100644 --- a/haddock-api/src/Haddock/Backends/LaTeX.hs +++ b/haddock-api/src/Haddock/Backends/LaTeX.hs @@ -1265,7 +1265,7 @@ latexMarkup = Markup    , markupPic                  = \p _ -> inlineElem (markupPic p)    , markupMathInline           = \p _ -> inlineElem (markupMathInline p)    , markupMathDisplay          = \p _ -> blockElem (markupMathDisplay p) -  , markupOrderedList          = \p v -> blockElem (enumeratedList (map (\p' -> p' v empty) p)) +  , markupOrderedList          = \p v -> blockElem (enumeratedList (map (\(_, p') -> p' v empty) p))    , markupDefList              = \l v -> blockElem (descriptionList (map (\(a,b) -> (a v empty, b v empty)) l))    , markupCodeBlock            = \p _ -> blockElem (quote (verb (p Verb empty)))    , markupHyperlink            = \(Hyperlink u l) v -> inlineElem (markupLink u (fmap (\x -> x v empty) l)) @@ -1301,7 +1301,7 @@ latexMarkup = Markup        Just label -> text "\\href" <> braces (text url) <> braces label        Nothing    -> text "\\url"  <> braces (text url) -    -- Is there a better way of doing this? Just a space is an aribtrary choice. +    -- Is there a better way of doing this? Just a space is an arbitrary choice.      markupPic (Picture uri title) = parens (imageText title)        where          imageText Nothing = beg @@ -1333,7 +1333,7 @@ rdrDocToLaTeX doc = markup latexMarkup doc Plain empty  data StringContext    = Plain  -- ^ all special characters have to be escape -  | Mono   -- ^ on top of special characters, escape space chraacters +  | Mono   -- ^ on top of special characters, escape space characters    | Verb   -- ^ don't escape anything @@ -1394,7 +1394,7 @@ bold ltx = text "\\textbf" <> braces ltx  -- TODO: @verbatim@ is too much since  -- ---   * Haddock supports markup _inside_ of codeblocks. Right now, the LaTeX +--   * Haddock supports markup _inside_ of code blocks. Right now, the LaTeX  --     representing that markup gets printed verbatim  --   * Verbatim environments are not supported everywhere (example: not nested  --     inside a @tabulary@ environment) diff --git a/haddock-api/src/Haddock/Backends/Org.hs b/haddock-api/src/Haddock/Backends/Org.hs new file mode 100644 index 00000000..9d02d0db --- /dev/null +++ b/haddock-api/src/Haddock/Backends/Org.hs @@ -0,0 +1,1040 @@ +{- +Copyright (C) 2022 Yuchen Pei. + +This file is part of haddorg-api. + +This file is free software: you can redistribute it and/or modify it +under the terms of the GNU Affero General Public License as published +by the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This file is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public +License along with this file.  If not, see +<https://www.gnu.org/licenses/>. +-} + +{-# LANGUAGE RecordWildCards #-} +{-# LANGUAGE TupleSections #-} +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE DeriveAnyClass #-} +{-# LANGUAGE StandaloneDeriving #-} +{-# LANGUAGE DeriveDataTypeable #-} +{-# OPTIONS_GHC -fno-warn-orphans #-} + +module Haddock.Backends.Org +  ( ppOrg +  , cleanPkgStr +  ) where +import           Control.Monad.State.Strict     ( State +                                                , evalState +                                                , get +                                                , put +                                                ) +import           Data.List                      ( intercalate +                                                , intersperse +                                                , isSuffixOf +                                                , singleton +                                                , sortOn +                                                ) +import           Data.Map                       ( (!?) +                                                , toList +                                                ) +import qualified Data.Map                      as M +                                                ( empty +                                                , map +                                                , null +                                                ) +import           Data.Maybe                     ( fromMaybe ) +import           Documentation.Haddock.Markup   ( markup +                                                , plainMarkup +                                                ) +import           GHC                            ( ConDecl(..) +                                                , ConDeclField(..) +                                                , FamEqn(..) +                                                , FamilyDecl(..) +                                                , FamilyInfo(..) +                                                , FamilyResultSig(..) +                                                , FieldOcc(..) +                                                , ForeignDecl(..) +                                                , GenLocated(..) +                                                , HsArg(..) +                                                , HsConDeclGADTDetails(..) +                                                , HsConDeclH98Details +                                                , HsConDetails(..) +                                                , HsDataDefn(..) +                                                , HsDecl(..) +                                                , HsForAllTelescope(..) +                                                , HsOuterSigTyVarBndrs +                                                , HsOuterTyVarBndrs(..) +                                                , HsScaled(..) +                                                , HsSigType(..) +                                                , HsTupleSort(..) +                                                , HsTyLit(..) +                                                , HsTyVarBndr(..) +                                                , HsType(..) +                                                , InjectivityAnn(..) +                                                , LHsContext +                                                , LHsKind +                                                , LHsQTyVars(..) +                                                , LHsTyVarBndr +                                                , LHsType +                                                , LInjectivityAnn +                                                , LTyFamInstEqn +                                                , ModuleName +                                                , Name +                                                , NewOrData(..) +                                                , RdrName +                                                , Sig(..) +                                                , TyClDecl(..) +                                                , dropWildCards +                                                , getName +                                                , hsIPNameFS +                                                , hsQTvExplicit +                                                , moduleNameString +                                                , unLoc +                                                ) +import           GHC.Data.FastString            ( unpackFS ) +import           GHC.Types.Basic                ( PromotionFlag(..) +                                                , TopLevelFlag(..) +                                                ) +import           GHC.Types.Name                 ( isDataConName +                                                , nameModule_maybe +                                                , nameOccName +                                                ) +import           GHC.Types.Name.Occurrence      ( OccName +                                                , occNameString +                                                ) +import           GHC.Unit.Types                 ( GenModule(..) +                                                , Module +                                                , unitString +                                                ) +import           GHC.Utils.Outputable           ( showPprUnsafe ) +import qualified GHC.Utils.Ppr                 as Pretty +import           GHC.Utils.Ppr                  ( (<+>) +                                                , (<>) +                                                , comma +                                                , hsep +                                                , punctuate +                                                , text +                                                ) +import           Haddock.Backends.Org.Types +import           Haddock.GhcUtils               ( Precedence(..) +                                                , hsLTyVarNameI +                                                , moduleString +                                                , reparenTypePrec +                                                ) +import           Haddock.Types                  ( Doc +                                                , DocForDecl +                                                , DocH(..) +                                                , DocInstance +                                                , DocName(..) +                                                , DocNameI +                                                , Documentation(..) +                                                , ExportItem(..) +                                                , FnArgsDoc +                                                , Header(..) +                                                , Hyperlink(..) +                                                , InstHead(..) +                                                , InstType(..) +                                                , Interface(..) +                                                , MDoc +                                                , MetaDoc(..) +                                                , ModLink(..) +                                                , Picture(..) +                                                , TableCell(..) +                                                , TableRow(..) +                                                , Wrap(..) +                                                , showWrapped +                                                ) +import qualified Haddock.Types                 as HT +                                                ( Example(..) +                                                , Table(..) +                                                ) +import           Prelude                 hiding ( (<>) ) + + +type PDoc = Pretty.Doc +type ModPath = (String, String) -- (package, module) +type SubDocs = [(DocName, DocForDecl DocName)] + +packageLevel, modLevel :: Int +packageLevel = 1 +modLevel = 2 + +-- prefix for unimplemented and error +unimp, docError :: String -> String +unimp = ("UNIMP$" ++) +docError = ("ERROR$" ++) + +unimpHeading :: String -> Int -> OrgBlock +unimpHeading thing level = headingPlainText (unimp thing) level + +emptyDoc :: DocForDecl DocName +emptyDoc = (Documentation Nothing Nothing, M.empty) + +-- The main function +ppOrg :: String -> Maybe (Doc RdrName) -> String -> [Interface] -> String +ppOrg title mbPrologue pkgId = orgToString . fromOrgDocument . toOrgDocument +  title +  mbPrologue +  (cleanPkgStr pkgId) + +toOrgDocument +  :: String -> Maybe (Doc RdrName) -> String -> [Interface] -> OrgDocument +toOrgDocument title mbPrologue pkgId ifaces = +  OrgDocument M.empty (processPackage title mbPrologue pkgId ifaces) + +processPackage +  :: String -> Maybe (Doc RdrName) -> String -> [Interface] -> [OrgBlock] +processPackage title mbPrologue pkgId ifaces = +  Heading packageLevel +          [plaintext title] +          (cIdProp pkgId ++ hackageProp (hackagePackageUrl pkgId)) +    : Paragraph [plaintext $ maybe [] removeMarkup' mbPrologue] +    : concatMap processModule (sortOn ifaceMod ifaces) + +processModule :: Interface -> [OrgBlock] +processModule iface = +  let +    mdl     = moduleString $ ifaceMod iface +    pkg     = cleanPkgStr $ unitString $ moduleUnit $ ifaceMod iface +    path    = (pkg, mdl) +    heading = Heading +      modLevel +      [plaintext mdl] +      (cIdProp (pkg ++ "." ++ mdl) ++ hackageProp (hackageModuleUrl pkg mdl)) +    description = ppDocumentation (ifaceRnDoc iface) (Just modLevel) +    exported = +      evalState (mapM (processExport path) (ifaceRnExportItems iface)) modLevel +        ++ [ ppDocInsts +               (ifaceRnOrphanInstances iface) +               "Orphan Instances" +               (modLevel + 1) +           ] +  in +    heading : description ++ concat exported + +processExport :: ModPath -> ExportItem DocNameI -> State Int [OrgBlock] +-- TODO: handle bundled patterns, fixities and splice +processExport path (ExportDecl (L _ decl) _pats docs subdocs insts _fixities _splice) +  = do +    baseLevel <- get +    return $ ppHsDecl decl insts docs subdocs path (baseLevel + 1) +processExport _ (ExportNoDecl _ _          ) = error "ExportNoDecl" +processExport _ (ExportGroup offset _ label) = do +  put $ modLevel + offset +  return $ ppDocBlock (DocHeader (Header (modLevel + offset) label)) (Just 0) +processExport _ (ExportDoc    mDoc) = return $ ppMDoc mDoc (Just modLevel) +processExport _ (ExportModule mdl ) = do +  baseLevel <- get +  return +    [ Heading +        (baseLevel + 1) +        [plaintext "module", Whitespace, Link (text (moduleString mdl)) []] +        [] +    ] + +-- * To Org elements +-- ** Documentation to Org elements + +ppFnArgsDoc :: FnArgsDoc DocName -> [OrgBlock] +ppFnArgsDoc aDoc = if M.null aDoc +  then [] +  else ((`ppDoc` Nothing) . DocParagraph . DocString) "Arguments (in order):" +    ++ ((`ppDoc` Nothing) . DocOrderedList . toList . M.map _doc) aDoc + +ppDocumentation :: Documentation DocName -> Maybe Int -> [OrgBlock] +ppDocumentation (Documentation (Just mdoc) _) minLevel = ppMDoc mdoc minLevel +ppDocumentation _                             _        = [] + +ppMDoc :: MDoc DocName -> Maybe Int -> [OrgBlock] +ppMDoc (MetaDoc _ doc) = ppDoc doc + +ppDoc :: Doc DocName -> Maybe Int -> [OrgBlock] +ppDoc x l = if isBlock x then ppDocBlock x l else [Paragraph $ ppDocInline x] + +ppDocBlock :: Doc DocName -> Maybe Int -> [OrgBlock] +ppDocBlock x _ | not (isBlock x) = ppDocBlock (DocParagraph x) Nothing +ppDocBlock DocEmpty         _    = [] +ppDocBlock (DocAppend x y ) l    = ppDocBlock x l ++ ppDocBlock y l +ppDocBlock (DocParagraph x) _    = [Paragraph (ppDocInline x)] +ppDocBlock (DocUnorderedList docs) _ = +  [PlainList Unordered $ (`ppDocBlock` Nothing) <$> docs] +ppDocBlock (DocOrderedList items) _ = +  [PlainList Ordered (map ((`ppDocBlock` Nothing) . snd) items)] +ppDocBlock (DocDefList pairs) _ = +  [ DefList +      $   (\(term, def) -> (ppDocInline term, ppDocBlock def Nothing)) +      <$> pairs +  ] +ppDocBlock (DocCodeBlock doc) _ = +  [SrcBlock $ text $ fixLeadingStar $ removeMarkup doc] +ppDocBlock (DocMathDisplay x) _ = [MathDisplay (text x)] +ppDocBlock (DocExamples examples) _ = +  (\(HT.Example expr res) -> Example +      (text (fixLeadingStar expr)) +      (text $ fixLeadingStar $ intercalate "\n" res) +    ) +    <$> examples +ppDocBlock (DocHeader (Header level label)) (Just l) = +  [Heading (level + l) (ppDocInline label) []] +ppDocBlock (DocTable (HT.Table hRows bRows)) _ = ppTable hRows bRows +ppDocBlock doc _ = [Paragraph [plaintext $ unimp "ppDocBlock: " ++ show doc]] + +ppDocInline :: Doc DocName -> [OrgInline] +ppDocInline x | isBlock x = [plaintext $ docError "BLOCK_IN_INLINE" ++ show x] +ppDocInline (DocAppend x y           ) = ppDocInline x ++ ppDocInline y +ppDocInline (DocString              x) = [plaintext x] +ppDocInline (DocIdentifier          x) = ppWrapped ppDocName x +ppDocInline (DocIdentifierUnchecked x) = ppWrapped ppMO x +ppDocInline (DocModule (ModLink modName mbModLabel)) = +  [Link (text modName) (maybe [] ppDocInline mbModLabel)] +ppDocInline (DocWarning    x) = [plaintext $ unimp $ "DocWarning: " ++ show x] +ppDocInline (DocEmphasis   x) = [Italic $ ppDocInline x] +ppDocInline (DocMonospaced x) = [Code $ text $ removeMarkup x] +ppDocInline (DocBold       x) = [Bold $ ppDocInline x] +ppDocInline (DocHyperlink (Hyperlink url label)) = +  [Link (text url) (maybe [] ppDocInline label)] +ppDocInline (DocPic (Picture url mbTitle)) = +  [Link (text url) (maybe [] (singleton . plaintext) mbTitle)] +ppDocInline (DocAName      x) = [Anchor (text x)] +ppDocInline (DocMathInline x) = [MathInline (text x)] +ppDocInline (DocProperty   x) = [plaintext x] +ppDocInline doc               = [plaintext $ unimp "ppDocInline: " ++ show doc] + +-- *** Handling tables +-- current coordinates, colspan and rowspan coordinates +type SpanState = ((Int, Int), [(Int, Int)], [(Int, Int)]) + +emptySpanState :: SpanState +emptySpanState = ((0, 0), [], []) + +-- marks for cells connected with colspan and rowspan +leftSym, upSym :: Bool -> String +leftSym True  = "<" +leftSym False = "" +upSym True  = "^" +upSym False = "" + +ppTable :: [TableRow (Doc DocName)] -> [TableRow (Doc DocName)] -> [OrgBlock] +ppTable header body = +  [ Table (evalState (ppTable' header) emptySpanState) +          (evalState (ppTable' body) emptySpanState) +  ] + +ppTable' :: [TableRow (Doc DocName)] -> State SpanState [[[OrgInline]]] +ppTable' []                      = return [] +ppTable' (TableRow cells : rest) = do +  cur   <- ppTableRow' cells +  rest' <- ppTable' rest +  return $ cur : rest' + +-- handle a table row, tracking colspans and rowspans +ppTableRow' :: [TableCell (Doc DocName)] -> State SpanState [[OrgInline]] +ppTableRow' [] = return [] +ppTableRow' (TableCell colspan rowspan doc : rest) = do +  ((x, y), colspans, rowspans) <- get +  let +    left    = (not . null) colspans && (x, y) `elem` colspans +    up      = (not . null) rowspans && (x, y) `elem` rowspans +    content = if left || up +      then [plaintext (leftSym left ++ upSym up)] +      else ppDocInline doc +    newColspans = if left +      then colspans +      else colspans ++ map (\i -> (x, y + i)) [1 .. colspan - 1] +    newRowspans = if up +      then rowspans +      else rowspans ++ map (\i -> (x + i, y)) [1 .. rowspan - 1] +    extraLeft = if null rest +      then length (takeWhile (`elem` newColspans) (map (x, ) [y + 1 ..])) +      else 0 +    extraUp = if null rest +      then length (takeWhile (`elem` newRowspans) (map (x, ) [y + 1 ..])) +      else 0 +    n        = max extraLeft extraUp +    lefts    = replicate extraLeft True ++ replicate (n - extraLeft) False +    ups      = replicate extraUp True ++ replicate (n - extraUp) False +    extra    = zipWith (\l u -> [plaintext (leftSym l ++ upSym u)]) lefts ups +    newCoord = if null rest then (x + 1, 0) else (x, y + 1) +  put (newCoord, newColspans, newRowspans) +  rest' <- ppTableRow' rest +  return $ content : extra ++ rest' + +-- ** AST to Org elements + +ppHsDecl +  :: HsDecl DocNameI +  -> [DocInstance DocNameI] +  -> DocForDecl DocName +  -> SubDocs +  -> ModPath +  -> Int +  -> [OrgBlock] +ppHsDecl (TyClD _ decl) insts docs subdocs path level = +  ppTyClDecl decl docs subdocs path level +    ++ ppDocInsts insts "Instances:" (level + 1) +ppHsDecl (SigD _ sig) _ docs subdocs path level = +  ppSig sig docs subdocs path level +ppHsDecl (ForD _ for) _ docs _ path level = ppForeignDecl for docs path level +ppHsDecl _ _ docs _ _ level = +  unimpHeading "HsDecl" level : ppDocForDecl docs (Just level) + +ppForeignDecl +  :: ForeignDecl DocNameI -> DocForDecl DocName -> ModPath -> Int -> [OrgBlock] +ppForeignDecl (ForeignImport _ (L _ name) (L _ sigType) _) docs path level = +  Heading level +          (Plain (docNameToDoc name) : plaintext " :: " : ppHsSigType sigType) +          (cIdPaths path name) +    : ppDocForDecl docs (Just level) +ppForeignDecl _ docs _ level = +  unimpHeading "ForeignDecl" level : ppDocForDecl docs (Just level) + +ppDocInsts :: [DocInstance DocNameI] -> String -> Int -> [OrgBlock] +ppDocInsts [] _ _ = [] +ppDocInsts insts heading level = +  [headingPlainText heading level, PlainList Unordered (map ppDocInst insts)] + +ppDocInst :: DocInstance DocNameI -> [OrgBlock] +ppDocInst (InstHead clsName types (ClassInst {..}), mbMdoc, _docName, _mbMod) = +  prependInlinesToBlocks +    (  interNotNull +        [Whitespace] +        [ ppContext clsiCtx +        , ppDocName clsName +        , intercalate [Whitespace] +                      (map (ppHsType . reparenTypePrec PREC_CON) types) +        ] +    ++ if mbMDocHasDoc mbMdoc +       then +         [Whitespace, plaintext "::", Whitespace] +       else +         [] +    ) +    (maybe [] (`ppMDoc` Nothing) mbMdoc) +ppDocInst (InstHead clsName types (TypeInst mbRhs), mbMdoc, _docName, _mbMod) = +  prependInlinesToBlocks +    (  plaintext "type " +    :  ppDocName clsName +    ++ [Whitespace] +    ++ intercalate [Whitespace] +                   (map (ppHsType . reparenTypePrec PREC_CON) types) +    ++ maybe +         [] +         (\ty -> plaintext " = " : ppHsType (reparenTypePrec PREC_TOP ty)) +         mbRhs +    ++ if mbMDocHasDoc mbMdoc +         then [Whitespace, plaintext "::", Whitespace] +         else [] +    ) +    (maybe [] (`ppMDoc` Nothing) mbMdoc) +-- TODO: add decl     +ppDocInst (InstHead clsName types (DataInst _decl), mbMdoc, _docName, _mbMod) = +  prependInlinesToBlocks +    (  plaintext "data " +    :  ppDocName clsName +    ++ [Whitespace] +    ++ intercalate [Whitespace] +                   (map (ppHsType . reparenTypePrec PREC_CON) types) +    ++ if mbMDocHasDoc mbMdoc +         then [Whitespace, plaintext "::", Whitespace] +         else [] +    ) +    (maybe [] (`ppMDoc` Nothing) mbMdoc) + +mbMDocHasDoc :: Maybe (MDoc DocName) -> Bool +mbMDocHasDoc Nothing                     = False +mbMDocHasDoc (Just (MetaDoc _ DocEmpty)) = False +mbMDocHasDoc _                           = True + +parensIfMany :: [a] -> [OrgInline] -> [OrgInline] +parensIfMany xs org = if length xs > 1 then orgParens org else org + +dcSuffix :: DocName -> String +dcSuffix name = if isDataConName (getName name) then ":dc" else "" + +idPath :: ModPath -> DocName -> String +idPath (pkg, mdl) name = +  pkg ++ "." ++ mdl ++ "." ++ docNameToString name ++ dcSuffix name + +idPath' :: Module -> DocName -> String +idPath' mdl name = +  idPath (cleanPkgStr $ unitString $ moduleUnit mdl, moduleString mdl) name + +idPathNoPkg :: String -> DocName -> String +idPathNoPkg mdl name = mdl ++ "." ++ docNameToString name ++ dcSuffix name + +cIdPaths :: ModPath -> DocName -> Properties +cIdPaths path@(_, mdl) name = cIdsProp [idPath path name, idPathNoPkg mdl name] + +ppTyClDecl +  :: TyClDecl DocNameI +  -> DocForDecl DocName +  -> SubDocs +  -> ModPath +  -> Int +  -> [OrgBlock] +-- data T a b +-- newtype T a b +-- TODO: handle fixity +ppTyClDecl (DataDecl _ (L _ name) tcdTyVars _ defn@(HsDataDefn { dd_ND = nd, dd_cons = cons })) docs subdocs path level +  = [ Heading +        level +        ( Plain +            ((ppNewOrData nd) <+> (docNameToDoc name) <+> hsep +              (ppName <$> tyvarNames tcdTyVars) +            ) +        : if gadt then [plaintext " where"] else [] +        ) +        (cIdPaths path name) +    ] +    ++ ppDocForDecl docs (Just level) +    ++ ppDataDefn defn subdocs path (level + 1) + where +  gadt = case cons of +    []                    -> False +    L _ ConDeclGADT{} : _ -> True +    _                     -> False +ppTyClDecl (DataDecl{}) docs _ _ level = +  unimpHeading "DataDecl" level : ppDocForDecl docs (Just level) +-- type T a b     +ppTyClDecl (SynDecl _ (L _ name) tcdTyVars _fixity (L _ rhs)) docs _ path level +  = [ Heading +        level +        (  intersperse +            Whitespace +            (  [plaintext "type", Plain $ docNameToDoc name] +            ++ map (Plain . ppName) (tyvarNames tcdTyVars) +            ++ [Plain $ text "= "] +            ) +        ++ ppHsType rhs +        ) +        (cIdPaths path name) +    ] +    ++ ppDocForDecl docs (Just level) +-- class +ppTyClDecl (ClassDecl {..}) docs subdocs path level = +  [ Heading +      level +      (interNotNull +        [Whitespace] +        [ [plaintext "class"] +        , ppMbLHsContext tcdCtxt +        , (singleton . Plain . docNameToDoc . unLoc) tcdLName +        , intersperse Whitespace (map (Plain . ppName) (tyvarNames tcdTyVars)) +        ] +      ) +      (cIdPaths path (unLoc tcdLName)) +    ] +    ++ ppDocForDecl docs (Just level) +    -- TODO: do we need an aDoc here instead of M.empty? +    -- TODO: handle default sigs +    ++ concatMap +         ((\sig -> ppSig sig emptyDoc subdocs path (level + 1)) . unLoc) +         tcdSigs +-- type family ... where +-- TODO: handle infix +ppTyClDecl (FamDecl _ (FamilyDecl _ (ClosedTypeFamily mbEqns) TopLevel (L _ name) tyvars _fixity (L _ resSig) mbInj)) docs subdocs path level +  = Heading +      level +      (  [plaintext "type family ", Plain $ docNameToDoc name, Whitespace] +      ++ ppLHsQTyVars tyvars +      ++ ppFamilyResultSig resSig "=" +      ++ maybe [] ppLInjectivityAnn mbInj +      ++ [plaintext " where"] +      ) +      (cIdPaths path name) +    :  ppDocForDecl docs (Just level) +    ++ concatMap (\x -> ppLTyFamInstEqn x subdocs path (level + 1)) +                 (fromMaybe [] mbEqns) +-- data family +-- type family +-- DataFamily or OpenTypeFamily +ppTyClDecl (FamDecl _ (FamilyDecl _ info TopLevel (L _ name) tyvars _fixity (L _ resSig) mbInj)) docs _ path level +  = Heading +      level +      (  [pre, Plain $ docNameToDoc name, Whitespace] +      ++ ppLHsQTyVars tyvars +      ++ ppFamilyResultSig resSig op +      ++ maybe [] ppLInjectivityAnn mbInj +      ) +      (cIdPaths path name) +    : ppDocForDecl docs (Just level) + where +  pre = case info of +    DataFamily     -> plaintext "data family " +    OpenTypeFamily -> plaintext "type family " +  op = case info of +    DataFamily -> "::" +    _          -> "=" +ppTyClDecl (FamDecl{}) docs _ _ level = +  unimpHeading "FamDecl" level : ppDocForDecl docs (Just level) + +ppLTyFamInstEqn +  :: LTyFamInstEqn DocNameI -> SubDocs -> ModPath -> Int -> [OrgBlock] +ppLTyFamInstEqn (L _ (FamEqn _ (L _ name) _ tyPats _fixity rhs)) subdocs _ level +  = Heading +      level +      (interNotNull +        [Whitespace] +        [ ppDocName name +        , intercalate [Whitespace] (map ppHsArg tyPats) +        , [plaintext "="] +        , ppLHsType (reparenTypePrec PREC_TOP <$> rhs) +        ] +      ) +      [] +    : maybe [] (`ppDocForDecl` (Just level)) (lookup name subdocs) + +ppHsArg :: HsArg (LHsType DocNameI) (LHsKind DocNameI) -> [OrgInline] +ppHsArg (HsValArg ty) = ppLHsType (reparenTypePrec PREC_CON <$> ty) +ppHsArg _             = [plaintext $ unimp "HsArg"] + +ppLInjectivityAnn :: LInjectivityAnn DocNameI -> [OrgInline] +ppLInjectivityAnn (L _ (InjectivityAnn _ (L _ l) rs)) = +  [ plaintext " | " +  , Plain $ docNameToDoc l +  , plaintext " -> " +  , Plain $ hsep $ map (docNameToDoc . unLoc) rs +  ] +ppLInjectivityAnn _ = [plaintext $ unimp "LInjectivityAnn"] + +ppFamilyResultSig :: FamilyResultSig DocNameI -> String -> [OrgInline] +ppFamilyResultSig (KindSig _ (L _ x)) op = +  [Whitespace, plaintext op, Whitespace] ++ ppHsType x +ppFamilyResultSig (NoSig{}) _ = [] +ppFamilyResultSig (TyVarSig _ x) op = +  [Whitespace, plaintext op, Whitespace] ++ ppLHsTyVarBndr x + +ppDataDefn :: HsDataDefn DocNameI -> SubDocs -> ModPath -> Int -> [OrgBlock] +ppDataDefn (HsDataDefn _ _ _ _ _ cons _derivs) subdocs path level = +  concatMap ((\con -> ppConDecl con subdocs path level) . unLoc) cons +ppDataDefn _ _ _ level = [unimpHeading "DataDecl" level] + +ppConDecl :: ConDecl DocNameI -> SubDocs -> ModPath -> Int -> [OrgBlock] +-- T1 a Int +-- TODO: handle infix +ppConDecl (ConDeclH98 _ (L _ docName) _forall exTvs mbCtxt args _) subdocs path level +  = Heading +      level +      (interNotNull +        [Whitespace] +        [ ppForAll exTvs +        , ppMbLHsContext mbCtxt +        , [Plain (docNameToDoc docName)] +        , prefixOnly +        ] +      ) +      (cIdPaths path docName) +    :  case lookup docName subdocs of +         Just (doc, aDoc) -> +           prefixWithDocs aDoc ++ ppDocumentation doc (Just level) +         Nothing -> [] +    ++ ppConDeclRecCon args subdocs path (level + 1) + where +  prefixOnly = case args of +    PrefixCon _ args' -> interNotNull [Whitespace] (map ppHsScaled args') +    RecCon _          -> [plaintext "{"] +    _                 -> [] +  prefixWithDocs :: FnArgsDoc DocName -> [OrgBlock] +  prefixWithDocs aDoc = if M.null aDoc +    then [] +    else case args of +      PrefixCon _ args' -> +        [ Paragraph [plaintext "Arguments:"] +        , DefList +          (map (\(i, arg) -> (ppHsScaled arg, ppADoc aDoc i)) (zip [1 ..] args') +          ) +        ] +      _ -> ppFnArgsDoc aDoc +-- TODO: handle con_bndrs and con_mb_cxt +ppConDecl (ConDeclGADT _ names _ _ args resTy _) subdocs path level = +  [ Heading +      level +      (  interNotNull +          [Whitespace] +          [ intersperse (Plain $ text ", ") +                        (map (Plain . docNameToDoc . unLoc) names) +          , [plaintext "::"] +          ] +      ++ [Whitespace] +      ++ ppConDeclGADTDetailsPrefix args resTy +      ) +      (concatMap (cIdPaths path . unLoc) names) +    ] +    ++ maybe [] +             (`ppDocForDecl` (Just level)) +             (lookup (unLoc $ head names) subdocs) +    ++ ppConDeclGADTDetailsRec args resTy subdocs path (level + 1) + + +ppForAll :: [LHsTyVarBndr a DocNameI] -> [OrgInline] +ppForAll [] = [] +ppForAll xs = +  intercalate [Whitespace] ([plaintext "forall"] : map ppLHsTyVarBndr xs) +    ++ [plaintext "."] + +ppConDeclGADTDetailsPrefix +  :: HsConDeclGADTDetails DocNameI -> LHsType DocNameI -> [OrgInline] +ppConDeclGADTDetailsPrefix (PrefixConGADT args) resTy = +  intercalate [plaintext " -> "] (map ppHsScaled args ++ [ppLHsType resTy]) +ppConDeclGADTDetailsPrefix (RecConGADT{}) _ = [plaintext "{"] + +ppConDeclGADTDetailsRec +  :: HsConDeclGADTDetails DocNameI +  -> LHsType DocNameI +  -> SubDocs +  -> ModPath +  -> Int +  -> [OrgBlock] +ppConDeclGADTDetailsRec (RecConGADT (L _ args)) resTy subdocs path level = +  concatMap (\arg -> ppConDeclField (unLoc arg) subdocs path level) args +    ++ [Heading level (plaintext "} -> " : ppLHsType resTy) []] +ppConDeclGADTDetailsRec _ _ _ _ _ = [] + +ppConDeclRecCon +  :: HsConDeclH98Details DocNameI -> SubDocs -> ModPath -> Int -> [OrgBlock] +ppConDeclRecCon (RecCon (L _ args)) subdocs path level = +  concatMap (\arg -> ppConDeclField (unLoc arg) subdocs path level) args +ppConDeclRecCon _ _ _ _ = [] + +ppConDeclField +  :: ConDeclField DocNameI -> SubDocs -> ModPath -> Int -> [OrgBlock] +ppConDeclField (ConDeclField _ names (L _ ty) _) subdocs path level = +  [ Heading +      level +      (interNotNull +        [Whitespace] +        [ intersperse +          (Plain $ text ", ") +          (map (Plain . docNameToDoc . fieldOccDocName . unLoc) names) +        , [plaintext "::"] +        , ppHsType ty +        ] +      ) +      (concatMap (cIdPaths path . fieldOccDocName . unLoc) names) +    ] +    ++ maybe [] (`ppDocForDecl` (Just level)) (lookup docName subdocs) +  where docName = (fieldOccDocName . unLoc . head) names + +fieldOccDocName :: FieldOcc DocNameI -> DocName +fieldOccDocName (FieldOcc docName _) = docName +fieldOccDocName _                    = error "FieldOccDocName" + +-- TODO: handle linear types +ppHsScaled :: HsScaled DocNameI (LHsType DocNameI) -> [OrgInline] +ppHsScaled (HsScaled _ (L _ ty)) = ppHsType ty + +ppSig +  :: Sig DocNameI +  -> DocForDecl DocName +  -> SubDocs +  -> ModPath +  -> Int +  -> [OrgBlock] +-- toplevel decl e.g. f :: Int -> String +ppSig (TypeSig _ lhs rhs) (doc, aDoc) _ path level = +  Heading +      level +      (  [ Plain (hsep $ punctuate comma $ docNameToDoc . unLoc <$> lhs) +         , Whitespace +         , plaintext "::" +         , Whitespace +         ] +      ++ (ppHsSigType hsSig) +      ) +      (concatMap (cIdPaths path . unLoc) lhs) +    :  (if M.null aDoc then [] else ppHsSigTypeDoc hsSig aDoc) +    ++ ppDocumentation doc (Just level) +  where hsSig = unLoc (dropWildCards rhs) +-- class method decl +ppSig (ClassOpSig _ _ names (L _ sigType)) _ subdocs path level = +  [ Heading +      level +      (  [ Plain (hsep $ punctuate comma $ docNameToDoc . unLoc <$> names) +         , Whitespace +         , plaintext "::" +         , Whitespace +         ] +      ++ ppHsSigType sigType +      ) +      (concatMap (cIdPaths path . unLoc) names) +    ] +    ++ case lookup (unLoc (head names)) subdocs of +         Just (doc, aDoc) -> +           (if M.null aDoc then [] else ppHsSigTypeDoc sigType aDoc) +             ++ ppDocumentation doc (Just level) +         Nothing -> [] +ppSig (PatSynSig _ names (L _ hsSig)) (doc, aDoc) _ path level = +  Heading +      level +      (  [ plaintext "pattern " +         , Plain (hsep $ punctuate comma $ docNameToDoc . unLoc <$> names) +         , Whitespace +         , plaintext "::" +         , Whitespace +         ] +      ++ (ppHsSigType hsSig) +      ) +      (concatMap (cIdPaths path . unLoc) names) +    :  (if M.null aDoc then [] else ppHsSigTypeDoc hsSig aDoc) +    ++ ppDocumentation doc (Just level) + +-- TODO: every class's sigs start with a MinimalSig +ppSig (MinimalSig{}) _ _ _ _     = [] +ppSig _              _ _ _ level = [headingPlainText (unimp "Sig") level] + +ppNewOrData :: NewOrData -> PDoc +ppNewOrData NewType  = text "newtype" +ppNewOrData DataType = text "data" + +ppHsSigType :: HsSigType DocNameI -> [OrgInline] +ppHsSigType (HsSig _ bndrs (L _ ty)) = interNotNull +  [Whitespace] +  [ppHsOuterSigTyVarBndrs bndrs, ppHsType (reparenTypePrec PREC_TOP ty)] + +ppHsOuterSigTyVarBndrs :: HsOuterSigTyVarBndrs DocNameI -> [OrgInline] +ppHsOuterSigTyVarBndrs bndrs = case bndrs of +  HsOuterExplicit _ tyVarBndrs -> ppForAll tyVarBndrs +  _                            -> [] + +ppHsSigTypeDoc :: HsSigType DocNameI -> FnArgsDoc DocName -> [OrgBlock] +ppHsSigTypeDoc (HsSig _ bndrs (L _ ty)) adoc = +  [Paragraph [plaintext "Arguments:"], DefList (forall ++ ppHsTypeDoc ty 0)] + where +  ppHsTypeDoc :: HsType DocNameI -> Int -> [DefListItem] +  ppHsTypeDoc (HsFunTy _ _ (L _ lTy) (L _ rTy)) i = +    ppHsTypeDoc lTy i ++ ppHsTypeDoc rTy (i + 1) +  ppHsTypeDoc (HsQualTy _ mbCtxt (L _ body)) i = +    (ppMbLHsContext mbCtxt, []) : ppHsTypeDoc body i +  ppHsTypeDoc (HsForAllTy _ tele (L _ body)) i = +    (ppHsForAllTelescope tele ++ [plaintext "."], []) : ppHsTypeDoc body i +  ppHsTypeDoc typ i = [(ppHsType typ, ppADoc adoc i)] +  forall = case ppHsOuterSigTyVarBndrs bndrs of +    [] -> [] +    is -> [(is, [])] + +ppDocForDecl :: DocForDecl DocName -> Maybe Int -> [OrgBlock] +ppDocForDecl (doc, adoc) l = ppFnArgsDoc adoc ++ ppDocumentation doc l + +ppADoc :: FnArgsDoc DocName -> Int -> [OrgBlock] +ppADoc adoc i = case adoc !? i of +  Nothing   -> [] +  Just mdoc -> ppMDoc mdoc Nothing + +ppHsType :: HsType DocNameI -> [OrgInline] +-- e.g. -> forall d. d +ppHsType (HsForAllTy _ tele (L _ body)) = +  ppHsForAllTelescope tele ++ [plaintext ".", Whitespace] ++ ppHsType body +-- e.g. forall a. Ord a => a +ppHsType (HsQualTy _ mbCtxt (L _ body)) = +  interNotNull [Whitespace] [ppMbLHsContext mbCtxt, ppHsType body] +-- e.g. Bool +ppHsType (HsTyVar _ promo (L _ docName)) = +  ppPromoted promo ++ ppDocName docName +-- e.g. IO () +ppHsType (HsAppTy _ (L _ lTy) (L _ rTy)) = +  ppHsType lTy ++ [Whitespace] ++ ppHsType rTy +ppHsType (HsAppKindTy _ _ _) = [plaintext $ unimp "HsAppKindTy"] +ppHsType (HsFunTy _ _ (L _ lTy) (L _ rTy)) = +  ppHsType lTy ++ [Whitespace, plaintext "->", Whitespace] ++ ppHsType rTy +-- e.g. [a] +ppHsType (HsListTy _ (L _ ty) ) = orgBrackets $ ppHsType ty +-- e.g. () +-- e.g. (a, b) +ppHsType (HsTupleTy _ sort tys) = orgParens $ maybeUnbox $ intercalate +  [plaintext ",", Whitespace] +  (ppHsType . unLoc <$> tys) + where +  maybeUnbox = case sort of +    HsUnboxedTuple           -> orgUnbox +    HsBoxedOrConstraintTuple -> id +-- e.g. (# a | b #)     +ppHsType (HsSumTy _ tys) = +  orgParens . orgUnbox $ intercalate [plaintext " | "] (map ppLHsType tys) +ppHsType (HsOpTy _ (L _ lTy) (L _ docName) (L _ rTy)) = +  intercalate [Whitespace] [ppHsType lTy, ppDocName docName, ppHsType rTy] +-- e.g. (a -> a) +ppHsType (HsParTy _ (L _ t)) = orgParens $ ppHsType t +-- e.g. ?callStack :: CallStack +ppHsType (HsIParamTy _ (L _ name) ty) = +  (plaintext $ '?' : unpackFS (hsIPNameFS name)) +    : plaintext " :: " +    : ppLHsType ty +ppHsType (HsStarTy _ _) = [plaintext "*"] +-- e.g. (a :: k) +ppHsType (HsKindSig _ (L _ t) (L _ k)) = +  ppHsType t ++ [plaintext " :: "] ++ ppHsType k +ppHsType (HsSpliceTy _ _              ) = [plaintext $ unimp "HsSpliceTy"] +-- e.g.   -> a            -- ^ Second argument +-- The third arg in docty is HsDocString +ppHsType (HsDocTy  _ (L _ t) _        ) = ppHsType t +ppHsType (HsBangTy _ _       (L _ ty) ) = plaintext "!" : ppHsType ty +ppHsType (HsRecTy _ _                 ) = [plaintext $ unimp "HsRecTy"] +-- TODO: is it possible that promo is NotPromoted?  If so what is the difference +-- from a vanilla list (cf ExplicitTuple does not have a promo flag)? +ppHsType (HsExplicitListTy _ promo tys) = ppPromoted promo +  ++ orgBrackets (intercalate [plaintext ", "] (map ppLHsType tys)) +ppHsType (HsExplicitTupleTy _ tys) = +  plaintext "'" : orgParens (intercalate [plaintext ", "] (map ppLHsType tys)) +ppHsType (HsTyLit _ lit) = [plaintext $ shown] + where +  shown = case lit of +    HsNumTy  _ x -> show x +    HsStrTy  _ x -> show x +    HsCharTy _ x -> show x +ppHsType (HsWildCardTy _) = [plaintext "_"] +ppHsType _                = [plaintext $ unimp "HsType"] + +ppLHsType :: LHsType DocNameI -> [OrgInline] +ppLHsType (L _ x) = ppHsType x + +ppMbLHsContext :: Maybe (LHsContext DocNameI) -> [OrgInline] +ppMbLHsContext = maybe [] (ppContext . map unLoc . unLoc) + +ppContext :: [HsType DocNameI] -> [OrgInline] +ppContext [] = [] +ppContext ctx = +  parensIfMany ctx (intercalate [plaintext ",", Whitespace] (map ppHsType ctx)) +    ++ [Whitespace, plaintext "=>"] + +ppPromoted :: PromotionFlag -> [OrgInline] +ppPromoted flag = case flag of +  NotPromoted -> [] +  IsPromoted  -> [plaintext "'"] + +ppDocName :: DocName -> [OrgInline] +ppDocName docName@(Documented _ mdl) = +  [Link (text "#" <> text (idPath' mdl docName)) [Plain $ docNameToDoc docName]] +ppDocName docName@(Undocumented name) = case nameModule_maybe name of +  Nothing  -> [Plain $ docNameToDoc docName] +  Just mdl -> ppDocName (Documented name mdl) + +-- TODO: determine whether it's a subordinate based on NameSpace +ppMO :: (ModuleName, OccName) -> [OrgInline] +ppMO (mdl, occ) = +  [ Link (text $ "#" ++ moToString (mdl, occ)) +         [plaintext $ moToString (mdl, occ)] +  ] + +ppHsForAllTelescope :: HsForAllTelescope DocNameI -> [OrgInline] +ppHsForAllTelescope (HsForAllInvis _ bndrs) = +  intercalate [Whitespace] ([plaintext "forall"] : map ppLHsTyVarBndr bndrs) +ppHsForAllTelescope _ = [plaintext $ unimp "HsForAllTelescope"] + +ppLHsTyVarBndr :: LHsTyVarBndr a DocNameI -> [OrgInline] +ppLHsTyVarBndr (L _ x) = ppHsTyVarBndr x + +ppHsTyVarBndr :: HsTyVarBndr a DocNameI -> [OrgInline] +ppHsTyVarBndr (UserTyVar _ _ (L _ docName)) = [Plain $ docNameToDoc docName] +ppHsTyVarBndr (KindedTyVar _ _ (L _ docName) (L _ ty)) = +  orgParens $ Plain (docNameToDoc docName) : plaintext " :: " : ppHsType ty + +ppOccName :: OccName -> PDoc +ppOccName = text . occNameString + +ppName :: Name -> PDoc +ppName = ppOccName . nameOccName + +docNameToDoc :: DocName -> PDoc +docNameToDoc = ppName . getName + +docNameToString :: DocName -> String +docNameToString = occNameString . nameOccName . getName + +ppWrapped :: (a -> [OrgInline]) -> Wrap a -> [OrgInline] +ppWrapped p (Unadorned     n) = p n +ppWrapped p (Parenthesized n) = orgParens $ p n +ppWrapped p (Backticked    n) = plaintext "`" : p n ++ [plaintext "`"] + +wrapDocNameToString :: Wrap DocName -> String +wrapDocNameToString = showWrapped docNameToString + +wrapMOToString :: Wrap (ModuleName, OccName) -> String +wrapMOToString = showWrapped moToString + +moToString :: (ModuleName, OccName) -> String +moToString (mdl, occ) = moduleNameString mdl ++ "." ++ occNameString occ + +removeMarkup :: Doc DocName -> String +removeMarkup = markup (plainMarkup wrapMOToString wrapDocNameToString) + +removeMarkup' :: Doc RdrName -> String +removeMarkup' = markup (plainMarkup wrapMOToString (showWrapped showPprUnsafe)) + +orgUnbox :: [OrgInline] -> [OrgInline] +orgUnbox xs = interNotNull [Whitespace] [[plaintext "#"], xs, [plaintext "#"]] + +-- * Utilities + +interNotNull :: [a] -> [[a]] -> [a] +interNotNull xs = intercalate xs . filter (not . null) + +tyvarNames :: LHsQTyVars DocNameI -> [Name] +tyvarNames = map (getName . hsLTyVarNameI) . hsQTvExplicit + +ppLHsQTyVars :: LHsQTyVars DocNameI -> [OrgInline] +ppLHsQTyVars (HsQTvs _ bndrs) = +  intercalate [Whitespace] (map ppLHsTyVarBndr bndrs) +ppLHsQTyVars _ = [plaintext $ unimp "LHsQTyVars"] + +isBlock :: DocH mod id -> Bool +isBlock DocEmpty                   = True +isBlock (DocAppend x y           ) = isBlock x || isBlock y +isBlock (DocString              _) = False +isBlock (DocParagraph           _) = True +isBlock (DocIdentifier          _) = False +isBlock (DocIdentifierUnchecked _) = False +isBlock (DocModule              _) = False +isBlock (DocWarning             _) = False +isBlock (DocEmphasis            _) = False +isBlock (DocMonospaced          _) = False +isBlock (DocBold                _) = False +isBlock (DocUnorderedList       _) = True +isBlock (DocOrderedList         _) = True +isBlock (DocDefList             _) = True +isBlock (DocCodeBlock           _) = True +isBlock (DocHyperlink           _) = False +isBlock (DocPic                 _) = False +isBlock (DocMathInline          _) = False +isBlock (DocMathDisplay         _) = True +isBlock (DocAName               _) = False +isBlock (DocProperty            _) = False +isBlock (DocExamples            _) = True +isBlock (DocHeader              _) = True +isBlock (DocTable               _) = True + +cleanPkgStr :: String -> String +cleanPkgStr = removeHash . removeInplace + +removeInplace :: String -> String +removeInplace s | isSuffixOf "-inplace" s = take (length s - 8) s +removeInplace s                           = s + +-- A silly heuristic that removes the last 65 chars if the string is longer than 65 chars +-- useful for removing hash from a unit id string like +-- sqlite-simple-0.4.18.2-fe5243655374e8f6ef336683926e98123d2de2f3265d2b935e0897c09586970b +removeHash :: String -> String +removeHash s | length s > 65 = take (length s - 65) s +removeHash s                 = s + +hackagePackageUrl :: String -> String +hackagePackageUrl pkg = "https://hackage.haskell.org/package/" ++ pkg + +hackageModuleUrl :: String -> String -> String +hackageModuleUrl pkg mdl = +  hackagePackageUrl pkg ++ "/docs/" ++ dotsToDashes mdl ++ ".html" +  where dotsToDashes = map (\c -> if c == '.' then '-' else c) + +-- * Orphan instances for show + +instance Show DocName where +  show = showPprUnsafe + +instance Show OccName where +  show = showPprUnsafe diff --git a/haddock-api/src/Haddock/Backends/Org/Types.hs b/haddock-api/src/Haddock/Backends/Org/Types.hs new file mode 100644 index 00000000..9e3534c3 --- /dev/null +++ b/haddock-api/src/Haddock/Backends/Org/Types.hs @@ -0,0 +1,260 @@ +{- +Copyright (C) 2022 Yuchen Pei. + +This file is part of haddorg-api. + +This file is free software: you can redistribute it and/or modify it +under the terms of the GNU Affero General Public License as published +by the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This file is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public +License along with this file.  If not, see +<https://www.gnu.org/licenses/>. +-} + +{-# LANGUAGE DeriveDataTypeable, DeriveGeneric, FlexibleContexts #-} +{-# OPTIONS_GHC -fno-warn-orphans #-} + +module Haddock.Backends.Org.Types where + +import           Data.Char                      ( isSpace ) +import           Data.List                      ( dropWhileEnd +                                                , intercalate +                                                ) +import           Data.Map                       ( Map ) +import           GHC.Utils.Ppr                  ( ($$) +                                                , (<+>) +                                                , (<>) +                                                , Doc +                                                , Mode(..) +                                                , brackets +                                                , empty +                                                , fullRender +                                                , hang +                                                , hcat +                                                , hsep +                                                , punctuate +                                                , text +                                                , txtPrinter +                                                , vcat +                                                ) +import           Prelude                 hiding ( (<>) ) + +-- * Some consts +defListSep :: Doc +defListSep = text "::" + +unorderedBullet, orderedBullet :: String +unorderedBullet = "-" +orderedBullet = "." + +colons :: Doc -> Doc +colons doc = text ":" <> doc <> text ":" + +-- * Document, Sections and Headings + +data OrgDocument = OrgDocument +  { oDKeywords :: Map String Doc +  , oDBlocks   :: [OrgBlock] +  } +  deriving Show + +-- todo: handle keywords + +type Properties = [(String, String)] + +-- * Blocks + +-- | Org block. Like a Pandoc Block. +data OrgBlock +  = Heading Int [OrgInline] Properties +  | PlainList ListType [[OrgBlock]] +  | DefList [DefListItem] +  | Paragraph [OrgInline] +  | Table [[[OrgInline]]] [[[OrgInline]]] +  | SrcBlock Doc +  | MathDisplay Doc +  | Example Doc Doc -- expression and result +  deriving (Show) + +-- Lists + +data ListType = Ordered | Unordered +  deriving (Show) + +type DefListItem = ([OrgInline], [OrgBlock]) + +-- * Inlines + +-- | Objects (inline elements). Derived from Pandoc's Inline. +data OrgInline +  = Plain Doc +  | Italic [OrgInline] +  | Bold [OrgInline] +  | Code Doc +  | Link Doc [OrgInline] +  | Anchor Doc +  | Whitespace +  | MathInline Doc +  deriving (Show) + +-- * From Org elements to Doc + +fromOrgDocument :: OrgDocument -> Doc +fromOrgDocument (OrgDocument _ blocks) = fromOrgBlocks blocks <> text "\n" + +fromOrgBlock :: OrgBlock -> Doc +fromOrgBlock (Heading level inlines props) = hang +  (text (replicate level '*') <+> fromOrgInlines inlines) +  (level + 1) +  (fromOrgProperties props) +fromOrgBlock (Paragraph inlines) = fromOrgInlines inlines +fromOrgBlock (SrcBlock code) = +  -- The \n followed by <> code makes indentation work, given the code has no indent +  vcat [text "#+begin_src haskell\n" <> code, text "#+end_src"] +fromOrgBlock (DefList defs) = vcat $ map +  (\(term, def) -> fromOrgListItem +    unorderedBullet +    (prependInlinesToBlocks (term ++ [Whitespace, plaintext "::", Whitespace]) +                            def +    ) +  ) +  defs +fromOrgBlock (PlainList Unordered items) = +  vcat $ map (uncurry fromOrgListItem) (zip (repeat unorderedBullet) items) +fromOrgBlock (PlainList Ordered items) = vcat $ map +  (uncurry fromOrgListItem) +  (zip (map ((++ orderedBullet) . show) [1 ..]) items) +fromOrgBlock (Example expr res) = +  (fromOrgBlock (SrcBlock expr)) $$ (text "#+RESULTS:") $$ res +fromOrgBlock (MathDisplay doc) = doc +fromOrgBlock (Table header body) = +  vcat (map fromOrgTableRow header) $$ tableRule len $$ vcat +    (map fromOrgTableRow body) + where +  len = case header of +    [] -> case body of +      []    -> 0 +      h : _ -> length h +    h : _ -> length h + +tableRule :: Int -> Doc +tableRule n = +  text "|" <> hcat (punctuate (text "|") (replicate n (text "-"))) <> text "|" + +fromOrgTableRow :: [[OrgInline]] -> Doc +fromOrgTableRow row = +  text "|" <+> hsep (punctuate (text "|") (map fromOrgInlines row)) <+> text "|" + +prependInlinesToBlock :: [OrgInline] -> OrgBlock -> [OrgBlock] +prependInlinesToBlock [] block = [block] +prependInlinesToBlock _ (Heading _ _ _) = +  error "Prepending inlines to a heading!" +prependInlinesToBlock is (Paragraph is') = [Paragraph (is ++ is')] +prependInlinesToBlock is block           = [Paragraph is, block] + +prependInlinesToBlocks :: [OrgInline] -> [OrgBlock] -> [OrgBlock] +prependInlinesToBlocks is []      = [Paragraph is] +prependInlinesToBlocks is (h : t) = prependInlinesToBlock is h ++ t + +fromOrgProperties :: Properties -> Doc +fromOrgProperties props | null props = empty +fromOrgProperties props = +  colons (text "PROPERTIES") +    $$ vcat (map (\(prop, value) -> colons (text prop) <+> text value) props) +    $$ colons (text "END") + +fromOrgBlocks :: [OrgBlock] -> Doc +fromOrgBlocks = vcat . punctuate (text "\n") . map fromOrgBlock + +fromOrgBlocksTight :: [OrgBlock] -> Doc +fromOrgBlocksTight = vcat . map fromOrgBlock + +fromOrgListItem :: String -> [OrgBlock] -> Doc +fromOrgListItem _      []          = empty +fromOrgListItem bullet (hd : rest) = hang (text bullet <+> fromOrgBlock hd) +                                          (length bullet + 1) +                                          (fromOrgBlocksTight rest) + +fromOrgInline :: OrgInline -> Doc +fromOrgInline (Plain doc        ) = doc +fromOrgInline (Code  doc        ) = text "~" <> doc <> text "~" +fromOrgInline (Link target label) = brackets $ brackets target <> if null label +  then empty +  else brackets (fromOrgInlines label) +fromOrgInline (Bold   inlines) = text "*" <> fromOrgInlines inlines <> text "*" +fromOrgInline (Italic inlines) = text "/" <> fromOrgInlines inlines <> text "/" +fromOrgInline (Anchor doc    ) = text "<<" <> doc <> text ">>" +fromOrgInline Whitespace       = text " " +fromOrgInline (MathInline doc) = text "\\(" <+> doc <+> text "\\)" + +fromOrgInlines :: [OrgInline] -> Doc +fromOrgInlines = hcat . map fromOrgInline + +-- * To string + +orgToString :: Doc -> String +orgToString = fullRender (PageMode True) 0 1 txtPrinter "" + +-- * Utilities for creating org elements + +cIdProp :: String -> Properties +cIdProp cid = [("CUSTOM_ID", cid)] + +hackageProp :: String -> Properties +hackageProp url = [("Hackage", url)] + +cIdsProp :: [String] -> Properties +cIdsProp cids = map (\cid -> ("CUSTOM_ID", cid)) cids + +plaintext :: String -> OrgInline +plaintext = Plain . text . unfill + +unfill :: String -> String +unfill "" = "" +unfill s = +  let +    xs          = lines s +    preStripped = head xs : map (dropWhile isSpace) (tail xs) +    stripped = +      map (dropWhileEnd isSpace) (init preStripped) ++ [last preStripped] +  in +    unwords stripped + +fixLeadingStar :: String -> String +fixLeadingStar = +  intercalate "\n" +    . map +        (\line -> +          if not (null line) && head line == '*' then ' ' : line else line +        ) +    . lines + +headingPlainText :: String -> Int -> OrgBlock +headingPlainText title level = Heading level [plaintext title] [] + +headingPlainTextCId :: String -> String -> Int -> OrgBlock +headingPlainTextCId title cid level = +  Heading level [plaintext title] (cIdProp cid) + +singleHeadingPlainText :: String -> Int -> [OrgBlock] +singleHeadingPlainText title level = [headingPlainText title level] + +singleHeadingPlain :: Doc -> Int -> [OrgBlock] +singleHeadingPlain title level = [Heading level [Plain title] []] + +singleHeadingPlainCId :: Doc -> String -> Int -> [OrgBlock] +singleHeadingPlainCId title cid level = +  [Heading level [Plain title] (cIdProp cid)] + +orgParens :: [OrgInline] -> [OrgInline] +orgParens xs = plaintext "(" : xs ++ [plaintext ")"] + +orgBrackets :: [OrgInline] -> [OrgInline] +orgBrackets xs = plaintext "[" : xs ++ [plaintext "]"] diff --git a/haddock-api/src/Haddock/Backends/Xhtml.hs b/haddock-api/src/Haddock/Backends/Xhtml.hs index b7674b24..4cc6aa77 100644 --- a/haddock-api/src/Haddock/Backends/Xhtml.hs +++ b/haddock-api/src/Haddock/Backends/Xhtml.hs @@ -28,7 +28,9 @@ import Haddock.Backends.Xhtml.Names  import Haddock.Backends.Xhtml.Themes  import Haddock.Backends.Xhtml.Types  import Haddock.Backends.Xhtml.Utils +import Haddock.InterfaceFile (PackageInfo (..), PackageInterfaces (..), ppPackageInfo)  import Haddock.ModuleTree +import Haddock.Options (Visibility (..))  import Haddock.Types  import Haddock.Version  import Haddock.Utils @@ -78,6 +80,7 @@ ppHtml :: UnitState         -> Maybe String                 -- ^ The index URL (--use-index)         -> Bool                         -- ^ Whether to use unicode in output (--use-unicode)         -> Maybe String                 -- ^ Package name +       -> PackageInfo                  -- ^ Package info         -> QualOption                   -- ^ How to qualify names         -> Bool                         -- ^ Output pretty html (newlines and indenting)         -> Bool                         -- ^ Also write Quickjump index @@ -86,7 +89,7 @@ ppHtml :: UnitState  ppHtml state doctitle maybe_package ifaces reexported_ifaces odir prologue          themes maybe_mathjax_url maybe_source_url maybe_wiki_url          maybe_base_url maybe_contents_url maybe_index_url unicode -        pkg qual debug withQuickjump = do +        pkg packageInfo qual debug withQuickjump = do    let      visible_ifaces = filter visible ifaces      visible i = OptHide `notElem` ifaceOptions i @@ -94,13 +97,20 @@ ppHtml state doctitle maybe_package ifaces reexported_ifaces odir prologue    when (isNothing maybe_contents_url) $      ppHtmlContents state odir doctitle maybe_package          themes maybe_mathjax_url maybe_index_url maybe_source_url maybe_wiki_url -        (map toInstalledIface visible_ifaces ++ reexported_ifaces) +        withQuickjump +        [PackageInterfaces +          { piPackageInfo = packageInfo +          , piVisibility  = Visible +          , piInstalledInterfaces = map toInstalledIface visible_ifaces +                                 ++ reexported_ifaces +          }]          False -- we don't want to display the packages in a single-package contents          prologue debug pkg (makeContentsQual qual)    when (isNothing maybe_index_url) $ do      ppHtmlIndex odir doctitle maybe_package        themes maybe_mathjax_url maybe_contents_url maybe_source_url maybe_wiki_url +      withQuickjump        (map toInstalledIface visible_ifaces ++ reexported_ifaces) debug    when withQuickjump $ @@ -109,7 +119,8 @@ ppHtml state doctitle maybe_package ifaces reexported_ifaces odir prologue    mapM_ (ppHtmlModule odir doctitle themes             maybe_mathjax_url maybe_source_url maybe_wiki_url maybe_base_url -           maybe_contents_url maybe_index_url unicode pkg qual debug) visible_ifaces +           maybe_contents_url maybe_index_url withQuickjump +           unicode pkg qual debug) visible_ifaces  copyHtmlBits :: FilePath -> FilePath -> Themes -> Bool -> IO () @@ -155,6 +166,15 @@ headHtml docTitle themes mathjax_url base_url =                       ,   "}"                       , "});" ] +quickJumpButtonLi :: Bool  -- ^ With Quick Jump? +                  -> Maybe Html +-- The TypeScript should replace this <li> element, given its id. However, in +-- case it does not, the element is given content here too. +quickJumpButtonLi True = Just $ li ! [identifier "quick-jump-button"] +  << anchor ! [href "#"] << "Quick Jump" + +quickJumpButtonLi False = Nothing +  srcButton :: SourceURLs -> Maybe Interface -> Maybe Html  srcButton (Just src_base_url, _, _, _) Nothing =    Just (anchor ! [href src_base_url] << "Source") @@ -193,20 +213,18 @@ indexButton maybe_index_url  bodyHtml :: String -> Maybe Interface      -> SourceURLs -> WikiURLs      -> Maybe String -> Maybe String +    -> Bool  -- ^ With Quick Jump?      -> Html -> Html  bodyHtml doctitle iface             maybe_source_url maybe_wiki_url             maybe_contents_url maybe_index_url +           withQuickjump             pageContent =    body << [      divPackageHeader << [        nonEmptySectionName << doctitle, -      unordList (catMaybes [ -        srcButton maybe_source_url iface, -        wikiButton maybe_wiki_url (ifaceMod <$> iface), -        contentsButton maybe_contents_url, -        indexButton maybe_index_url]) -            ! [theclass "links", identifier "page-menu"] +      ulist ! [theclass "links", identifier "page-menu"] +        << catMaybes (quickJumpButtonLi withQuickjump : otherButtonLis)        ],      divContent << pageContent,      divFooter << paragraph << ( @@ -215,6 +233,13 @@ bodyHtml doctitle iface        (" version " ++ projectVersion)        )      ] + where +  otherButtonLis = (fmap . fmap) (li <<) +    [ srcButton maybe_source_url iface +    , wikiButton maybe_wiki_url (ifaceMod <$> iface) +    , contentsButton maybe_contents_url +    , indexButton maybe_index_url +    ]  moduleInfo :: Interface -> Html  moduleInfo iface = @@ -277,30 +302,44 @@ ppHtmlContents     -> Maybe String     -> SourceURLs     -> WikiURLs -   -> [InstalledInterface] -> Bool -> Maybe (MDoc GHC.RdrName) +   -> Bool  -- ^ With Quick Jump? +   -> [PackageInterfaces] -> Bool -> Maybe (MDoc GHC.RdrName)     -> Bool     -> Maybe Package  -- ^ Current package     -> Qualification  -- ^ How to qualify names     -> IO ()  ppHtmlContents state odir doctitle _maybe_package    themes mathjax_url maybe_index_url -  maybe_source_url maybe_wiki_url ifaces showPkgs prologue debug pkg qual = do -  let tree = mkModuleTree state showPkgs -         [(instMod iface, toInstalledDescription iface) -         | iface <- ifaces -         , not (instIsSig iface)] -      sig_tree = mkModuleTree state showPkgs -         [(instMod iface, toInstalledDescription iface) -         | iface <- ifaces -         , instIsSig iface] +  maybe_source_url maybe_wiki_url withQuickjump +  packages showPkgs prologue debug pkg qual = do +  let trees = +        [ ( piPackageInfo pinfo +          , mkModuleTree state showPkgs +            [(instMod iface, toInstalledDescription iface) +            | iface <- piInstalledInterfaces pinfo +            , not (instIsSig iface) +            ] +          ) +        | pinfo <- packages +        ] +      sig_trees = +        [ ( piPackageInfo pinfo +          , mkModuleTree state showPkgs +            [(instMod iface, toInstalledDescription iface) +            | iface <- piInstalledInterfaces pinfo +            , instIsSig iface +            ] +          ) +        | pinfo <- packages +        ]        html =          headHtml doctitle themes mathjax_url Nothing +++          bodyHtml doctitle Nothing            maybe_source_url maybe_wiki_url -          Nothing maybe_index_url << [ +          Nothing maybe_index_url withQuickjump << [              ppPrologue pkg qual doctitle prologue, -            ppSignatureTree pkg qual sig_tree, -            ppModuleTree pkg qual tree +            ppSignatureTrees pkg qual sig_trees, +            ppModuleTrees pkg qual trees            ]    createDirectoryIfMissing True odir    writeUtf8File (joinPath [odir, contentsHtmlFile]) (renderToString debug html) @@ -315,17 +354,37 @@ ppPrologue _ _ _ Nothing = noHtml  ppPrologue pkg qual title (Just doc) =    divDescription << (h1 << title +++ docElement thediv (rdrDocToHtml pkg qual doc)) - -ppSignatureTree :: Maybe Package -> Qualification -> [ModuleTree] -> Html -ppSignatureTree _ _ [] = mempty -ppSignatureTree pkg qual ts = -  divModuleList << (sectionName << "Signatures" +++ mkNodeList pkg qual [] "n" ts) - - -ppModuleTree :: Maybe Package -> Qualification -> [ModuleTree] -> Html -ppModuleTree _ _ [] = mempty -ppModuleTree pkg qual ts = -  divModuleList << (sectionName << "Modules" +++ mkNodeList pkg qual [] "n" ts) +ppSignatureTrees :: Maybe Package -> Qualification -> [(PackageInfo, [ModuleTree])] -> Html +ppSignatureTrees _ _ tss | all (null . snd) tss = mempty +ppSignatureTrees pkg qual [(info, ts)] =  +  divPackageList << (sectionName << "Signatures" +++ ppSignatureTree pkg qual "n" info ts) +ppSignatureTrees pkg qual tss = +  divModuleList << +    (sectionName << "Signatures" +     +++ concatHtml [ ppSignatureTree pkg qual("n."++show i++".") info ts +                    | (i, (info, ts)) <- zip [(1::Int)..] tss +                    ]) + +ppSignatureTree :: Maybe Package -> Qualification -> String -> PackageInfo -> [ModuleTree] -> Html +ppSignatureTree _ _ _ _ [] = mempty +ppSignatureTree pkg qual p info ts = +  divModuleList << (sectionName << ppPackageInfo info +++ mkNodeList pkg qual [] p ts) + +ppModuleTrees :: Maybe Package -> Qualification -> [(PackageInfo, [ModuleTree])] -> Html +ppModuleTrees _ _ tss | all (null . snd) tss = mempty +ppModuleTrees pkg qual [(info, ts)] = +  divModuleList << (sectionName << "Modules" +++ ppModuleTree pkg qual "n" info ts) +ppModuleTrees pkg qual tss = +  divPackageList << +    (sectionName << "Packages" +     +++ concatHtml [ppModuleTree pkg qual ("n."++show i++".") info ts +                    | (i, (info, ts)) <- zip [(1::Int)..] tss +                    ]) + +ppModuleTree :: Maybe Package -> Qualification -> String -> PackageInfo -> [ModuleTree] -> Html +ppModuleTree _ _ _ _ [] = mempty +ppModuleTree pkg qual p info ts = +  divModuleList << (sectionName << ppPackageInfo info +++ mkNodeList pkg qual [] p ts)  mkNodeList :: Maybe Package -> Qualification -> [String] -> String -> [ModuleTree] -> Html @@ -418,11 +477,16 @@ ppJsonIndex odir maybe_source_url maybe_wiki_url unicode pkg qual_opt ifaces ins    (errors, installedIndexes) <-      partitionEithers        <$> traverse -            (\ifaceFile -> +            (\ifaceFile -> do                let indexFile = takeDirectory ifaceFile -                    FilePath.</> "doc-index.json" in -                  bimap (indexFile,) (map (fixLink ifaceFile)) -              <$> eitherDecodeFile @[JsonIndexEntry] indexFile) +                    FilePath.</> "doc-index.json" +              a <- doesFileExist indexFile +              if a then +                    bimap (indexFile,) (map (fixLink ifaceFile)) +                <$> eitherDecodeFile @[JsonIndexEntry] indexFile +                   else +                    return (Right []) +            )              installedIfacesPaths    traverse_ (\(indexFile, err) -> putStrLn $ "haddock: Coudn't parse " ++ indexFile ++ ": " ++ err)              errors @@ -486,11 +550,12 @@ ppHtmlIndex :: FilePath              -> Maybe String              -> SourceURLs              -> WikiURLs +            -> Bool  -- ^ With Quick Jump?              -> [InstalledInterface]              -> Bool              -> IO ()  ppHtmlIndex odir doctitle _maybe_package themes -  maybe_mathjax_url maybe_contents_url maybe_source_url maybe_wiki_url ifaces debug = do +  maybe_mathjax_url maybe_contents_url maybe_source_url maybe_wiki_url withQuickjump ifaces debug = do    let html = indexPage split_indices Nothing                (if split_indices then [] else index) @@ -509,7 +574,7 @@ ppHtmlIndex odir doctitle _maybe_package themes        headHtml (doctitle ++ " (" ++ indexName ch ++ ")") themes maybe_mathjax_url Nothing +++        bodyHtml doctitle Nothing          maybe_source_url maybe_wiki_url -        maybe_contents_url Nothing << [ +        maybe_contents_url Nothing withQuickjump << [            if showLetters then indexInitialLetterLinks else noHtml,            if null items then noHtml else              divIndex << [sectionName << indexName ch, buildIndex items] @@ -607,11 +672,14 @@ ppHtmlIndex odir doctitle _maybe_package themes  ppHtmlModule          :: FilePath -> String -> Themes          -> Maybe String -> SourceURLs -> WikiURLs -> BaseURL -        -> Maybe String -> Maybe String -> Bool -> Maybe Package -> QualOption +        -> Maybe String -> Maybe String +        -> Bool  -- ^ With Quick Jump? +        -> Bool -> Maybe Package -> QualOption          -> Bool -> Interface -> IO ()  ppHtmlModule odir doctitle themes    maybe_mathjax_url maybe_source_url maybe_wiki_url maybe_base_url -  maybe_contents_url maybe_index_url unicode pkg qual debug iface = do +  maybe_contents_url maybe_index_url withQuickjump +  unicode pkg qual debug iface = do    let        mdl = ifaceMod iface        aliases = ifaceModuleAliases iface @@ -631,7 +699,7 @@ ppHtmlModule odir doctitle themes          headHtml mdl_str_annot themes maybe_mathjax_url maybe_base_url +++          bodyHtml doctitle (Just iface)            maybe_source_url maybe_wiki_url -          maybe_contents_url maybe_index_url << [ +          maybe_contents_url maybe_index_url withQuickjump << [              divModuleHeader << (moduleInfo iface +++ (sectionName << mdl_str_linked)),              ifaceToHtml maybe_source_url maybe_wiki_url iface unicode pkg real_qual            ] diff --git a/haddock-api/src/Haddock/Backends/Xhtml/DocMarkup.hs b/haddock-api/src/Haddock/Backends/Xhtml/DocMarkup.hs index b8f5ac0f..91a5b120 100644 --- a/haddock-api/src/Haddock/Backends/Xhtml/DocMarkup.hs +++ b/haddock-api/src/Haddock/Backends/Xhtml/DocMarkup.hs @@ -46,7 +46,7 @@ parHtmlMarkup qual insertAnchors ppId = Markup {    markupIdentifierUnchecked  = thecode . ppUncheckedLink qual,    markupModule               = \(ModLink m lbl) ->                                   let (mdl,ref) = break (=='#') m -                                       -- Accomodate for old style +                                       -- Accommodate for old style                                         -- foo\#bar anchors                                       mdl' = case reverse mdl of                                                '\\':_ -> init mdl @@ -57,7 +57,7 @@ parHtmlMarkup qual insertAnchors ppId = Markup {    markupBold                 = strong,    markupMonospaced           = thecode,    markupUnorderedList        = unordList, -  markupOrderedList          = ordList, +  markupOrderedList          = makeOrdList,    markupDefList              = defList,    markupCodeBlock            = pre,    markupHyperlink            = \(Hyperlink url mLabel) @@ -112,9 +112,12 @@ parHtmlMarkup qual insertAnchors ppId = Markup {          htmlPrompt = (thecode . toHtml $ ">>> ") ! [theclass "prompt"]          htmlExpression = (strong . thecode . toHtml $ expression ++ "\n") ! [theclass "userinput"] +    makeOrdList :: HTML a => [(Int, a)] -> Html +    makeOrdList items = olist << map (\(index, a) -> li ! [intAttr "value" index] << a) items +  -- | We use this intermediate type to transform the input 'Doc' tree  -- in an arbitrary way before rendering, such as grouping some --- elements. This is effectivelly a hack to prevent the 'Doc' type +-- elements. This is effectively a hack to prevent the 'Doc' type  -- from changing if it is possible to recover the layout information  -- we won't need after the fact.  data Hack a id = @@ -277,5 +280,5 @@ cleanup = overDoc (markup fmtUnParagraphLists)      fmtUnParagraphLists :: DocMarkup (Wrap a) (Doc a)      fmtUnParagraphLists = idMarkup {        markupUnorderedList = DocUnorderedList . map unParagraph, -      markupOrderedList   = DocOrderedList   . map unParagraph +      markupOrderedList   = DocOrderedList   . map (\(index, a) -> (index, unParagraph a))        } diff --git a/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs b/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs index 8f04a21f..18405db8 100644 --- a/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs +++ b/haddock-api/src/Haddock/Backends/Xhtml/Layout.hs @@ -15,7 +15,7 @@ module Haddock.Backends.Xhtml.Layout (    divPackageHeader, divContent, divModuleHeader, divFooter,    divTableOfContents, divDescription, divSynopsis, divInterface, -  divIndex, divAlphabet, divModuleList, divContentsList, +  divIndex, divAlphabet, divPackageList, divModuleList,  divContentsList,    sectionName,    nonEmptySectionName, @@ -81,7 +81,7 @@ nonEmptySectionName c  divPackageHeader, divContent, divModuleHeader, divFooter,    divTableOfContents, divDescription, divSynopsis, divInterface, -  divIndex, divAlphabet, divModuleList, divContentsList +  divIndex, divAlphabet, divPackageList, divModuleList, divContentsList      :: Html -> Html  divPackageHeader    = sectionDiv "package-header" @@ -96,6 +96,7 @@ divInterface        = sectionDiv "interface"  divIndex            = sectionDiv "index"  divAlphabet         = sectionDiv "alphabet"  divModuleList       = sectionDiv "module-list" +divPackageList      = sectionDiv "module-list"  -------------------------------------------------------------------------------- diff --git a/haddock-api/src/Haddock/Backends/Xhtml/Meta.hs b/haddock-api/src/Haddock/Backends/Xhtml/Meta.hs index 621bdd41..540885ac 100644 --- a/haddock-api/src/Haddock/Backends/Xhtml/Meta.hs +++ b/haddock-api/src/Haddock/Backends/Xhtml/Meta.hs @@ -14,7 +14,7 @@ quickjumpVersion = 1  -- | Writes a json encoded file containing additional  -- information about the generated documentation. This --- is useful for external tools (e.g. hackage). +-- is useful for external tools (e.g., Hackage).  writeHaddockMeta :: FilePath -> Bool -> IO ()  writeHaddockMeta odir withQuickjump = do    let diff --git a/haddock-api/src/Haddock/GhcUtils.hs b/haddock-api/src/Haddock/GhcUtils.hs index 7c1dc73b..062d70e6 100644 --- a/haddock-api/src/Haddock/GhcUtils.hs +++ b/haddock-api/src/Haddock/GhcUtils.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE BangPatterns, StandaloneDeriving, FlexibleInstances, ViewPatterns #-} +{-# LANGUAGE BangPatterns, FlexibleInstances #-}  {-# LANGUAGE TypeFamilies #-}  {-# LANGUAGE TypeOperators #-}  {-# LANGUAGE RankNTypes #-} @@ -136,7 +136,7 @@ hsSigTypeI = sig_body . unLoc  mkEmptySigType :: LHsType GhcRn -> LHsSigType GhcRn  -- Dubious, because the implicit binders are empty even --- though the type might have free varaiables +-- though the type might have free variables  mkEmptySigType lty@(L loc ty) = L loc $ case ty of    HsForAllTy { hst_tele = HsForAllInvis { hsf_invis_bndrs = bndrs }               , hst_body = body } @@ -554,7 +554,7 @@ stringBufferFromByteString bs =  --  -- /O(1)/  takeStringBuffer :: Int -> StringBuffer -> ByteString -takeStringBuffer !n !(S.StringBuffer fp _ cur) = BS.PS fp cur n +takeStringBuffer !n (S.StringBuffer fp _ cur) = BS.PS fp cur n  -- | Return the prefix of the first 'StringBuffer' that /isn't/ in the second  -- 'StringBuffer'. **The behavior is undefined if the 'StringBuffers' use diff --git a/haddock-api/src/Haddock/Interface/AttachInstances.hs b/haddock-api/src/Haddock/Interface/AttachInstances.hs index dc8afa31..4527360f 100644 --- a/haddock-api/src/Haddock/Interface/AttachInstances.hs +++ b/haddock-api/src/Haddock/Interface/AttachInstances.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE MagicHash, BangPatterns #-}  {-# LANGUAGE TypeFamilies #-}  {-# OPTIONS_GHC -Wno-incomplete-record-updates #-}  {-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} diff --git a/haddock-api/src/Haddock/Interface/Create.hs b/haddock-api/src/Haddock/Interface/Create.hs index dbd4a9b2..5d3962ca 100644 --- a/haddock-api/src/Haddock/Interface/Create.hs +++ b/haddock-api/src/Haddock/Interface/Create.hs @@ -9,7 +9,6 @@  {-# LANGUAGE RecordWildCards #-}  {-# LANGUAGE ScopedTypeVariables #-}  {-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TupleSections #-}  {-# LANGUAGE TypeFamilies #-}  {-# LANGUAGE ViewPatterns #-}  {-# OPTIONS_GHC -Wwarn #-} @@ -83,7 +82,7 @@ import GHC.Types.Unique.Map  newtype IfEnv m = IfEnv    { -    -- | Lookup names in the enviroment. +    -- | Lookup names in the environment.      ife_lookup_name :: Name -> m (Maybe TyThing)    } @@ -265,7 +264,7 @@ createInterface1 flags unit_state mod_sum tc_gbl_env ifaces inst_ifaces = do    mod_warning <- liftErrMsg (moduleWarning dflags tcg_rdr_env tcg_warns)    let -    -- Warnings in this module and transitive warnings from dependend modules +    -- Warnings in this module and transitive warnings from dependent modules      warnings :: Map Name (Doc Name)      warnings = M.unions (decl_warnings : map ifaceWarningMap (M.elems ifaces)) diff --git a/haddock-api/src/Haddock/Interface/Json.hs b/haddock-api/src/Haddock/Interface/Json.hs index 92fb2e75..8b27a982 100644 --- a/haddock-api/src/Haddock/Interface/Json.hs +++ b/haddock-api/src/Haddock/Interface/Json.hs @@ -130,8 +130,10 @@ jsonDoc (DocUnorderedList xs) = jsonObject  jsonDoc (DocOrderedList xs) = jsonObject      [ ("tag", jsonString "DocOrderedList") -    , ("documents", jsonArray (fmap jsonDoc xs)) +    , ("items", jsonArray (fmap jsonItem xs))      ] +  where +    jsonItem (index, a) = jsonObject [("document", jsonDoc a), ("seq", jsonInt index)]  jsonDoc (DocDefList xys) = jsonObject      [ ("tag", jsonString "DocDefList") diff --git a/haddock-api/src/Haddock/Interface/LexParseRn.hs b/haddock-api/src/Haddock/Interface/LexParseRn.hs index f3b57792..4e1964af 100644 --- a/haddock-api/src/Haddock/Interface/LexParseRn.hs +++ b/haddock-api/src/Haddock/Interface/LexParseRn.hs @@ -90,6 +90,10 @@ processModuleHeader dflags pkgName gre safety mayStr = do    where      failure = (emptyHaddockModInfo, Nothing) +traverseSnd :: (Traversable t, Applicative f) => (a -> f b) -> t (x, a) -> f (t (x, b)) +traverseSnd f = traverse (\(x, a) -> +                             (\b -> (x, b)) <$> f a) +  -- | Takes a 'GlobalRdrEnv' which (hopefully) contains all the  -- definitions and a parsed comment and we attempt to make sense of  -- where the identifiers in the comment point to. We're in effect @@ -152,7 +156,7 @@ rename dflags gre = rn        DocBold doc -> DocBold <$> rn doc        DocMonospaced doc -> DocMonospaced <$> rn doc        DocUnorderedList docs -> DocUnorderedList <$> traverse rn docs -      DocOrderedList docs -> DocOrderedList <$> traverse rn docs +      DocOrderedList docs -> DocOrderedList <$> traverseSnd rn docs        DocDefList list -> DocDefList <$> traverse (\(a, b) -> (,) <$> rn a <*> rn b) list        DocCodeBlock doc -> DocCodeBlock <$> rn doc        DocIdentifierUnchecked x -> pure (DocIdentifierUnchecked x) @@ -173,7 +177,7 @@ rename dflags gre = rn  -- 'GlobalReaderEnv' during 'rename') in an appropriate doc. Currently  -- we simply monospace the identifier in most cases except when the  -- identifier is qualified: if the identifier is qualified then we can --- still try to guess and generate anchors accross modules but the +-- still try to guess and generate anchors across modules but the  -- users shouldn't rely on this doing the right thing. See tickets  -- #253 and #375 on the confusion this causes depending on which  -- default we pick in 'rename'. diff --git a/haddock-api/src/Haddock/InterfaceFile.hs b/haddock-api/src/Haddock/InterfaceFile.hs index db5181c6..d83578b1 100644 --- a/haddock-api/src/Haddock/InterfaceFile.hs +++ b/haddock-api/src/Haddock/InterfaceFile.hs @@ -1,5 +1,6 @@  {-# LANGUAGE CPP, RankNTypes, ScopedTypeVariables #-}  {-# LANGUAGE BangPatterns #-} +{-# LANGUAGE NamedFieldPuns #-}  {-# OPTIONS_GHC -fno-warn-orphans #-}  -----------------------------------------------------------------------------  -- | @@ -26,7 +27,9 @@ import Haddock.Types  import Data.IORef  import qualified Data.Map as Map  import Data.Map (Map) +import Data.Version  import Data.Word +import Text.ParserCombinators.ReadP (readP_to_S)  import GHC.Iface.Binary (getWithUserData, putSymbolTable)  import GHC.Utils.Binary @@ -37,11 +40,43 @@ import GHC.Types.Name.Cache  import GHC.Types.Unique.FM  import GHC.Types.Unique +import Haddock.Options (Visibility (..)) +  data InterfaceFile = InterfaceFile {    ifLinkEnv         :: LinkEnv, +  -- | Package meta data.  Currently it only consist of a package name, which +  -- is not read from the interface file, but inferred from its name. +  -- +  -- issue # +  ifPackageInfo     :: PackageInfo,    ifInstalledIfaces :: [InstalledInterface]  } +data PackageInfo = PackageInfo { +  piPackageName    :: PackageName, +  piPackageVersion :: Data.Version.Version +} + +ppPackageInfo :: PackageInfo -> String +ppPackageInfo (PackageInfo name version) | version == makeVersion [] +                                         = unpackFS (unPackageName name) +ppPackageInfo (PackageInfo name version) = unpackFS (unPackageName name) ++ "-" ++ showVersion version + +data PackageInterfaces = PackageInterfaces { +  piPackageInfo         :: PackageInfo, +  piVisibility          :: Visibility, +  piInstalledInterfaces :: [InstalledInterface] +} + +mkPackageInterfaces :: Visibility -> InterfaceFile -> PackageInterfaces +mkPackageInterfaces piVisibility +                    InterfaceFile { ifPackageInfo +                                  , ifInstalledIfaces +                                  } =  +  PackageInterfaces { piPackageInfo = ifPackageInfo +                    , piVisibility +                    , piInstalledInterfaces = ifInstalledIfaces +                    }  ifModule :: InterfaceFile -> Module  ifModule if_ = @@ -129,7 +164,7 @@ writeInterfaceFile filename iface = do    let bh = setUserData bh0 $ newWriteState (putName bin_symtab)                                             (putName bin_symtab)                                             (putFastString bin_dict) -  put_ bh iface +  putInterfaceFile_ bh iface    -- write the symtab pointer at the front of the file    symtab_p <- tellBin bh @@ -240,16 +275,48 @@ instance (Ord k, Binary k, Binary v) => Binary (Map k v) where    put_ bh m = put_ bh (Map.toList m)    get bh = fmap (Map.fromList) (get bh) +instance Binary PackageInfo where +  put_ bh PackageInfo { piPackageName, piPackageVersion } = do +    put_ bh (unPackageName piPackageName) +    put_ bh (showVersion piPackageVersion) +  get bh = do +    name <- PackageName <$> get bh +    versionString <- get bh +    let version = case readP_to_S parseVersion versionString of +          [] -> makeVersion [] +          vs -> fst (last vs) +    return $ PackageInfo name version  instance Binary InterfaceFile where -  put_ bh (InterfaceFile env ifaces) = do +  put_ bh (InterfaceFile env info ifaces) = do      put_ bh env +    put_ bh info      put_ bh ifaces    get bh = do      env    <- get bh +    info   <- get bh      ifaces <- get bh -    return (InterfaceFile env ifaces) +    return (InterfaceFile env info ifaces) + + +putInterfaceFile_ :: BinHandle -> InterfaceFile -> IO () +putInterfaceFile_ bh (InterfaceFile env info ifaces) = do +  put_ bh env +  put_ bh info +  put_ bh ifaces + +getInterfaceFile :: BinHandle -> Word16 -> IO InterfaceFile +getInterfaceFile bh v | v <= 38 = do +  env    <- get bh +  let info = PackageInfo (PackageName mempty) (makeVersion []) +  ifaces <- get bh +  return (InterfaceFile env info ifaces) +getInterfaceFile bh _ = do +  env    <- get bh +  info   <- get bh +  ifaces <- get bh +  return (InterfaceFile env info ifaces)  instance Binary InstalledInterface where diff --git a/haddock-api/src/Haddock/Options.hs b/haddock-api/src/Haddock/Options.hs index aa10b5b3..e9fd0c5d 100644 --- a/haddock-api/src/Haddock/Options.hs +++ b/haddock-api/src/Haddock/Options.hs @@ -12,52 +12,56 @@  --  -- Definition of the command line interface of Haddock.  ----------------------------------------------------------------------------- -module Haddock.Options ( -  parseHaddockOpts, -  Flag(..), -  getUsage, -  optTitle, -  outputDir, -  optContentsUrl, -  optIndexUrl, -  optCssFile, -  optSourceCssFile, -  sourceUrls, -  wikiUrls, -  baseUrl, -  optParCount, -  optDumpInterfaceFile, -  optShowInterfaceFile, -  optLaTeXStyle, -  optMathjax, -  qualification, -  sinceQualification, -  verbosity, -  ghcFlags, -  reexportFlags, -  readIfaceArgs, -  optPackageName, -  optPackageVersion, -  modulePackageInfo, -  ignoredSymbols -) where - - -import qualified Data.Char as Char -import           Data.Version +module Haddock.Options +  ( parseHaddockOpts +  , Flag(..) +  , Visibility(..) +  , getUsage +  , optTitle +  , outputDir +  , optContentsUrl +  , optIndexUrl +  , optCssFile +  , optSourceCssFile +  , sourceUrls +  , wikiUrls +  , baseUrl +  , optParCount +  , optDumpInterfaceFile +  , optShowInterfaceFile +  , optLaTeXStyle +  , optMathjax +  , qualification +  , sinceQualification +  , verbosity +  , ghcFlags +  , reexportFlags +  , readIfaceArgs +  , optPackageName +  , optPackageVersion +  , modulePackageInfo +  , ignoredSymbols +  ) where + +  import           Control.Applicative +import qualified Data.Char                     as Char +import           Data.Version +import           GHC                            ( Module +                                                , moduleUnit +                                                )  import           GHC.Data.FastString -import           GHC ( Module, moduleUnit )  import           GHC.Unit.State  import           Haddock.Types  import           Haddock.Utils  import           System.Console.GetOpt -import qualified Text.ParserCombinators.ReadP as RP +import qualified Text.ParserCombinators.ReadP  as RP  data Flag    = Flag_BuiltInThemes    | Flag_CSS String +  | Flag_Org  --  | Flag_DocBook    | Flag_ReadInterface String    | Flag_DumpInterface String @@ -119,119 +123,231 @@ data Flag  options :: Bool -> [OptDescr Flag]  options backwardsCompat = -  [ -    Option ['B']  []     (ReqArg Flag_GhcLibDir "DIR") -      "path to a GHC lib dir, to override the default path", -    Option ['o']  ["odir"]     (ReqArg Flag_OutputDir "DIR") -      "directory in which to put the output files", -    Option ['l']  ["lib"]         (ReqArg Flag_Lib "DIR") -      "location of Haddock's auxiliary files", -    Option ['i'] ["read-interface"] (ReqArg Flag_ReadInterface "FILE") -      "read an interface from FILE", -    Option ['D']  ["dump-interface"] (ReqArg Flag_DumpInterface "FILE") -      "write the resulting interface to FILE", -    Option []     ["show-interface"] (ReqArg Flag_ShowInterface "FILE") -      "print the interface in a human readable form", +  [ Option ['B'] +           [] +           (ReqArg Flag_GhcLibDir "DIR") +           "path to a GHC lib dir, to override the default path" +  , Option ['o'] +           ["odir"] +           (ReqArg Flag_OutputDir "DIR") +           "directory in which to put the output files" +  , Option ['l'] +           ["lib"] +           (ReqArg Flag_Lib "DIR") +           "location of Haddock's auxiliary files" +  , Option ['i'] +           ["read-interface"] +           (ReqArg Flag_ReadInterface "FILE") +           "read an interface from FILE" +  , Option ['D'] +           ["dump-interface"] +           (ReqArg Flag_DumpInterface "FILE") +           "write the resulting interface to FILE" +  , Option [] +           ["show-interface"] +           (ReqArg Flag_ShowInterface "FILE") +           "print the interface in a human readable form" +  ,  --    Option ['S']  ["docbook"]  (NoArg Flag_DocBook)  --  "output in DocBook XML", -    Option ['h']  ["html"]     (NoArg Flag_Html) -      "output in HTML (XHTML 1.0)", -    Option []  ["latex"]  (NoArg Flag_LaTeX) "use experimental LaTeX rendering", -    Option []  ["latex-style"]  (ReqArg Flag_LaTeXStyle "FILE") "provide your own LaTeX style in FILE", -    Option []  ["mathjax"]  (ReqArg Flag_Mathjax "URL") "URL FOR mathjax", -    Option ['U'] ["use-unicode"] (NoArg Flag_UseUnicode) "use Unicode in HTML output", -    Option []  ["hoogle"]     (NoArg Flag_Hoogle) -      "output for Hoogle; you may want --package-name and --package-version too", -    Option [] ["quickjump"] (NoArg Flag_QuickJumpIndex) -      "generate an index for interactive documentation navigation", -    Option [] ["hyperlinked-source"] (NoArg Flag_HyperlinkedSource) -      "generate highlighted and hyperlinked source code (for use with --html)", -    Option [] ["source-css"] (ReqArg Flag_SourceCss "FILE") -      "use custom CSS file instead of default one in hyperlinked source", -    Option []  ["source-base"]   (ReqArg Flag_SourceBaseURL "URL") -      "URL for a source code link on the contents\nand index pages", -    Option ['s'] (if backwardsCompat then ["source", "source-module"] else ["source-module"]) -      (ReqArg Flag_SourceModuleURL "URL") -      "URL for a source code link for each module\n(using the %{FILE} or %{MODULE} vars)", -    Option []  ["source-entity"]  (ReqArg Flag_SourceEntityURL "URL") -      "URL for a source code link for each entity\n(using the %{FILE}, %{MODULE}, %{NAME},\n%{KIND} or %{LINE} vars)", -    Option []  ["source-entity-line"] (ReqArg Flag_SourceLEntityURL "URL") -      "URL for a source code link for each entity.\nUsed if name links are unavailable, eg. for TH splices.", -    Option []  ["comments-base"]   (ReqArg Flag_WikiBaseURL "URL") -      "URL for a comments link on the contents\nand index pages", -    Option [] ["base-url"] (ReqArg Flag_BaseURL "URL") -      "Base URL for static assets (eg. css, javascript, json files etc.).\nWhen given statis assets will not be copied.", -    Option []  ["comments-module"]  (ReqArg Flag_WikiModuleURL "URL") -      "URL for a comments link for each module\n(using the %{MODULE} var)", -    Option []  ["comments-entity"]  (ReqArg Flag_WikiEntityURL "URL") -      "URL for a comments link for each entity\n(using the %{FILE}, %{MODULE}, %{NAME},\n%{KIND} or %{LINE} vars)", -    Option ['c']  ["css", "theme"] (ReqArg Flag_CSS "PATH") -      "the CSS file or theme directory to use for HTML output", -    Option []  ["built-in-themes"] (NoArg Flag_BuiltInThemes) -      "include all the built-in haddock themes", -    Option ['p']  ["prologue"] (ReqArg Flag_Prologue "FILE") -      "file containing prologue text", -    Option ['t']  ["title"]    (ReqArg Flag_Heading "TITLE") -      "page heading", -    Option ['q']  ["qual"] (ReqArg Flag_Qualification "QUAL") -      "qualification of names, one of \n'none' (default), 'full', 'local'\n'relative' or 'aliased'", -    Option ['?']  ["help"]  (NoArg Flag_Help) -      "display this help and exit", -    Option ['V']  ["version"]  (NoArg Flag_Version) -      "output version information and exit", -    Option []  ["compatible-interface-versions"]  (NoArg Flag_CompatibleInterfaceVersions) -      "output compatible interface file versions and exit", -    Option []  ["interface-version"]  (NoArg Flag_InterfaceVersion) -      "output interface file version and exit", -    Option []  ["bypass-interface-version-check"] (NoArg Flag_BypassInterfaceVersonCheck) -      "bypass the interface file version check (dangerous)", -    Option ['v']  ["verbosity"]  (ReqArg Flag_Verbosity "VERBOSITY") -      "set verbosity level", -    Option [] ["use-contents"] (ReqArg Flag_UseContents "URL") -      "use a separately-generated HTML contents page", -    Option [] ["gen-contents"] (NoArg Flag_GenContents) -      "generate an HTML contents from specified\ninterfaces", -    Option [] ["use-index"] (ReqArg Flag_UseIndex "URL") -      "use a separately-generated HTML index", -    Option [] ["gen-index"] (NoArg Flag_GenIndex) -      "generate an HTML index from specified\ninterfaces", -    Option [] ["ignore-all-exports"] (NoArg Flag_IgnoreAllExports) -      "behave as if all modules have the\nignore-exports attribute", -    Option [] ["hide"] (ReqArg Flag_HideModule "MODULE") -      "behave as if MODULE has the hide attribute", -    Option [] ["show"] (ReqArg Flag_ShowModule "MODULE") -      "behave as if MODULE does not have the hide attribute", -    Option [] ["show-all"] (NoArg Flag_ShowAllModules) -      "behave as if not modules have the hide attribute", -    Option [] ["show-extensions"] (ReqArg Flag_ShowExtensions "MODULE") -      "behave as if MODULE has the show-extensions attribute", -    Option [] ["optghc"] (ReqArg Flag_OptGhc "OPTION") -      "option to be forwarded to GHC", -    Option []  ["ghc-version"]  (NoArg Flag_GhcVersion) -      "output GHC version in numeric format", -    Option []  ["print-ghc-path"]  (NoArg Flag_PrintGhcPath) -      "output path to GHC binary", -    Option []  ["print-ghc-libdir"]  (NoArg Flag_PrintGhcLibDir) -      "output GHC lib dir", -    Option ['w'] ["no-warnings"] (NoArg Flag_NoWarnings) "turn off all warnings", -    Option [] ["no-tmp-comp-dir"] (NoArg Flag_NoTmpCompDir) -      "do not re-direct compilation output to a temporary directory", -    Option [] ["pretty-html"] (NoArg Flag_PrettyHtml) -      "generate html with newlines and indenting (for use with --html)", -    Option [] ["no-print-missing-docs"] (NoArg Flag_NoPrintMissingDocs) -      "don't print information about any undocumented entities", -    Option []  ["reexport"] (ReqArg Flag_Reexport "MOD") -      "reexport the module MOD, adding it to the index", -    Option [] ["package-name"] (ReqArg Flag_PackageName "NAME") -      "name of the package being documented", -    Option [] ["package-version"] (ReqArg Flag_PackageVersion "VERSION") -      "version of the package being documented in usual x.y.z.w format", -    Option []  ["since-qual"] (ReqArg Flag_SinceQualification "QUAL") -      "package qualification of @since, one of\n'always' (default) or 'only-external'", -    Option [] ["ignore-link-symbol"] (ReqArg Flag_IgnoreLinkSymbol "SYMBOL") -      "name of a symbol which does not trigger a warning in case of link issue", -    Option ['j'] [] (OptArg (\count -> Flag_ParCount (fmap read count)) "n") -      "load modules in parallel" +    Option ['h'] ["html"]  (NoArg Flag_Html)  "output in HTML (XHTML 1.0)" +  , Option ['O'] ["org"]   (NoArg Flag_Org)   "output in Org" +  , Option []    ["latex"] (NoArg Flag_LaTeX) "use experimental LaTeX rendering" +  , Option [] +           ["latex-style"] +           (ReqArg Flag_LaTeXStyle "FILE") +           "provide your own LaTeX style in FILE" +  , Option [] ["mathjax"] (ReqArg Flag_Mathjax "URL") "URL FOR mathjax" +  , Option ['U'] +           ["use-unicode"] +           (NoArg Flag_UseUnicode) +           "use Unicode in HTML output" +  , Option +    [] +    ["hoogle"] +    (NoArg Flag_Hoogle) +    "output for Hoogle; you may want --package-name and --package-version too" +  , Option [] +           ["quickjump"] +           (NoArg Flag_QuickJumpIndex) +           "generate an index for interactive documentation navigation" +  , Option +    [] +    ["hyperlinked-source"] +    (NoArg Flag_HyperlinkedSource) +    "generate highlighted and hyperlinked source code (for use with --html)" +  , Option [] +           ["source-css"] +           (ReqArg Flag_SourceCss "FILE") +           "use custom CSS file instead of default one in hyperlinked source" +  , Option [] +           ["source-base"] +           (ReqArg Flag_SourceBaseURL "URL") +           "URL for a source code link on the contents\nand index pages" +  , Option +    ['s'] +    (if backwardsCompat then ["source", "source-module"] else ["source-module"]) +    (ReqArg Flag_SourceModuleURL "URL") +    "URL for a source code link for each module\n(using the %{FILE} or %{MODULE} vars)" +  , Option +    [] +    ["source-entity"] +    (ReqArg Flag_SourceEntityURL "URL") +    "URL for a source code link for each entity\n(using the %{FILE}, %{MODULE}, %{NAME},\n%{KIND} or %{LINE} vars)" +  , Option +    [] +    ["source-entity-line"] +    (ReqArg Flag_SourceLEntityURL "URL") +    "URL for a source code link for each entity.\nUsed if name links are unavailable, eg. for TH splices." +  , Option [] +           ["comments-base"] +           (ReqArg Flag_WikiBaseURL "URL") +           "URL for a comments link on the contents\nand index pages" +  , Option +    [] +    ["base-url"] +    (ReqArg Flag_BaseURL "URL") +    "Base URL for static assets (eg. css, javascript, json files etc.).\nWhen given statis assets will not be copied." +  , Option +    [] +    ["comments-module"] +    (ReqArg Flag_WikiModuleURL "URL") +    "URL for a comments link for each module\n(using the %{MODULE} var)" +  , Option +    [] +    ["comments-entity"] +    (ReqArg Flag_WikiEntityURL "URL") +    "URL for a comments link for each entity\n(using the %{FILE}, %{MODULE}, %{NAME},\n%{KIND} or %{LINE} vars)" +  , Option ['c'] +           ["css", "theme"] +           (ReqArg Flag_CSS "PATH") +           "the CSS file or theme directory to use for HTML output" +  , Option [] +           ["built-in-themes"] +           (NoArg Flag_BuiltInThemes) +           "include all the built-in haddock themes" +  , Option ['p'] +           ["prologue"] +           (ReqArg Flag_Prologue "FILE") +           "file containing prologue text" +  , Option ['t'] ["title"] (ReqArg Flag_Heading "TITLE") "page heading" +  , Option +    ['q'] +    ["qual"] +    (ReqArg Flag_Qualification "QUAL") +    "qualification of names, one of \n'none' (default), 'full', 'local'\n'relative' or 'aliased'" +  , Option ['?'] ["help"] (NoArg Flag_Help) "display this help and exit" +  , Option ['V'] +           ["version"] +           (NoArg Flag_Version) +           "output version information and exit" +  , Option [] +           ["compatible-interface-versions"] +           (NoArg Flag_CompatibleInterfaceVersions) +           "output compatible interface file versions and exit" +  , Option [] +           ["interface-version"] +           (NoArg Flag_InterfaceVersion) +           "output interface file version and exit" +  , Option [] +           ["bypass-interface-version-check"] +           (NoArg Flag_BypassInterfaceVersonCheck) +           "bypass the interface file version check (dangerous)" +  , Option ['v'] +           ["verbosity"] +           (ReqArg Flag_Verbosity "VERBOSITY") +           "set verbosity level" +  , Option [] +           ["use-contents"] +           (ReqArg Flag_UseContents "URL") +           "use a separately-generated HTML contents page" +  , Option [] +           ["gen-contents"] +           (NoArg Flag_GenContents) +           "generate an HTML contents from specified\ninterfaces" +  , Option [] +           ["use-index"] +           (ReqArg Flag_UseIndex "URL") +           "use a separately-generated HTML index" +  , Option [] +           ["gen-index"] +           (NoArg Flag_GenIndex) +           "generate an HTML index from specified\ninterfaces" +  , Option [] +           ["ignore-all-exports"] +           (NoArg Flag_IgnoreAllExports) +           "behave as if all modules have the\nignore-exports attribute" +  , Option [] +           ["hide"] +           (ReqArg Flag_HideModule "MODULE") +           "behave as if MODULE has the hide attribute" +  , Option [] +           ["show"] +           (ReqArg Flag_ShowModule "MODULE") +           "behave as if MODULE does not have the hide attribute" +  , Option [] +           ["show-all"] +           (NoArg Flag_ShowAllModules) +           "behave as if not modules have the hide attribute" +  , Option [] +           ["show-extensions"] +           (ReqArg Flag_ShowExtensions "MODULE") +           "behave as if MODULE has the show-extensions attribute" +  , Option [] +           ["optghc"] +           (ReqArg Flag_OptGhc "OPTION") +           "option to be forwarded to GHC" +  , Option [] +           ["ghc-version"] +           (NoArg Flag_GhcVersion) +           "output GHC version in numeric format" +  , Option [] +           ["print-ghc-path"] +           (NoArg Flag_PrintGhcPath) +           "output path to GHC binary" +  , Option [] +           ["print-ghc-libdir"] +           (NoArg Flag_PrintGhcLibDir) +           "output GHC lib dir" +  , Option ['w'] ["no-warnings"] (NoArg Flag_NoWarnings) "turn off all warnings" +  , Option [] +           ["no-tmp-comp-dir"] +           (NoArg Flag_NoTmpCompDir) +           "do not re-direct compilation output to a temporary directory" +  , Option [] +           ["pretty-html"] +           (NoArg Flag_PrettyHtml) +           "generate html with newlines and indenting (for use with --html)" +  , Option [] +           ["no-print-missing-docs"] +           (NoArg Flag_NoPrintMissingDocs) +           "don't print information about any undocumented entities" +  , Option [] +           ["reexport"] +           (ReqArg Flag_Reexport "MOD") +           "reexport the module MOD, adding it to the index" +  , Option [] +           ["package-name"] +           (ReqArg Flag_PackageName "NAME") +           "name of the package being documented" +  , Option [] +           ["package-version"] +           (ReqArg Flag_PackageVersion "VERSION") +           "version of the package being documented in usual x.y.z.w format" +  , Option +    [] +    ["since-qual"] +    (ReqArg Flag_SinceQualification "QUAL") +    "package qualification of @since, one of\n'always' (default) or 'only-external'" +  , Option +    [] +    ["ignore-link-symbol"] +    (ReqArg Flag_IgnoreLinkSymbol "SYMBOL") +    "name of a symbol which does not trigger a warning in case of link issue" +  , Option ['j'] +           [] +           (OptArg (\count -> Flag_ParCount (fmap read count)) "n") +           "load modules in parallel"    ] @@ -239,23 +355,22 @@ getUsage :: IO String  getUsage = do    prog <- getProgramName    return $ usageInfo (usageHeader prog) (options False) -  where -    usageHeader :: String -> String -    usageHeader prog = "Usage: " ++ prog ++ " [OPTION...] file...\n" + where +  usageHeader :: String -> String +  usageHeader prog = "Usage: " ++ prog ++ " [OPTION...] file...\n"  parseHaddockOpts :: [String] -> IO ([Flag], [String]) -parseHaddockOpts params = -  case getOpt Permute (options True) params  of -    (flags, args, []) -> return (flags, args) -    (_, _, errors)    -> do -      usage <- getUsage -      throwE (concat errors ++ usage) +parseHaddockOpts params = case getOpt Permute (options True) params of +  (flags, args, []    ) -> return (flags, args) +  (_    , _   , errors) -> do +    usage <- getUsage +    throwE (concat errors ++ usage)  optPackageVersion :: [Flag] -> Maybe Data.Version.Version  optPackageVersion flags =    let ver = optLast [ v | Flag_PackageVersion v <- flags ] -  in ver >>= fmap fst . optLast . RP.readP_to_S parseVersion +  in  ver >>= fmap fst . optLast . RP.readP_to_S parseVersion  optPackageName :: [Flag] -> Maybe PackageName  optPackageName flags = @@ -263,17 +378,15 @@ optPackageName flags =  optTitle :: [Flag] -> Maybe String -optTitle flags = -  case [str | Flag_Heading str <- flags] of -    [] -> Nothing -    (t:_) -> Just t +optTitle flags = case [ str | Flag_Heading str <- flags ] of +  []      -> Nothing +  (t : _) -> Just t  outputDir :: [Flag] -> FilePath -outputDir flags = -  case [ path | Flag_OutputDir path <- flags ] of -    []    -> "." -    paths -> last paths +outputDir flags = case [ path | Flag_OutputDir path <- flags ] of +  []    -> "." +  paths -> last paths  optContentsUrl :: [Flag] -> Maybe String @@ -290,23 +403,26 @@ optCssFile flags = optLast [ str | Flag_CSS str <- flags ]  optSourceCssFile :: [Flag] -> Maybe FilePath  optSourceCssFile flags = optLast [ str | Flag_SourceCss str <- flags ] -sourceUrls :: [Flag] -> (Maybe String, Maybe String, Maybe String, Maybe String) +sourceUrls +  :: [Flag] -> (Maybe String, Maybe String, Maybe String, Maybe String)  sourceUrls flags = -  (optLast [str | Flag_SourceBaseURL    str <- flags] -  ,optLast [str | Flag_SourceModuleURL  str <- flags] -  ,optLast [str | Flag_SourceEntityURL  str <- flags] -  ,optLast [str | Flag_SourceLEntityURL str <- flags]) +  ( optLast [ str | Flag_SourceBaseURL str <- flags ] +  , optLast [ str | Flag_SourceModuleURL str <- flags ] +  , optLast [ str | Flag_SourceEntityURL str <- flags ] +  , optLast [ str | Flag_SourceLEntityURL str <- flags ] +  )  wikiUrls :: [Flag] -> (Maybe String, Maybe String, Maybe String)  wikiUrls flags = -  (optLast [str | Flag_WikiBaseURL   str <- flags] -  ,optLast [str | Flag_WikiModuleURL str <- flags] -  ,optLast [str | Flag_WikiEntityURL str <- flags]) +  ( optLast [ str | Flag_WikiBaseURL str <- flags ] +  , optLast [ str | Flag_WikiModuleURL str <- flags ] +  , optLast [ str | Flag_WikiEntityURL str <- flags ] +  )  baseUrl :: [Flag] -> Maybe String -baseUrl flags = optLast [str | Flag_BaseURL str <- flags] +baseUrl flags = optLast [ str | Flag_BaseURL str <- flags ]  optDumpInterfaceFile :: [Flag] -> Maybe FilePath  optDumpInterfaceFile flags = optLast [ str | Flag_DumpInterface str <- flags ] @@ -326,31 +442,30 @@ optParCount flags = optLast [ n | Flag_ParCount n <- flags ]  qualification :: [Flag] -> Either String QualOption  qualification flags =    case map (map Char.toLower) [ str | Flag_Qualification str <- flags ] of -      []             -> Right OptNoQual -      ["none"]       -> Right OptNoQual -      ["full"]       -> Right OptFullQual -      ["local"]      -> Right OptLocalQual -      ["relative"]   -> Right OptRelativeQual -      ["aliased"]    -> Right OptAliasedQual -      [arg]          -> Left $ "unknown qualification type " ++ show arg -      _:_            -> Left "qualification option given multiple times" +    []            -> Right OptNoQual +    [ "none"    ] -> Right OptNoQual +    [ "full"    ] -> Right OptFullQual +    [ "local"   ] -> Right OptLocalQual +    [ "relative"] -> Right OptRelativeQual +    [ "aliased" ] -> Right OptAliasedQual +    [ arg       ] -> Left $ "unknown qualification type " ++ show arg +    _ :         _ -> Left "qualification option given multiple times"  sinceQualification :: [Flag] -> Either String SinceQual  sinceQualification flags =    case map (map Char.toLower) [ str | Flag_SinceQualification str <- flags ] of -      []             -> Right Always -      ["always"]     -> Right Always -      ["external"]   -> Right External -      [arg]          -> Left $ "unknown since-qualification type " ++ show arg -      _:_            -> Left "since-qualification option given multiple times" +    []            -> Right Always +    [ "always"  ] -> Right Always +    [ "external"] -> Right External +    [ arg       ] -> Left $ "unknown since-qualification type " ++ show arg +    _ :         _ -> Left "since-qualification option given multiple times"  verbosity :: [Flag] -> Verbosity -verbosity flags = -  case [ str | Flag_Verbosity str <- flags ] of -    []  -> Normal -    x:_ -> case parseVerbosity x of -      Left e -> throwE e -      Right v -> v +verbosity flags = case [ str | Flag_Verbosity str <- flags ] of +  []    -> Normal +  x : _ -> case parseVerbosity x of +    Left  e -> throwE e +    Right v -> v  ignoredSymbols :: [Flag] -> [String]  ignoredSymbols flags = [ symbol | Flag_IgnoreLinkSymbol symbol <- flags ] @@ -361,18 +476,26 @@ ghcFlags flags = [ option | Flag_OptGhc option <- flags ]  reexportFlags :: [Flag] -> [String]  reexportFlags flags = [ option | Flag_Reexport option <- flags ] +data Visibility = Visible | Hidden +  deriving (Eq, Show) -readIfaceArgs :: [Flag] -> [(DocPaths, FilePath)] +readIfaceArgs :: [Flag] -> [(DocPaths, Visibility, FilePath)]  readIfaceArgs flags = [ parseIfaceOption s | Flag_ReadInterface s <- flags ] -  where -    parseIfaceOption :: String -> (DocPaths, FilePath) -    parseIfaceOption str = -      case break (==',') str of -        (fpath, ',':rest) -> -          case break (==',') rest of -            (src, ',':file) -> ((fpath, Just src), file) -            (file, _) -> ((fpath, Nothing), file) -        (file, _) -> (("", Nothing), file) + where +  parseIfaceOption :: String -> (DocPaths, Visibility, FilePath) +  parseIfaceOption str = case break (== ',') str of +    (fpath, ',' : rest) -> case break (== ',') rest of +      (src, ',' : rest') -> +        let src' = case src of +              "" -> Nothing +              _  -> Just src +        in  case break (== ',') rest' of +              (visibility, ',' : file) +                | visibility == "hidden" -> ((fpath, src'), Hidden, file) +                | otherwise              -> ((fpath, src'), Visible, file) +              (file, _) -> ((fpath, src'), Visible, file) +      (file, _) -> ((fpath, Nothing), Visible, file) +    (file, _) -> (("", Nothing), Visible, file)  -- | Like 'listToMaybe' but returns the last element instead of the first. @@ -387,16 +510,16 @@ optLast xs = Just (last xs)  --  -- The @--package-name@ and @--package-version@ Haddock flags allow the user to  -- specify this information manually and it is returned here if present. -modulePackageInfo :: UnitState -                  -> [Flag] -- ^ Haddock flags are checked as they may contain +modulePackageInfo +  :: UnitState +  -> [Flag] -- ^ Haddock flags are checked as they may contain                              -- the package name or version provided by the user                              -- which we prioritise -                  -> Maybe Module -                  -> (Maybe PackageName, Maybe Data.Version.Version) +  -> Maybe Module +  -> (Maybe PackageName, Maybe Data.Version.Version)  modulePackageInfo _unit_state _flags Nothing = (Nothing, Nothing)  modulePackageInfo unit_state flags (Just modu) = -  ( optPackageName flags    <|> fmap unitPackageName pkgDb +  ( optPackageName flags <|> fmap unitPackageName pkgDb    , optPackageVersion flags <|> fmap unitPackageVersion pkgDb    ) -  where -    pkgDb = lookupUnit unit_state (moduleUnit modu) +  where pkgDb = lookupUnit unit_state (moduleUnit modu) diff --git a/haddock-api/src/Haddock/Parser.hs b/haddock-api/src/Haddock/Parser.hs index 53cf98ad..850fdf7f 100644 --- a/haddock-api/src/Haddock/Parser.hs +++ b/haddock-api/src/Haddock/Parser.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE ViewPatterns #-}  -- |  -- Module      :  Haddock.Parser  -- Copyright   :  (c) Mateusz Kowalczyk 2013, diff --git a/haddock-api/src/Haddock/Types.hs b/haddock-api/src/Haddock/Types.hs index 7d00c5ec..e30d2ce7 100644 --- a/haddock-api/src/Haddock/Types.hs +++ b/haddock-api/src/Haddock/Types.hs @@ -151,7 +151,7 @@ data Interface = Interface      -- | Warnings for things defined in this module.    , ifaceWarningMap :: !WarningMap -    -- | Tokenized source code of module (avaliable if Haddock is invoked with +    -- | Tokenized source code of module (available if Haddock is invoked with      -- source generation flag).    , ifaceHieFile :: !(Maybe FilePath)    , ifaceDynFlags :: !DynFlags diff --git a/haddock-api/src/Haddock/Utils/Json.hs b/haddock-api/src/Haddock/Utils/Json.hs index d5d5ae02..6bcd38fa 100644 --- a/haddock-api/src/Haddock/Utils/Json.hs +++ b/haddock-api/src/Haddock/Utils/Json.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE ExplicitForAll    #-}  {-# LANGUAGE OverloadedStrings #-}  {-# LANGUAGE RankNTypes        #-} diff --git a/haddock-api/src/Haddock/Version.hs b/haddock-api/src/Haddock/Version.hs index 4e9a581a..b2eb7031 100644 --- a/haddock-api/src/Haddock/Version.hs +++ b/haddock-api/src/Haddock/Version.hs @@ -16,7 +16,7 @@ module Haddock.Version (  #ifdef IN_GHC_TREE  import Paths_haddock ( version )  #else -import Paths_haddock_api ( version ) +import Paths_haddorg_api ( version )  #endif  import Data.Version  ( showVersion ) | 
