diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..29ebfa5 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + 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. + + + Copyright (C) + + 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 . + +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 +. \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..6502dc6 --- /dev/null +++ b/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "simple-mind-map", + "name": "Simple mind map", + "version": "0.1.8", + "minAppVersion": "1.8.3", + "description": "A relatively powerful mind map.", + "author": "wanglin", + "authorUrl": "https://github.com/wanglin2", + "isDesktopOnly": false +} diff --git a/src/.babelrc b/src/.babelrc new file mode 100644 index 0000000..e8d5849 --- /dev/null +++ b/src/.babelrc @@ -0,0 +1,12 @@ +{ + "presets": [["@babel/preset-env"]], + "plugins": [ + [ + "component", + { + "libraryName": "element-ui", + "styleLibraryName": "theme-chalk" + } + ] + ] +} diff --git a/src/.env.library b/src/.env.library new file mode 100644 index 0000000..886c19c --- /dev/null +++ b/src/.env.library @@ -0,0 +1 @@ +NODE_ENV=library \ No newline at end of file diff --git a/src/.prettierignore b/src/.prettierignore new file mode 100644 index 0000000..6c7a9a3 --- /dev/null +++ b/src/.prettierignore @@ -0,0 +1,11 @@ +src/assets +*/.DS_Store +node_modules +public +*.json +*.md +.eslintrc.js +.prettierignore +.prettierrc +package-lock.json +package.json \ No newline at end of file diff --git a/src/.prettierrc b/src/.prettierrc new file mode 100644 index 0000000..ef93d94 --- /dev/null +++ b/src/.prettierrc @@ -0,0 +1,5 @@ +semi: false +singleQuote: true +printWidth: 80 +trailingComma: 'none' +arrowParens: 'avoid' diff --git a/src/SmmEditView.js b/src/SmmEditView.js new file mode 100644 index 0000000..f52465b --- /dev/null +++ b/src/SmmEditView.js @@ -0,0 +1,872 @@ +import { Notice, TextFileView, TFile, setIcon, Platform } from 'obsidian' +import { + SMM_VIEW_TYPE, + SAVE_ICON, + IMPORT_ICON, + EXPORT_ICON, + SMM_TAG, + OUTLINE_ICON, + MINDMAP_ICON, + PRINT_ICON, + getSmmEditViewCount +} from './ob/constant.js' +import { initApp } from './src/main.js' +import { + assembleMarkdownText, + parseMarkdownText, + createDefaultText +} from './ob/metadataAndMarkdown.js' +import { + hideTargetMenu, + smmFilePathToFileName, + formatFileName +} from './ob/utils.js' +import LZString from 'lz-string' +import { base64ToFile } from './src/utils' +import ModifyFileName from './ob/ModifyFileName.js' + +class SmmEditView extends TextFileView { + constructor(leaf, plugin) { + super(leaf) + this.plugin = plugin + this.contentEl.style.padding = 0 + this.warpEl = this.contentEl.createDiv('smmMindmapEditContainer') + this.warpEl.classList.add('smm-common-full-size') + this.mindMapData = '' + this.parsedMindMapData = null + this.mindMapAPP = null + + this.isActive = true + this.resizeObserver = null + this.isUnSave = false + this.isOuterChange = false + this.isNotTriggerDataChange = false + this.isHidden = false + this.needResize = false + this.isOutlineEditMode = false + this.saveButton = null + this.exportButton = null + this.importButton = null + this.printOutlineButton = null + this.changeToOutlineButton = null + this.changeToMindmapButton = null + this.savingTipEl = null + this.isReadonlyMode = false + this.toggleReadonlyButton = null + this.modifyFileName = new ModifyFileName(this) + this.popScope = null + this.id = getSmmEditViewCount() + } + + getViewType() { + return SMM_VIEW_TYPE + } + + getIcon() { + return 'smm-icon' + } + + onPaneMenu(menu, source) { + super.onPaneMenu(menu, source) + hideTargetMenu(menu, '在新窗口中打开') + hideTargetMenu(menu, '移动至新窗口') + } + + async switchToMarkdownView() { + if (!this.file || !this.leaf) return + const mdViewType = this.app.viewRegistry.getTypeByExtension('md') + await this.leaf.setViewState({ + type: mdViewType, + state: { + ...this.leaf.getViewState().state, + isSwitchToMarkdownViewFromSmmView: true + }, + popstate: true + }) + } + + async onOpen() { + this.registerEvent( + this.app.vault.on('modify', this._handleExternalChange.bind(this)) + ) + // 注册激活状态监听 + this.registerEvent( + this.app.workspace.on( + 'active-leaf-change', + this._handleActiveChange.bind(this) + ) + ) + this.registerEvent( + this.app.workspace.on('resize', this._handleResize.bind(this)) + ) + + this._addActionBtns() + + this._initThemeMode() + + this.modifyFileName.setupTitleEditing() + this._registerHotkeyOverrides() + } + + getViewData() { + return this.mindMapData + } + + async setViewData(data, isClear) { + if (this.isHidden) { + return + } + if (isClear) { + this.clear() + } + let rawData = data.trim() + try { + if (!rawData) { + throw new Error(this.plugin._t('tip.fileIsEmpty')) + } else { + this.parsedMindMapData = parseMarkdownText(rawData) + const content = this.parsedMindMapData.metadata.content + if (content) { + let passedContent = '' + try { + const json = JSON.parse(content) + if (json && json.root) { + passedContent = content + } + } catch (error) {} + if (!passedContent) { + this.parsedMindMapData.metadata.content = LZString.decompressFromBase64( + content + ) + } + } else { + throw new Error('文件格式错误') + } + } + } catch (error) { + rawData = createDefaultText( + '', + this.plugin._getCreateDefaultMindMapOptions() + ) + } + this.mindMapData = rawData + if (!this.parsedMindMapData) { + this.parsedMindMapData = parseMarkdownText(rawData) + this.parsedMindMapData.metadata.content = LZString.decompressFromBase64( + this.parsedMindMapData.metadata.content + ) + } + if (isClear) { + this._renderMindMap() + } else if (this.mindMapAPP) { + this.isNotTriggerDataChange = true + this.mindMapAPP.$bus.$emit( + 'updateMindMapDataFromOb', + this.parsedMindMapData.metadata.content + ) + } + } + + _clearObserver() { + if (this.resizeObserver) { + this.resizeObserver.disconnect() + this.resizeObserver = null + } + } + + _renderMindMap() { + this.warpEl.empty() + const el = this.warpEl.createDiv('smmMindMapEdit') + el.classList.add('smm-common-full-size') + this._clearObserver() + this.resizeObserver = new ResizeObserver(entries => { + for (const entry of entries) { + const { width, height } = entry.contentRect + if (width > 10 && height > 10) { + this._initializeMindMap(el) + this._clearObserver() + break + } + } + }) + this.resizeObserver.observe(el) + } + + _initializeMindMap(el) { + if (this.mindMapAPP) return + const filePath = this.file?.path + let initLocationNodeId = '' + const { fileToSubpathMap } = this.plugin + if (fileToSubpathMap && fileToSubpathMap[filePath]) { + initLocationNodeId = fileToSubpathMap[filePath] + delete fileToSubpathMap[filePath] + } + this.mindMapAPP = initApp(el, { + getInitMindMapData: () => { + return this.parsedMindMapData.metadata.content + }, + getInitLocationNodeId: () => { + return initLocationNodeId + }, + getMindMapCurrentData: (content, linkData, textData) => { + this.parsedMindMapData.metadata.content = content + const { + metadata, + svgdata, + svgdataUpdateAt, + linkdata + } = this.parsedMindMapData + this.mindMapData = assembleMarkdownText({ + metadata: { + path: `${this.file?.path}`, + tags: Array.from(new Set([SMM_TAG, ...metadata.tags])), + content: LZString.compressToBase64(content), + yaml: metadata.yaml + }, + svgdata, + svgdataUpdateAt, + linkdata: linkData || linkdata || [], + textdata: textData || [] + }) + }, + saveMindMapData: async (_, svgData) => { + try { + this._showSavingTip() + const { embedImageIsSeparateFile } = this.plugin.settings + if (svgData) { + if (embedImageIsSeparateFile) { + const res = await this._getFileSvgData(svgData) + if (res) { + this.parsedMindMapData.svgdata = `![[${res}]]` + this.parsedMindMapData.svgdataUpdateAt = moment().format( + 'YYYY-MM-DD HH:mm:ss' + ) + } else { + new Notice(this.plugin._t('tip.imgCreateFail')) + } + } else { + this.parsedMindMapData.svgdata = LZString.compressToBase64( + svgData + ) + } + } + this.forceSave() + } catch (error) {} + }, + getMindMapConfig: () => { + return this.plugin.settings.mindMapConfig || {} + }, + saveMindMapConfig: newConfig => { + this.plugin.settings.mindMapConfig = newConfig + this.plugin._saveSettings() + }, + getMindMapLocalConfig: () => { + const { mindMapLocalConfig, themeMode } = this.plugin.settings + const config = mindMapLocalConfig || {} + config.isDark = + themeMode === 'follow' + ? this.plugin._getObIsDark() + : themeMode === 'dark' + return config + }, + saveMindMapLocalConfig: newConfig => { + this.plugin.settings.mindMapLocalConfig = newConfig + this.plugin._saveSettings() + }, + getSettings: () => { + return this.plugin.settings || {} + }, + updateSettings: data => { + this.plugin.settings = { + ...this.plugin.settings, + ...data + } + this.plugin._saveSettings() + }, + getObAllFiles: (extraSelf = true) => { + const fileList = this.app.vault.getFiles() + if (extraSelf && this.file) { + return fileList.filter(item => { + return item.path !== this.file.path + }) + } + return fileList + }, + createLinkInfoFromFilePath: (filePath, subpath = '', alias = '') => { + const file = this.tryGetFileByPath(filePath) + if (!file) { + return null + } + const linkText = this.app.fileManager.generateMarkdownLink( + file, + this.file?.path || '', + subpath, + alias + ) + return { + link: file.path, + linkText + } + }, + openFile: (filePath, isNewTab = false, createOnNoExist = false) => { + if (!filePath) return + const arr = filePath.split(/(#|^|\|)/) + filePath = arr[0] + let postfix = '' + if (arr.length > 1 && arr[1] !== '|') { + postfix = arr.slice(1).join('') + } + const file = this.tryGetFileByPath(filePath) + if (file && file instanceof TFile) { + this.app.workspace.openLinkText( + file.path + postfix, + this.file?.path || '', + isNewTab + ) + } else if (createOnNoExist) { + this.app.workspace.openLinkText( + /\.md$/.test(filePath) ? filePath : filePath + '.md', + this.file?.path || '', + isNewTab + ) + } + }, + openWebLink: url => { + if (this.app.openExternal) { + this.app.openExternal(url) + return + } + try { + if (window.require) { + const { shell } = window.require('electron') + shell.openExternal(url) + return + } + } catch (e) {} + window.open(url, '_blank', 'noopener,noreferrer') + }, + saveFileToVault: async (...args) => { + const res = await this.saveFileToVault(...args) + return res + }, + getResourcePath: vaultPath => { + return this.app.vault.adapter.getResourcePath(vaultPath) + }, + getObInternalLink: (...args) => { + return this.app.fileManager.generateMarkdownLink(this.file, '', ...args) + }, + showTip: tip => { + new Notice(tip) + }, + getFileFromUri: uri => { + const params = new URLSearchParams(uri.split('?')[1]) + const vault = decodeURIComponent(params.get('vault') || '') + const filePath = decodeURIComponent(params.get('file') || '') + if (!vault || !filePath) return null + if (this.app.vault.getName() !== vault) { + new Notice(this.plugin._t('tip.onlyEnableSelectCurrentVaultFile')) + return null + } + return this.tryGetFileByPath(filePath) + }, + isMobile: () => { + return Platform.isMobile + }, + getObsidianApp: () => { + return this.app + }, + getFormatFileName: (str, ignores = []) => { + return formatFileName(str, { + notename: this.file?.basename.split('.')[0], + ignores + }) + } + }) + setTimeout(() => { + this._listenMindMapEvent() + }, 100) + } + + tryGetFileByPath(filePath) { + let res = this.app.vault.getFileByPath(filePath) + if (!res) { + res = this.app.vault.getFileByPath(filePath + '.md') + } + if (!res) { + res = this.app.metadataCache.getFirstLinkpathDest( + filePath, + this.file?.path + ) + } + return res + } + + async _getFileSvgData(svgData) { + const targetFileName = smmFilePathToFileName(this.file?.path, '.svg') + const { embedImageIsSeparateFileFolder } = this.plugin.settings + const originSvgData = this.parsedMindMapData.svgdata + if (originSvgData && /^!\[\[/.test(originSvgData)) { + const match = originSvgData.match(/!\[\[([^\]]+)\]\]/) + if (match && match[1]) { + const filePath = match[1] + const fileName = filePath.split('/').pop() + if (fileName !== targetFileName) { + const exist = await this.app.vault.exists(filePath) + if (exist) { + await this.app.vault.adapter.remove(filePath) + } + } + } + } + svgData = base64ToFile(svgData, targetFileName) + const res = await this.saveFileToVault( + svgData, + true, + embedImageIsSeparateFileFolder, + true + ) + return res + } + + async saveFileToVault(file, isImg = true, targetFolder = '', cover = false) { + try { + let folder = targetFolder || '' + if (!folder) { + folder = isImg + ? this._getFileSavePath('imagePathType', 'imagePath', 'imageSubPath') + : this._getFileSavePath( + 'attachmentPathType', + 'attachmentPath', + 'attachmentSubPath' + ) + } + await this.plugin._ensureDirectoryExists(folder) + let fileName = file.name + let fileExist = false + if (!cover) { + let counter = 1 + while ( + this.app.vault.getFileByPath( + folder ? `${folder}/${fileName}` : fileName + ) + ) { + const parts = file.name.split('.') + const ext = parts.pop() + fileName = `${parts.join('.')}_${counter}.${ext}` + counter++ + } + } else { + fileExist = await this.app.vault.adapter.exists( + folder ? `${folder}/${fileName}` : fileName + ) + } + // 读取文件内容 + const arrayBuffer = await file.arrayBuffer() + // 在vault中创建路径 + const vaultPath = folder ? `${folder}/${fileName}` : fileName + // 写入文件 + if (fileExist) { + await app.vault.adapter.writeBinary(vaultPath, arrayBuffer) + } else { + await this.app.vault.createBinary(vaultPath, arrayBuffer) + } + return vaultPath + } catch (error) { + return null + } + } + + jumpToNodeByUid(uid) { + if (!this.mindMapAPP) { + return + } + this.mindMapAPP.$bus.$emit('jumpToNodeByUid', uid) + } + + async save(ignoreActiveCheck = false) { + if (!ignoreActiveCheck && !this.isActive) { + return + } + if (this.app.noSaveOnClose) return + const t = Date.now() + if (this.mindMapAPP) { + this.mindMapAPP.$bus.$emit('getMindMapCurrentData') + this.mindMapAPP.$bus.$emit('clearAutoSave') + } + if (!this.mindMapData) { + return + } + await super.save() + this._setIsUnSave(false) + this._hideSavingTip() + } + + forceSave(ignoreActiveCheck = false) { + this._showSavingTip() + this.save(ignoreActiveCheck) + } + + forceSaveAndUpdateImage() { + this._showSavingTip() + this.mindMapAPP.$bus.$emit('saveToLocal', true, true) + } + + _listenMindMapEvent() { + this._onDataChange = this._onDataChange.bind(this) + this.mindMapAPP.$bus.$on('data_change', this._onDataChange) + } + + _onDataChange() { + if (this.isNotTriggerDataChange) { + this.isNotTriggerDataChange = false + return + } + this._setIsUnSave(true) + } + + _handleResize() { + if (!this.mindMapAPP || this.needResize) { + return + } + if (this.isHidden) { + this.needResize = true + return + } + try { + if (this.mindMapAPP.$updateMindMapSize) { + const { width, height } = this.warpEl.getBoundingClientRect() + if (width > 0 && height > 0) { + this.mindMapAPP.$updateMindMapSize() + } + } + } catch (e) {} + } + + async _handleActiveChange(leaf) { + const nowActive = leaf?.view === this + if (nowActive && !this.isActive) { + this._registerHotkeyOverrides() + this.isActive = true + if (this.mindMapAPP) { + if (this.isHidden) { + this.isHidden = false + this._checkForExternalChanges() + } + // 更新尺寸 + if (this.needResize) { + this.needResize = false + this._handleResize() + } + if (this.isOuterChange) { + this.isOuterChange = false + } + } + } else if (!nowActive && this.isActive) { + this._clearPopScope() + const rect = this.warpEl.getBoundingClientRect() + this.isHidden = rect.width === 0 || rect.height === 0 + if (this.mindMapAPP) { + this.mindMapAPP.$bus.$emit('obTabDeactivate') + this.save() + this.mindMapAPP.$clearUpdateMindMapSize() + } + this.isActive = false + } + } + + async _handleExternalChange(file) { + if (this.isActive) return + if (file.path === this.file?.path) { + this.isOuterChange = true + } + } + + async _checkForExternalChanges() { + if (!this.file) return + try { + const data = await this.app.vault.read(this.file) + await this.setViewData(data, false) + } catch (e) {} + } + + clear() { + this._clearObserver() + if (this.mindMapAPP) { + try { + this.mindMapAPP.$destroy() + } catch (e) {} + this.mindMapAPP = null + } + this.warpEl.empty() + this.mindMapData = '' + this.parsedMindMapData = null + this.isUnSave = false + this.isOuterChange = false + this.isNotTriggerDataChange = false + this.isHidden = false + this.needResize = false + this._resetOnOutlineEditMode() + } + + async onClose() { + this._clearPopScope() + this.modifyFileName.unload() + await this.save() + this.clear() + this.saveButton = null + this.exportButton = null + this.importButton = null + this.printOutlineButton = null + this.changeToOutlineButton = null + this.changeToMindmapButton = null + this.toggleReadonlyButton = null + } + + _addActionBtns() { + const viewActions = this.headerEl.querySelector('.view-actions') + + this.toggleReadonlyButton = this._createActionBtn( + this.plugin._t('action.changeToReadonly'), + 'book-open', + viewActions, + async () => { + await this.save() + if (this.isReadonlyMode) { + this.isReadonlyMode = false + this.mindMapAPP.$bus.$emit('toggleReadonly', false) + setIcon(this.toggleReadonlyButton, 'book-open') + this.toggleReadonlyButton.setAttribute( + 'aria-label', + this.plugin._t('action.changeToReadonly') + ) + this._showButtons([ + this.saveButton, + this.importButton, + this.exportButton + ]) + } else { + this.isReadonlyMode = true + this.mindMapAPP.$bus.$emit('toggleReadonly', true) + setIcon(this.toggleReadonlyButton, 'edit-3') + this.toggleReadonlyButton.setAttribute( + 'aria-label', + this.plugin._t('action.changeToEdit') + ) + this._hideButtons([ + this.saveButton, + this.importButton, + this.exportButton + ]) + } + }, + true + ) + + this.changeToOutlineButton = this._createActionBtn( + this.plugin._t('action.changeToOutline'), + OUTLINE_ICON, + viewActions, + async () => { + await this.save() + this._hideButtons([this.exportButton, this.changeToOutlineButton]) + this._showButtons([this.printOutlineButton, this.changeToMindmapButton]) + // 保存按钮文案修改 + this.saveButton.setAttribute('aria-label', '保存') + this.mindMapAPP.$bus.$emit('showOutlineEdit') + this.isOutlineEditMode = true + } + ) + + this.changeToMindmapButton = this._createActionBtn( + this.plugin._t('action.changeToMindMap'), + MINDMAP_ICON, + viewActions, + async () => { + await this.save() + this.mindMapAPP.$bus.$emit('hideOutlineEdit') + this._resetOnOutlineEditMode() + } + ) + this._hideButtons([this.changeToMindmapButton]) + + this.printOutlineButton = this._createActionBtn( + this.plugin._t('action.printOutline'), + PRINT_ICON, + viewActions, + async () => { + this.mindMapAPP.$bus.$emit('printOutline') + } + ) + this._hideButtons([this.printOutlineButton]) + + this.importButton = this._createActionBtn( + this.plugin._t('action.import'), + IMPORT_ICON, + viewActions, + () => { + this.mindMapAPP.$bus.$emit('showImport') + } + ) + + if (!Platform.isMobile) { + this.exportButton = this._createActionBtn( + this.plugin._t('action.export'), + EXPORT_ICON, + viewActions, + () => { + this.mindMapAPP.$bus.$emit('showExport') + } + ) + } + + // 保存并更新图像数据 + this.saveButton = this._createActionBtn( + this.plugin._t('action.saveAndUpdateImage'), + SAVE_ICON, + viewActions, + () => { + this.forceSaveAndUpdateImage() + } + ) + this.saveButton.classList.add('smm-save-button-default') + + this.savingTipEl = this.headerEl.createEl('div', { + cls: 'smm-save-tip' + }) + viewActions.insertBefore(this.savingTipEl, viewActions.firstChild) + } + + _showSavingTip() { + if (!this.savingTipEl) return + this.savingTipEl.innerText = this.plugin._t('tip.saving') + } + + _hideSavingTip() { + if (!this.savingTipEl) return + this.savingTipEl.innerText = '' + } + + _createActionBtn(label, icon, parentEl, onClick, isObIcon = false) { + const el = this.headerEl.createEl('button', { + cls: 'clickable-icon' + }) + el.setAttribute('aria-label', label) + if (isObIcon) { + setIcon(el, icon, 24) + } else { + el.innerHTML = icon + } + parentEl.insertBefore(el, parentEl.firstChild) + el.addEventListener('click', onClick) + return el + } + + _resetOnOutlineEditMode() { + if (this.isOutlineEditMode) { + this.saveButton.setAttribute( + 'aria-label', + this.plugin._t('action.saveAndUpdateImage') + ) + this._showButtons([this.exportButton, this.changeToOutlineButton]) + this._hideButtons([this.changeToMindmapButton, this.printOutlineButton]) + this.isOutlineEditMode = false + } + } + + _showButtons(list) { + list.forEach(el => { + if (!el) return + el.classList.remove('smm-common-hide') + el.classList.add('smm-common-flex') + }) + } + + _hideButtons(list) { + list.forEach(el => { + if (!el) return + el.classList.remove('smm-common-flex') + el.classList.add('smm-common-hide') + }) + } + + _setIsUnSave(isUnSave) { + this.isUnSave = isUnSave + if (isUnSave) { + this.saveButton.classList.remove('smm-save-button-default') + this.saveButton.classList.add('smm-save-button-un-save') + } else { + this.saveButton.classList.remove('smm-save-button-un-save') + this.saveButton.classList.add('smm-save-button-default') + } + } + + _initThemeMode() { + this._updateThemeMode() + + this.registerEvent( + this.app.workspace.on('css-change', () => { + this._updateThemeMode() + }) + ) + } + + _updateThemeMode() { + if (this.plugin.settings.themeMode === 'follow') { + const isDarkMode = this.plugin._getObIsDark() + if (this.mindMapAPP) { + this.mindMapAPP.$bus.$emit('setIsDark', isDarkMode) + } + } + } + + _getFileSavePath(typeKey, pathKey, subPathKey) { + const type = this.plugin.settings[typeKey] + const folder = this.plugin.settings[pathKey] || '' + const subFolder = this.plugin.settings[subPathKey] || '' + switch (type) { + case 'root': + return '' + case 'custom': + return folder + case 'currentFileFolder': + return this.plugin._getActiveFileDirectory() + case 'currentFileFolderSubFolder': + const activeFileDirectory = this.plugin._getActiveFileDirectory() + return [activeFileDirectory, subFolder].filter(Boolean).join('/') + default: + return '' + } + } + + _clearPopScope() { + if (this.popScope) { + this.popScope() + this.popScope = null + } + } + + _registerHotkeyOverrides() { + this._clearPopScope() + const scope = this.app.keymap.getRootScope() + const ctrlFHandler = scope.register(['Mod'], 'f', evt => { + evt.preventDefault() + return true + }) + const ctrlSHandler = scope.register(['Mod'], 's', evt => { + evt.preventDefault() + const view = this.plugin._getActiveSmmView() + if (view) { + view.forceSave() + } + return true + }) + scope.keys.unshift(scope.keys.pop()) + scope.keys.unshift(scope.keys.pop()) + this.popScope = () => { + scope.unregister(ctrlFHandler) + scope.unregister(ctrlSHandler) + } + } +} + +export default SmmEditView diff --git a/src/locales/en.json b/src/locales/en.json new file mode 100644 index 0000000..779bf57 --- /dev/null +++ b/src/locales/en.json @@ -0,0 +1,186 @@ +{ + "common": { + "mindMap": "Mind map", + "rootNodeDefaultText": "Root node", + "secondNodeDefaultText": "Secondary node", + "branchNodeDefaultText": "Branch topic" + }, + "action": { + "createMindMap": "Create new mind map", + "createMindMapInsertToMd": "Create new mind map and insert into current document", + "openAsMd": "Open as markdown document", + "openAsMindMap": "Open as mind map document", + "changeToOutline": "Switch to outline mode", + "changeToMindMap": "Switch to mind map mode", + "printOutline": "Print outline", + "import": "Import", + "export": "Export", + "insertCodeBlockToMd": "Insert mind map code block into current document", + "previewAsMindMap": "Preview as mind map", + "changeToReadonly": "Change to readonly mode", + "changeToEdit": "Change to edit mode", + "changeToMdFile": "Convert to markdown document", + "changeToMindMapFile": "Convert to mind map document" + }, + "tip": { + "tip": "Tip", + "confirm": "Confirm", + "cancel": "Cancel", + "close": "Close", + "fileExist": "File already exists", + "createMindMapFail": "Failed to create mind map", + "fileIsNotMd": "Current file is not a markdown document", + "fileIsEmpty": "File content is empty", + "fileFormatError": "File format error", + "onlyEnableSelectCurrentVaultFile": "Only files from the current vault can be added", + "saving": "Saving...", + "integerInputError": "Please enter a number greater than 0", + "noPreviewImage": "No preview image available", + "insertFail": "Insertion failed", + "noMatchResult": "No matching results", + "fileDeleted": "File has been deleted", + "noPreviewImageInFile": "No preview image in file", + "pluginNewVersion": "A new version of the plugin is available:", + "pluginNoNewVersion": "The current version is already the latest version", + "pluginVersionCheckError": "Check failed", + "changeSuccess": "Change completed", + "mdToMindMapFail": "Conversion failed, unable to parse data that can be converted into a mind map", + "imgCreateFail": "Image file creation failed", + "mdModifyTip": "Do not modify any information except YAML", + "fileNameEmpty": "The file name cannot be empty", + "fileNameIllegal": "The file name contains illegal characters", + "fileRenameFail": "File renaming failed", + "mindMapToMdTip": "After converting to a Markdown document, only some content will be retained, such as node text, summary text, notes, etc. Other content will be discarded and cannot be recovered. Please make a backup first.", + "mdToMindMapTip": "Only supports converting syntax such as titles and lists into mind maps. Other content will be discarded and cannot be recovered. Please make a backup first." + }, + "setting": { + "title": { + "title1": "Basic", + "title2": "File", + "title3": "Image compression", + "title4": "Embed", + "title5": "Other", + "title6": "Image hosting" + }, + "themeMode": { + "title": "Theme mode", + "desc": "Dark and light color modes", + "option1": "Follow Obsidian", + "option2": "Light mode", + "option3": "Dark mode" + }, + "theme": { + "title": "Default theme (light color)", + "desc": "Default theme for creating a mind map file in light color mode", + "title2": "Default theme (dark color)", + "desc2": "Default theme for creating a mind map file in dark mode" + }, + "layout": { + "title": "Default layout", + "desc": "The default structure when creating a new mind map file" + }, + "folder": { + "title4": "Mind map file storage location", + "desc4": "Storage location for newly created SimpleMindMap files", + "title1": "Custom file storage directory", + "desc1": "Custom file storage directory, relative to vault root directory", + "title5": "Image storage location", + "desc5": "Storage location for uploaded image files (node images, background images)", + "title2": "Custom image storage directory", + "desc2": "Custom image storage directory, relative to vault root directory", + "title6": "Custom subfolder", + "desc6": "Custom subfolder, relative to current file's folder", + "title7": "File storage location", + "desc7": "Storage directory for local files selected in node hyperlinks", + "title3": "Custom file storage directory", + "desc3": "Custom file storage directory, relative to vault root directory", + "option1": "Vault root directory", + "option2": "Specified folder", + "option3": "Current file's folder", + "option4": "Specified subfolder under current file's folder", + "title8": "Support ob search", + "desc8": "Mind map data is stored after encoding and compression, so it cannot be searched in OB. If you want to search for the node text content of the mind map in OB, you can turn on this option. After turning it on, the text content of all nodes will be saved in the file for search. The side effect is that it will cause the file size to increase, which may affect the speed of file opening and saving", + "title9": "Store canvas position and scaling data", + "desc9": "After opening, the canvas position and zoom data will be saved in the file, so that the next time it is opened, it can be restored to the position and zoom state when it was closed last time. The disadvantage is that moving and scaling the canvas will cause file changes", + "title10": "The maximum level for converting node text to Markdown titles", + "desc10": "Nodes with text less than or equal to this level will be converted to Markdown titles, while the rest will be converted to unordered lists" + }, + "compress": { + "title1": "Compress images", + "desc1": "Whether to compress uploaded node images (locally selected images)", + "title2": "Maximum compression width", + "desc2": "Set the maximum width after image compression", + "title3": "Maximum compression height", + "desc3": "Set the maximum height after image compression", + "title4": "Image quality", + "desc4": "The quality of compressed images is only valid for certain image formats, such as jpg", + "curValue": "Current value", + "reset": "Reset to default" + }, + "autoSave": { + "title": "Auto-save interval", + "desc": "Inactivity time before auto-save (seconds)" + }, + "codeBlock": { + "title": "Code block initial height", + "desc": "Initial height when embedding via smm code block (pixels)", + "title2": "Code block background transparent", + "desc2": "Whether the background of the embedded smm code block is transparent, otherwise it will follow the selected mind map theme background color" + }, + "linkInfo": { + "issues": "Bugs and feature requests", + "desktop": "Download independent client", + "community": "Community" + }, + "embed": { + "title1": "Embed preview double click to open a new tab", + "desc1": "When embedding an MD document in format ![[]], double-click to preview the image and open the file in a new tab", + "title2": "Embed preview background transparent", + "desc2": "Is the background of the preview image embedded in the format of ![[]] transparent", + "title3": "Is the embedded image stored as a separate file", + "desc3": "By default, images used for embedding preview in ![[]] format will be stored separately in the repository as SVG files. This way, only the file path is stored in the mind map file, which can significantly reduce the file size and speed up file reading and saving. If closed, the image data will be stored in the mind map file, and the volume will significantly increase", + "title4": "Embedded image file storage directory", + "desc4": "The folder where the embedded preview image files are stored should not be empty relative to the repository root directory, and the directory should start with . as the hidden folder", + "title5": "New tab opens node link", + "desc5": "Does clicking on the inserted node link (excluding network links) open in a new tab. After closing, you can also open a new tab by pressing Ctrl+left mouse button" + }, + "file": { + "title1": "File name format for creating a new mind map", + "desc1": "Naming format for creating a new mind map file name. Support variables other than notename", + "title3": "Naming format for pasting images", + "desc3": "Naming format for images pasted on nodes", + "filenameFormatDesc": "File name format description" + }, + "font": { + "title": "Font", + "desc": "Extended font list for mind maps", + "btn": "Manage", + "placeholder": "Search font. You can also press Enter to add input fonts directly", + "empty": "No font", + "noMatch": "No matching font", + "noFont": "No available font" + }, + "button": { + "select": "Select" + }, + "other": { + "title1": "Check for new versions", + "desc1": "After activation, it will check if a new version is available when the plugin starts. If your network cannot access Github, it is recommended to disable this option" + }, + "imageHosting": { + "title1": "Open the picture bed", + "desc1": "After activation, all images will be uploaded to the image bed", + "tip1": "Please first improve the configuration information of the drawing bed", + "title2": "Picture bed URL", + "desc2": "Fill in the corresponding upload interface address based on the graphic tool you are using", + "title3": "Form field", + "desc3": "Name of the form field when uploading images", + "title4": "Response structure", + "desc4": "Response structure when uploading images. Please refer to the detailed description for more information:", + "desc5": "Image bed function description" + } + }, + "html": { + "filenameFormatDesc": "

In addition to fixed names, variables can also be used, enclosed in {}. Available variables are as follows:

1.{notename}: The current file name without extension;

2.{date}: Current date in YYYY-MM-DD format;

3.{time}: Current time in HH:mm:ss format;

4.{datatime}: Current date and time in YYYY-MM-DD HH:mm:ss format;

5.{date:Format}: Specify date/time format, e.g.: MM-DD HH:mm, reference: Format specification;

6.{random}: Random string with 6-character length;

" + } +} diff --git a/src/locales/vi.json b/src/locales/vi.json new file mode 100644 index 0000000..2f2ce77 --- /dev/null +++ b/src/locales/vi.json @@ -0,0 +1,186 @@ +{ + "common": { + "mindMap": "Sơ đồ tư duy", + "rootNodeDefaultText": "Nút gốc", + "secondNodeDefaultText": "Nút cấp hai", + "branchNodeDefaultText": "Chủ đề nhánh" + }, + "action": { + "createMindMap": "Tạo sơ đồ tư duy mới", + "createMindMapInsertToMd": "Tạo sơ đồ tư duy mới và chèn vào tài liệu hiện tại", + "openAsMd": "Mở dưới dạng tài liệu Markdown", + "openAsMindMap": "Mở dưới dạng tài liệu sơ đồ tư duy", + "changeToOutline": "Chuyển sang chế độ dàn bài", + "changeToMindMap": "Chuyển sang chế độ sơ đồ tư duy", + "printOutline": "In dàn bài", + "import": "Nhập vào", + "export": "Xuất ra", + "insertCodeBlockToMd": "Chèn khối mã sơ đồ tư duy vào tài liệu hiện tại", + "previewAsMindMap": "Xem trước dưới dạng sơ đồ tư duy", + "changeToReadonly": "Chuyển sang chế độ xem", + "changeToEdit": "Chuyển sang chế độ chỉnh sửa", + "changeToMdFile": "Chuyển đổi sang tài liệu Markdown", + "changeToMindMapFile": "Chuyển đổi sang tài liệu bản đồ tư duy" + }, + "tip": { + "tip": "Mẹo", + "confirm": "Xác nhận", + "cancel": "Hủy bỏ", + "close": "Đóng cửa", + "fileExist": "Tệp đã tồn tại", + "createMindMapFail": "Tạo sơ đồ tư duy thất bại", + "fileIsNotMd": "Tệp hiện tại không phải tệp markdown", + "fileIsEmpty": "Nội dung tệp trống", + "fileFormatError": "Lỗi định dạng tệp", + "onlyEnableSelectCurrentVaultFile": "Chỉ cho phép thêm tệp từ kho hiện tại", + "saving": "Đang lưu...", + "integerInputError": "Vui lòng nhập số lớn hơn 0", + "noPreviewImage": "Không có hình ảnh xem trước", + "insertFail": "Chèn thất bại", + "noMatchResult": "Không có kết quả phù hợp", + "fileDeleted": "Tệp đã bị xóa", + "noPreviewImageInFile": "Không có hình ảnh xem trước trong tệp", + "pluginNewVersion": "Plugin có phiên bản mới:", + "pluginNoNewVersion": "Hiện tại là phiên bản mới nhất", + "pluginVersionCheckError": "Kiểm tra thất bại", + "changeSuccess": "Hoàn thành chuyển đổi", + "mdToMindMapFail": "Chuyển đổi thất bại, không có dữ liệu được phân tích để có thể được chuyển đổi thành Bản đồ tư duy", + "imgCreateFail": "Lỗi tạo tập tin ảnh", + "mdModifyTip": "Không thay đổi bất kỳ thông tin nào khác ngoài YAML", + "fileNameEmpty": "Tên tập tin không được để trống", + "fileNameIllegal": "Tên tập tin chứa ký tự không hợp lệ", + "fileRenameFail": "Lỗi đổi tên tập tin", + "mindMapToMdTip": "Sau khi chuyển đổi sang tài liệu Markdown, chỉ một số nội dung sẽ được giữ lại, chẳng hạn như văn bản nút, văn bản tóm tắt, ghi chú, v.v., những nội dung khác sẽ bị loại bỏ và không thể khôi phục, hãy sao lưu trước.", + "mdToMindMapTip": "Chỉ hỗ trợ chuyển đổi tiêu đề, danh sách và cú pháp khác thành bản đồ tư duy, các nội dung khác sẽ bị loại bỏ và không thể phục hồi, hãy sao lưu trước." + }, + "setting": { + "title": { + "title1": "Cơ bản", + "title2": "Tệp", + "title3": "Nén hình ảnh", + "title4": "Hình ảnh", + "title5": "Khác", + "title6": "Hình ảnh hosting" + }, + "themeMode": { + "title": "Chế độ chủ đề", + "desc": "Chế độ tối, ánh sáng", + "option1": "Theo Obsidian", + "option2": "Chế độ sáng", + "option3": "Chế độ tối" + }, + "theme": { + "title": "Sắc thái mặc định (màu sáng)", + "desc": "sắc thái mặc định khi tạo tập tin bản đồ tư duy mới trong chế độ sáng", + "title2": "sắc thái mặc định (đối)", + "desc2": "sắc thái mặc định khi tạo tập tin bản đồ tư duy mới trong chế độ tối" + }, + "layout": { + "title": "Cấu trúc mặc định", + "desc": "Cấu trúc mặc định khi tạo tệp sơ đồ tư duy mới" + }, + "folder": { + "title4": "Vị trí lưu trữ tệp sơ đồ tư duy", + "desc4": "Vị trí lưu trữ tệp SimpleMindMap mới tạo", + "title1": "Thư mục lưu trữ tệp tùy chỉnh", + "desc1": "Thư mục lưu trữ tệp tùy chỉnh, tương đối với thư mục gốc kho lưu trữ", + "title5": "Vị trí lưu trữ hình ảnh", + "desc5": "Vị trí lưu trữ tệp hình ảnh đã tải lên (hình ảnh nút, hình nền)", + "title2": "Thư mục lưu trữ hình ảnh tùy chỉnh", + "desc2": "Thư mục lưu trữ hình ảnh tùy chỉnh, tương đối với thư mục gốc kho lưu trữ", + "title6": "Thư mục con tùy chỉnh", + "desc6": "Thư mục con tùy chỉnh, tương đối với thư mục chứa tệp hiện tại", + "title7": "Vị trí lưu trữ tệp", + "desc7": "Thư mục lưu trữ tệp cục bộ được chọn trong siêu liên kết nút", + "title3": "Thư mục lưu trữ tệp tùy chỉnh", + "desc3": "Thư mục lưu trữ tệp tùy chỉnh, tương đối với thư mục gốc kho lưu trữ", + "option1": "Thư mục gốc của kho lưu trữ", + "option2": "Thư mục chỉ định", + "option3": "Thư mục chứa tệp hiện tại", + "option4": "Thư mục con được chỉ định trong thư mục chứa tệp hiện tại", + "title8": "Hỗ trợ tìm kiếm OB", + "desc8": "Tư duy bản đồ dữ liệu là mã hóa nén sau khi lưu trữ, vì vậy không thể tìm kiếm trong ob, nếu bạn muốn trong ob có thể tìm kiếm nội dung văn bản nút của bản đồ tư duy, bạn có thể mở tùy chọn này, sau khi mở sẽ lưu thêm tất cả các nút trong các tập tin nội dung văn bản để tìm kiếm, mang lại tác dụng phụ sẽ dẫn đến khối lượng tập tin lớn hơn, có thể ảnh hưởng đến tốc độ mở và lưu tập tin", + "title9": "Lưu trữ vị trí canvas và dữ liệu thu phóng", + "desc9": "Vị trí khung và dữ liệu thu phóng được lưu trong tệp sau khi mở để bạn có thể khôi phục lại vị trí và trạng thái thu phóng của lần đóng cuối cùng khi mở tiếp theo. Nhược điểm là chỉ cần di chuyển và phóng to canvas sẽ làm thay đổi tập tin.", + "title10": "Mức tối đa của văn bản nút đến tiêu đề Markdown", + "desc10": "Văn bản nút nhỏ hơn hoặc bằng cấp này được chuyển thành tiêu đề Markdown và phần còn lại được chuyển thành danh sách không có thứ tự." + }, + "compress": { + "title1": "Có nén ảnh không", + "desc1": "Nén ảnh nút đã tải lên (ảnh được chọn cục bộ)", + "title2": "Chiều rộng tối đa khi nén", + "desc2": "Thiết lập chiều rộng tối đa sau khi nén ảnh", + "title3": "Chiều cao tối đa khi nén", + "desc3": "Thiết lập chiều cao tối đa sau khi nén ảnh", + "title4": "Chất lượng ảnh", + "desc4": "Chất lượng sau khi nén hình ảnh, chỉ có hiệu quả đối với một số định dạng hình ảnh, ví dụ như: jpg", + "curValue": "Giá trị hiện tại", + "reset": "Đặt lại về mặc định" + }, + "autoSave": { + "title": "Thời gian tự động lưu", + "desc": "Thời gian tự động lưu khi không có thao tác, đơn vị: giây" + }, + "codeBlock": { + "title": "Chiều cao ban đầu của khối mã nhúng", + "desc": "Chiều cao ban đầu khi nhúng bằng khối mã smm, đơn vị: px", + "title2": "Nền nhúng khối mã có trong suốt hay không", + "desc2": "Nền có trong suốt khi nhúng khối mã smm hay không, nếu không nó sẽ theo màu nền của chủ đề bản đồ tư duy đã chọn" + }, + "linkInfo": { + "issues": "Gửi bug hoặc gợi ý", + "desktop": "Nhận khách hàng độc lập", + "community": "Hội đồng" + }, + "embed": { + "title1": "Nhúng xem thử Nhấp đúp vào cửa sổ mới để mở", + "desc1": "![[]] Định dạng Nhấp đúp vào ô xem thử ảnh khi nhúng tài liệu md có cửa sổ mới Mở tập tin không", + "title2": "Hình nền nhúng xem thử có trong suốt không", + "desc2": "![[]] Định dạng Nền ảnh được nhúng trong ô xem thử có trong suốt không", + "title3": "Cho dù hình ảnh nhúng được lưu trữ dưới dạng tệp riêng biệt", + "desc3": "Hình ảnh được sử dụng mặc định để nhúng xem trước ở định dạng ![[]] được lưu trữ riêng biệt trong kho dưới dạng tệp svg để chỉ đường dẫn tệp được lưu trữ trong tệp Bản đồ Tư duy có thể làm giảm đáng kể khối lượng tệp và tăng tốc độ đọc và lưu tệp. Nếu tắt, dữ liệu hình ảnh sẽ được lưu trữ trong tệp Bản đồ Tư duy và khối lượng sẽ tăng lên đáng kể.", + "title4": "Nhúng thư mục lưu trữ tập tin ảnh", + "desc4": "Nhúng xem trước hình ảnh tập tin lưu trữ thư mục, liên quan đến thư mục gốc kho, không nên để trống và thư mục bắt đầu bằng . như một thư mục ẩn", + "title5": "Trang nhãn mới Mở liên kết nút", + "desc5": "Nhấp vào liên kết nút được chèn (không chứa liên kết mạng) để mở trên trang tab mới. Bạn cũng có thể mở tab mới bằng Ctrl+chuột trái sau khi đóng" + }, + "file": { + "title1": "Định dạng tên tập tin cho bản đồ tư duy mới", + "desc1": "Dạng thức đặt tên cho tên tệp bản đồ tư duy mới. Hỗ trợ các biến khác ngoài notename", + "title3": "Định dạng có tên cho ảnh dán", + "desc3": "Định dạng có tên của ảnh được dán trên nút", + "filenameFormatDesc": "Mô tả định dạng tên tập tin" + }, + "font": { + "title": "Phông chữ", + "desc": "Phông chữ mặc định khi tạo bản đồ tư duy mới", + "btn": "Quản lý", + "placeholder": "Tìm kiếm phông chữ. Bạn cũng có thể nhấn Enter để thêm các phông chữ nhập trực tiếp", + "empty": "Không có phông chữ", + "noMatch": "Không tìm thấy phông chữ", + "noFont": "Không có phông chữ" + }, + "button": { + "select": "Chọn" + }, + "other": { + "title1": "Kiểm tra phiên bản mới", + "desc1": "Khi plugin khởi động, bạn sẽ kiểm tra xem có phiên bản mới không và nếu mạng của bạn không truy cập được Github, bạn nên tắt tùy chọn này." + }, + "imageHosting": { + "title1": "Mở giường", + "desc1": "Sau khi mở, tất cả hình ảnh sẽ được tải lên giường.", + "tip1": "Vui lòng hoàn thiện thông tin cấu hình giường", + "title2": "Giường Url", + "desc2": "Điền địa chỉ giao diện tải lên tương ứng với công cụ giường chiếu mà bạn sử dụng", + "title3": "Trường mẫu", + "desc3": "Tên trường trong biểu mẫu khi tải lên hình ảnh", + "title4": "Cấu trúc phản hồi", + "desc4": "Cấu trúc phản hồi khi tải lên hình ảnh. Hãy tham khảo thêm tại:", + "desc5": "Hướng dẫn sử dụng giường" + } + }, + "html": { + "filenameFormatDesc": "

Ngoài các tên cố định, bạn cũng có thể sử dụng các biến, được đặt trong dấu ngoặc nhọn {}, các biến khả dụng như sau:

1.{notename}: Tên tệp hiện tại, không bao gồm phần mở rộng;

2.{date}: Ngày hiện tại, định dạng YYYY-MM-DD;

3.{time}: Thời gian hiện tại, định dạng HH:mm:ss;

4.{datatime}: Ngày giờ hiện tại, định dạng: YYYY-MM-DD HH:mm:ss;

5.{date:Format}: Chỉ định định dạng ngày giờ, ví dụ: MM-DD HH:mm, tham khảo thêm tại: hướng dẫn định dạng;

6.{random}: Chuỗi ngẫu nhiên, độ dài 6 ký tự;

" + } +} diff --git a/src/locales/zh.json b/src/locales/zh.json new file mode 100644 index 0000000..65e4c90 --- /dev/null +++ b/src/locales/zh.json @@ -0,0 +1,186 @@ +{ + "common": { + "mindMap": "思维导图", + "rootNodeDefaultText": "根节点", + "secondNodeDefaultText": "二级节点", + "branchNodeDefaultText": "分支主题" + }, + "action": { + "createMindMap": "新建思维导图", + "createMindMapInsertToMd": "新建思维导图并插入当前文档", + "openAsMd": "打开为Markdown文档", + "openAsMindMap": "打开为思维导图文档", + "changeToOutline": "切换为大纲模式", + "changeToMindMap": "切换为思维导图模式", + "printOutline": "打印大纲", + "import": "导入", + "export": "导出", + "insertCodeBlockToMd": "插入思维导图代码块到当前文档", + "previewAsMindMap": "预览为思维导图", + "changeToReadonly": "切换为只读模式", + "changeToEdit": "切换为编辑模式", + "changeToMdFile": "转换为Markdown文档", + "changeToMindMapFile": "转换为思维导图文档" + }, + "tip": { + "tip": "提示", + "confirm": "确认", + "cancel": "取消", + "close": "关闭", + "fileExist": "文件已经存在", + "createMindMapFail": "新建思维导图失败", + "fileIsNotMd": "当前文件不是markdown文件", + "fileIsEmpty": "文件内容为空", + "fileFormatError": "文件格式错误", + "onlyEnableSelectCurrentVaultFile": "只允许添加当前仓库的文件", + "saving": "保存中...", + "integerInputError": "请输入大于0的数字", + "noPreviewImage": "没有可预览图片", + "insertFail": "插入失败", + "noMatchResult": "暂无匹配结果", + "fileDeleted": "该文件已被删除", + "noPreviewImageInFile": "该文件中没有可预览图片", + "pluginNewVersion": "插件有新版本可用:", + "pluginNoNewVersion": "当前已是最新版本", + "pluginVersionCheckError": "检查失败", + "changeSuccess": "转换完成", + "mdToMindMapFail": "转换失败,没有解析到可以转换为思维导图的数据", + "imgCreateFail": "图片文件创建失败", + "mdModifyTip": "请勿修改除YAML外的任何信息", + "fileNameEmpty": "文件名不能为空", + "fileNameIllegal": "文件名包含非法字符", + "fileRenameFail": "文件重命名失败", + "mindMapToMdTip": "转换为Markdown文档后,仅会保留部分内容,比如节点文本、概要文本、备注等,其他内容将丢弃且不可恢复,请先做好备份。", + "mdToMindMapTip": "仅支持将标题、列表等语法转换为思维导图,其他内容将丢弃且不可恢复,请先做好备份。" + }, + "setting": { + "title": { + "title1": "基础", + "title2": "文件", + "title3": "图片压缩", + "title4": "嵌入", + "title5": "其他", + "title6": "图床" + }, + "themeMode": { + "title": "主题模式", + "desc": "深色、浅色模式", + "option1": "跟随obsidian", + "option2": "浅色模式", + "option3": "深色模式" + }, + "theme": { + "title": "默认主题(浅色)", + "desc": "浅色模式下新建思维导图文件时的默认主题", + "title2": "默认主题(深色)", + "desc2": "深色模式下新建思维导图文件时的默认主题" + }, + "layout": { + "title": "默认结构", + "desc": "新建思维导图文件时的默认结构" + }, + "folder": { + "title4": "思维导图文件存储位置", + "desc4": "新建的SimpleMindMap文件存储位置", + "title1": "自定义文件存储目录", + "desc1": "自定义文件存储目录,相对于仓库根目录", + "title5": "图片存储位置", + "desc5": "上传的图片文件(节点图片、背景图片)存储位置", + "title2": "自定义图片存储目录", + "desc2": "自定义图片存储目录,相对于仓库根目录", + "title6": "自定义子文件夹", + "desc6": "自定义子文件夹,相对于当前文件所在文件夹", + "title7": "文件存储位置", + "desc7": "节点超链接中选择的本地文件存储目录", + "title3": "自定义文件存储目录", + "desc3": "自定义文件存储目录,相对于仓库根目录", + "option1": "仓库的根目录", + "option2": "指定文件夹", + "option3": "当前文件所在的文件夹", + "option4": "当前文件所在文件夹下指定的子文件夹", + "title8": "支持ob搜索", + "desc8": "思维导图数据是编码压缩后存储的,所以无法在ob中搜索,如果你想在ob中能搜索到思维导图的节点文本内容,可以开启该选项,开启后会在文件中额外保存所有节点的文本内容用于搜索,带来的副作用是会导致文件体积变大,可能会影响文件打开和保存的速度", + "title9": "存储画布位置和缩放数据", + "desc9": "开启后会在文件中保存画布位置和缩放数据,这样下次打开时能恢复到上次关闭时的位置和缩放状态。缺点是只要移动和缩放过画布就会造成文件改动", + "title10": "节点文字转Markdown标题的最大层级", + "desc10": "小于等于该层级的节点文字会转为Markdown标题,其余的转为无序列表" + }, + "compress": { + "title1": "压缩图片", + "desc1": "是否压缩上传的节点图片(从本地选择的图片)", + "title2": "最大压缩宽度", + "desc2": "图片压缩后的最大宽度", + "title3": "最大压缩高度", + "desc3": "图片压缩后的最大高度", + "title4": "图片质量", + "desc4": "图片压缩后的质量,仅对部分图片格式有效,比如:jpg", + "curValue": "当前值", + "reset": "重置为默认值" + }, + "autoSave": { + "title": "自动保存时间", + "desc": "无操作自动保存时间,单位:秒" + }, + "codeBlock": { + "title": "代码块嵌入初始高度", + "desc": "smm代码块方式嵌入时初始高度,单位:px", + "title2": "代码块嵌入背景是否透明", + "desc2": "smm代码块嵌入时背景是否透明,否则会跟随所选的思维导图主题背景颜色" + }, + "linkInfo": { + "issues": "提交bug或建议", + "desktop": "下载独立客户端", + "community": "社区" + }, + "embed": { + "title1": "嵌入预览双击是否新标签页打开", + "desc1": "![[]]格式嵌入md文档时双击预览图像是否新标签页打开文件", + "title2": "嵌入预览的图像背景是否透明", + "desc2": "![[]]格式嵌入预览的图像背景是否透明", + "title3": "嵌入的图片是否以单独文件的形式存储", + "desc3": "默认用于![[]]格式嵌入预览的图片会以svg格式的文件单独存储到仓库里,这样思维导图文件中只存储文件路径,可以显著减小文件体积,加快文件的读取和保存速度。如果关闭,则会把图片数据存储到思维导图文件中,体积会显著增大", + "title4": "嵌入图片文件存储目录", + "desc4": "嵌入预览的图片文件存储的文件夹,相对于仓库根目录,建议不要为空,且目录以.开头作为隐藏文件夹", + "title5": "新标签页打开节点链接", + "desc5": "点击插入的节点链接(不包含网络链接)是否在新标签页打开。关闭后也可以通过Ctrl+鼠标左键在新标签页打开" + }, + "file": { + "title1": "新建思维导图的文件名格式", + "desc1": "新建思维导图文件名的命名格式。支持除notename外的其他变量", + "title3": "粘贴图片的命名格式", + "desc3": "在节点上粘贴的图片的命名格式", + "filenameFormatDesc": "文件名格式说明" + }, + "font": { + "title": "字体", + "desc": "扩展思维导图的字体列表", + "btn": "管理", + "placeholder": "搜索字体。也可按回车键直接添加输入的字体", + "empty": "暂无已添加字体", + "noMatch": "无匹配字体", + "noFont": "没有可用字体" + }, + "button": { + "select": "选择" + }, + "other": { + "title1": "检查新版本", + "desc1": "开启后会在插件启动时检查是否有新版本可用,如果你的网络访问不到Github,则建议关闭该选项" + }, + "imageHosting": { + "title1": "开启图床", + "desc1": "开启后,所有图片都将上传到图床", + "tip1": "请先完善图床配置信息", + "title2": "图床url", + "desc2": "根据你使用的图床工具填写对应的上传接口地址", + "title3": "表单字段", + "desc3": "上传图片时的表单字段名称", + "title4": "接口响应结构", + "desc4": "上传图片时的接口响应结构。详细说明请参考:", + "desc5": "图床功能说明" + } + }, + "html": { + "filenameFormatDesc": "

除了固定名称外,也可以使用变量,用 {} 括起来,可用变量如下:

1.{notename}:当前文件的文件名,不包含扩展名;

2.{date}:当前日期,格式为 YYYY-MM-DD;

3.{time}:当前时间,格式为 HH:mm:ss;

4.{datatime}:当前日期时间,格式为:YYYY-MM-DD HH:mm:ss;

5.{date:Format}:指定日期时间格式,比如:MM-DD HH:mm,可参考:格式说明

6.{random}:随机字符串,长度为 6 位;

" + } +} diff --git a/src/locales/zhtw.json b/src/locales/zhtw.json new file mode 100644 index 0000000..b9cac2c --- /dev/null +++ b/src/locales/zhtw.json @@ -0,0 +1,186 @@ +{ + "common": { + "mindMap": "思維導圖", + "rootNodeDefaultText": "根節點", + "secondNodeDefaultText": "二級節點", + "branchNodeDefaultText": "分支主題" + }, + "action": { + "createMindMap": "新建思維導圖", + "createMindMapInsertToMd": "新建思維導圖並插入當前文件", + "openAsMd": "開啟為 Markdown 文件", + "openAsMindMap": "開啟為思維導圖文件", + "changeToOutline": "切換為大綱模式", + "changeToMindMap": "切換為思維導圖模式", + "printOutline": "列印大綱", + "import": "匯入", + "export": "匯出", + "insertCodeBlockToMd": "插入思維導圖程式碼區塊到當前文件", + "previewAsMindMap": "預覽為心智圖", + "changeToReadonly": "切換為只讀模式", + "changeToEdit": "切換為編輯模式", + "changeToMdFile": "轉換為Markdown檔案", + "changeToMindMapFile": "轉換為心智圖檔案" + }, + "tip": { + "tip": "提示", + "confirm": "確認", + "cancel": "取消", + "close": "關閉", + "fileExist": "檔案已經存在", + "createMindMapFail": "新建思維導圖失敗", + "fileIsNotMd": "當前檔案不是 markdown 檔案", + "fileIsEmpty": "檔案內容為空", + "fileFormatError": "檔案格式錯誤", + "onlyEnableSelectCurrentVaultFile": "只允許新增當前倉庫的檔案", + "saving": "儲存中...", + "integerInputError": "請輸入大於 0 的數字", + "noPreviewImage": "沒有可預覽圖片", + "insertFail": "插入失敗", + "noMatchResult": "暫無匹配結果", + "fileDeleted": "該檔案已被删除", + "noPreviewImageInFile": "該檔案中沒有可預覽圖片", + "pluginNewVersion": "挿件有新版本可用:", + "pluginNoNewVersion": "當前已是最新版本", + "pluginVersionCheckError": "檢查失敗", + "changeSuccess": "轉換完成", + "mdToMindMapFail": "轉換失敗,沒有解析到可以轉換為心智圖的數據", + "imgCreateFail": "圖片檔案創建失敗", + "mdModifyTip": "請勿修改除YAML外的任何資訊", + "fileNameEmpty": "檔名不能為空", + "fileNameIllegal": "檔名包含非法字元", + "fileRenameFail": "檔案重命名失敗", + "mindMapToMdTip": "轉換為Markdown檔案後,僅會保留部分內容,比如節點文字、概要文字、備註等,其他內容將丟棄且不可恢復,請先做好備份。", + "mdToMindMapTip": "僅支持將標題、清單等語法轉換為心智圖,其他內容將丟棄且不可恢復,請先做好備份。" + }, + "setting": { + "title": { + "title1": "基礎", + "title2": "文件", + "title3": "圖片壓縮", + "title4": "嵌入", + "title5": "其他", + "title6": "圖床主機" + }, + "themeMode": { + "title": "主題模式", + "desc": "深色、淺色模式", + "option1": "跟隨 Obsidian", + "option2": "淺色模式", + "option3": "深色模式" + }, + "theme": { + "title": "默認主題(淺色)", + "desc": "淺色模式下新建心智圖檔案時的默認主題", + "title2": "默認主題(深色)", + "desc2": "深色模式下新建心智圖檔案時的默認主題" + }, + "layout": { + "title": "預設結構", + "desc": "新建心智圖檔案時的默認結構" + }, + "folder": { + "title4": "思維導圖文件存儲位置", + "desc4": "新建的SimpleMindMap文件存儲位置", + "title1": "自定義文件存儲目錄", + "desc1": "自定義文件存儲目錄,相對於倉庫根目錄", + "title5": "圖片存儲位置", + "desc5": "上傳的圖片文件(節點圖片、背景圖片)存儲位置", + "title2": "自定義圖片存儲目錄", + "desc2": "自定義圖片存儲目錄,相對於倉庫根目錄", + "title6": "自定義子文件夾", + "desc6": "自定義子文件夾,相對於當前文件所在文件夾", + "title7": "文件存儲位置", + "desc7": "節點超連結中選擇的本地文件存儲目錄", + "title3": "自定義文件存儲目錄", + "desc3": "自定義文件存儲目錄,相對於倉庫根目錄", + "option1": "倉庫的根目錄", + "option2": "指定文件夾", + "option3": "當前文件所在的文件夾", + "option4": "當前文件所在文件夾下指定的子文件夾", + "title8": "支持ob蒐索", + "desc8": "心智圖數據是編碼壓縮後存儲的,所以無法在ob中蒐索,如果你想在ob中能蒐索到心智圖的節點文字內容,可以開啟該選項,開啟後會在檔案中額外保存所有節點的文字內容用於蒐索,帶來的副作用是會導致檔案體積變大,可能會影響檔案打開和保存的速度", + "title9": "存儲畫布位置和縮放數據", + "desc9": "開啟後會在檔案中保存畫布位置和縮放數據,這樣下次打開時能恢復到上次關閉時的位置和縮放狀態。缺點是只要移動和縮放過畫布就會造成檔案改動", + "title10": "節點文字轉Markdown標題的最大層級", + "desc10": "小於等於該層級的節點文字會轉為Markdown標題,其餘的轉為無序清單" + }, + "compress": { + "title1": "壓縮圖片", + "desc1": "是否壓縮上傳的節點圖片(從本地選擇的圖片)", + "title2": "最大壓縮寬度", + "desc2": "設定圖片壓縮後的最大寬度", + "title3": "最大壓縮高度", + "desc3": "設定圖片壓縮後的最大高度", + "title4": "圖片質量", + "desc4": "圖片壓縮後的質量,僅對部分圖片格式有效,比如:jpg", + "curValue": "當前值", + "reset": "重置為預設值" + }, + "autoSave": { + "title": "自動儲存時間", + "desc": "無操作自動儲存時間,單位:秒" + }, + "codeBlock": { + "title": "程式碼區塊嵌入初始高度", + "desc": "smm 程式碼區塊方式嵌入時初始高度,單位:px", + "title2": "程式碼塊嵌入背景是否透明", + "desc2": "smm程式碼塊嵌入時背景是否透明,否則會跟隨所選的心智圖主題背景顏色" + }, + "linkInfo": { + "issues": "提交bug或建議", + "desktop": "獲取獨立用戶端", + "community": "社區" + }, + "embed": { + "title1": "嵌入預覽按兩下是否新標籤頁打開", + "desc1": "![[]]格式嵌入md檔案時按兩下預覽影像是否新標籤頁打開文件", + "title2": "嵌入預覽的圖像背景是否透明", + "desc2": "設定![[]]格式嵌入預覽的圖像背景是否透明", + "title3": "嵌入的圖片是否以單獨檔案的形式存儲", + "desc3": "默認用於![[]]格式嵌入預覽的圖片會以svg格式的檔案單獨存儲到倉庫裏,這樣心智圖檔案中只存儲檔案路徑,可以顯著减小檔案體積,加快檔案的讀取和保存速度。 如果關閉,則會把圖片資料存儲到心智圖檔案中,體積會顯著增大", + "title4": "嵌入圖片檔存儲目錄", + "desc4": "嵌入預覽的圖片檔存儲的資料夾,相對於倉庫根目錄,建議不要為空,且目錄以.開頭作為隱藏資料夾", + "title5": "新標籤頁打開節點連結", + "desc5": "點擊插入的節點連結(不包含網絡連結)是否在新標籤頁打開。 關閉後也可以通過Ctrl+滑鼠左鍵在新標籤頁打開" + }, + "file": { + "title1": "新建心智圖的檔名格式", + "desc1": "新建心智圖檔名的命名格式。支持除notename外的其他變數", + "title3": "粘貼圖片的命名格式", + "desc3": "在節點上粘貼的圖片的命名格式", + "filenameFormatDesc": "檔名格式說明" + }, + "font": { + "title": "字體", + "desc": "擴展心智圖的字體清單", + "btn": "管理", + "placeholder": "蒐索字體。 也可按回車鍵直接添加輸入的字體", + "empty": "暫無已添加字體", + "noMatch": "無匹配字體", + "noFont": "沒有可用字體" + }, + "button": { + "select": "選擇" + }, + "other": { + "title1": "檢查新版本", + "desc1": "開啟後會在挿件啟動時檢查是否有新版本可用,如果你的網絡訪問不到Github,則建議關閉該選項" + }, + "imageHosting": { + "title1": "開啟圖床", + "desc1": "開啟後,所有圖片都將上傳到圖床", + "tip1": "請先完善圖床配寘資訊", + "title2": "圖床url", + "desc2": "根據你使用的圖床工具填寫對應的上傳介面地址", + "title3": "表單欄位", + "desc3": "上傳圖片時的表單欄位名稱", + "title4": "接口響應結構", + "desc4": "上傳圖片時的接口響應結構。詳細說明請參考:", + "desc5": "圖床功能說明" + } + }, + "html": { + "filenameFormatDesc": "

除了固定名稱外,也可以使用變數,用 {} 括起來,可用變數如下:

1.{notename}:目前檔案的檔名,不包含副檔名;

2.{date}:目前日期,格式為 YYYY-MM-DD;

3.{time}:目前時間,格式為 HH:mm:ss;

4.{datatime}:目前日期時間,格式為:YYYY-MM-DD HH:mm:ss;

5.{date:Format}:指定日期時間格式,例如:MM-DD HH:mm,可參考:格式說明

6.{random}:隨機字串,長度為 6 位;

" + } +} diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..987ffa6 --- /dev/null +++ b/src/main.js @@ -0,0 +1,440 @@ +import { + addIcon, + Plugin, + TFolder, + Notice, + MarkdownView, + WorkspaceLeaf, + Workspace, + getLanguage +} from 'obsidian' +import './style.css' +import SmmEditView from './SmmEditView.js' +import { + SMM_VIEW_TYPE, + SIDE_BAR_ICON, + SMM_TAG, + DEFAULT_SETTINGS, + IGNORE_CHECK_SMM +} from './ob/constant.js' +import { + createDefaultText, + createDefaultMindMapData +} from './ob/metadataAndMarkdown.js' +import { around, dedupe } from 'monkey-around' +import { getUidFromSource, formatFileName } from './ob/utils.js' +import MarkdownPostProcessor from './ob/MarkdownPostProcessor.js' +import SmmSettingTab from './ob/SmmSettingTab.js' +import { langList } from './src/config/zh' +import i18n from 'i18next' +import enTranslations from './locales/en.json' +import zhTranslations from './locales/zh.json' +import viTranslations from './locales/vi.json' +import zhtwTranslations from './locales/zhtw.json' +import Commands from './ob/Commands.js' +import markdown from 'simple-mind-map/src/parse/markdown.js' +import Menus from './ob/Menus.js' + +export default class SimpleMindMapPlugin extends Plugin { + async onload() { + await this._addSetting() + + i18n.init({ + lng: getLanguage() || 'en', + fallbackLng: 'en', + resources: { + en: { translation: enTranslations }, + zh: { translation: zhTranslations }, + vi: { translation: viTranslations }, + ['zh-TW']: { translation: zhtwTranslations } + } + }) + + addIcon('smm-icon', SIDE_BAR_ICON) + + this.registerView(SMM_VIEW_TYPE, leaf => new SmmEditView(leaf, this)) + + this._createSmmFile = this._createSmmFile.bind(this) + this.addRibbonIcon( + 'smm-icon', + this._t('action.createMindMap'), + this._createSmmFile + ) + + this.commands = new Commands(this) + + this.menus = new Menus(this) + + this._registerMonkeyPatches() + + this._switchToSmmAfterLoad() + + this._initStatusBar() + + this.markdownPostProcessor = new MarkdownPostProcessor(this) + this.markdownPostProcessor.register() + + this.fileToSubpathMap = {} + this.noSaveOnClose = false + } + + async _createSmmFile(folderPath = '', callback) { + try { + if (typeof folderPath !== 'string' || folderPath === '/') { + folderPath = '' + } + const { fileNameFormat } = this.settings + folderPath = this._getCreateFolderPath(folderPath) + await this._ensureDirectoryExists(folderPath) + const { vault } = this.app + const filePath = `${ + folderPath ? folderPath + '/' : '' + }${formatFileName(fileNameFormat, { ignores: ['notename'] })}.smm.md` + const fileContent = createDefaultText( + filePath, + this._getCreateDefaultMindMapOptions() + ) + try { + const existingFile = vault.getFileByPath(filePath) + if (existingFile) { + new Notice(this._t('tip.fileExist')) + } else { + await vault.create(filePath, fileContent) + if (callback && typeof callback === 'function') { + callback(filePath) + } else { + await this.app.workspace.openLinkText(filePath, '', true) + } + } + } catch (error) { + new Notice(this._t('tip.createMindMapFail')) + } + } catch (error) { + new Notice(this._t('tip.createMindMapFail')) + } + } + + _getCreateFolderPath(folderPath) { + if (folderPath) return folderPath + const { filePathType, filePath } = this.settings + switch (filePathType) { + case 'root': + return '' + case 'custom': + return filePath + case 'currentFileFolder': + return this._getActiveFileDirectory() + default: + return '' + } + } + + async _getAvailableFilaName(filePath, extCount = 1) { + let counter = 1 + while (await this.app.vault.adapter.exists(filePath)) { + const parts = filePath.split('.') + const extList = [] + for (let i = 0; i < extCount; i++) { + extList.push(parts.pop()) + } + const ext = extList.reverse().join('.') + filePath = `${parts.join('.')}_${counter}.${ext}` + counter++ + } + return filePath + } + + async _addSetting() { + await this._loadSettings() + this.addSettingTab(new SmmSettingTab(this.app, this)) + } + + async _loadSettings() { + const data = await this.loadData() + this.settings = Object.assign({}, DEFAULT_SETTINGS, data || {}) + const obLang = getLanguage() + const target = langList.find( + item => item.value === obLang || item.alias === obLang + ) + this.settings.lang = target ? target.value : 'en' + } + + async _saveSettings() { + await this.saveData(this.settings) + } + + _registerMonkeyPatches() { + const key = 'https://github.com/wanglin2/mind-map' + this.register( + around(Workspace.prototype, { + getActiveViewOfType(old) { + return dedupe(key, old, function(...args) { + const result = old && old.apply(this, args) + if (args[1] === IGNORE_CHECK_SMM) { + return result + } + const currentView = this.app?.workspace?.activeLeaf?.view + if (!currentView || !(currentView instanceof SmmEditView)) + return result + }) + } + }) + ) + if (!this.app.plugins?.plugins?.['obsidian-hover-editor']) { + this.register( + around(WorkspaceLeaf.prototype, { + getRoot(old) { + return function() { + const top = old.call(this) + return top.getRoot === this.getRoot ? top : top.getRoot() + } + } + }) + ) + } + const self = this + this.register( + around(WorkspaceLeaf.prototype, { + detach(next) { + return function() { + return next.apply(this) + } + }, + setViewState(next) { + return function(state, ...rest) { + if ( + (state.state?.isSwitchToMarkdownViewFromSmmView || + ['preview', 'source'].includes(state.state?.mode)) && + !state.state?.isPreviewToMindMapViewFromMdView + ) { + return next.apply(this, [state, ...rest]) + } + if ( + self._loaded && + state.type === 'markdown' && + state.state?.file + ) { + const curFilePath = state.state.file + if (self._isSmmFile(curFilePath)) { + let isStop = false + if (rest && rest[0]) { + if (rest[0].subpath) { + self.fileToSubpathMap[curFilePath] = rest[0].subpath + } else if ( + rest[0].match && + rest[0].match.matches.length > 0 + ) { + const uid = getUidFromSource(rest[0]) + if (uid) { + const existLeaf = this.app.workspace + .getLeavesOfType(SMM_VIEW_TYPE) + .find(leaf => { + const file = leaf.view.file + ? leaf.view.file.path + : leaf.view.state.file + return file && file === curFilePath + }) + if (existLeaf) { + if ( + existLeaf.view instanceof SmmEditView && + existLeaf.view.jumpToNodeByUid + ) { + existLeaf.view.jumpToNodeByUid(uid) + } else { + self.fileToSubpathMap[curFilePath] = uid + } + this.app.workspace.setActiveLeaf(existLeaf) + isStop = true + } else { + self.fileToSubpathMap[curFilePath] = uid + } + } + } + } + if (isStop) return + const newState = { + ...state, + type: SMM_VIEW_TYPE + } + return next.apply(this, [newState, ...rest]) + } + } + return next.apply(this, [state, ...rest]) + } + } + }) + ) + this.menus.addMarkdownFileMenus() + } + + _switchToSmmAfterLoad() { + this.app.workspace.onLayoutReady(async () => { + let leaf + const markdownLeaf = this.app.workspace.getLeavesOfType('markdown') + for (leaf of markdownLeaf) { + if ( + leaf.view instanceof MarkdownView && + leaf.view.file && + this._isSmmFile(leaf.view.file) + ) { + this._setSmmView(leaf) + } + } + }) + } + + async _setSmmView(leaf) { + await leaf.setViewState({ + type: SMM_VIEW_TYPE, + state: leaf.view.getState(), + popstate: true + }) + } + + _getActiveSmmView() { + return this.app.workspace.getActiveViewOfType(SmmEditView, IGNORE_CHECK_SMM) + } + + _isSmmFile(file) { + if (!file) { + return false + } + const isString = typeof file === 'string' + const filePath = isString ? file : file.path + if (filePath.endsWith('.smm.md')) { + return true + } + let cache = null + if (isString) { + cache = this.app.metadataCache.getCache(file) + } else { + if (file.extension === SMM_VIEW_TYPE) { + return true + } + cache = this.app.metadataCache.getFileCache(file) + } + if (cache?.frontmatter?.tags?.contains(SMM_TAG)) { + return true + } + if (/\.smm.*\.md$/.test(filePath)) { + return true + } + return false + } + + _initStatusBar() { + this.statusBarItem = this.addStatusBarItem() + this.statusBarItem.empty() + this.statusBarItem.style.display = 'none' + + this.smmFileStatus = this.statusBarItem.createEl('div', { + cls: 'smm-file-status' + }) + + this.registerEvent( + this.app.workspace.on('file-open', this._updateStatusBar.bind(this)) + ) + + this.registerEvent( + this.app.workspace.on( + 'active-leaf-change', + this._updateStatusBar.bind(this) + ) + ) + + this._updateStatusBar() + } + + _updateStatusBar() { + const activeFile = this.app.workspace.getActiveFile() + + const isSmmFile = activeFile && this._isSmmFile(activeFile) + + const statusBar = this.app.statusBar.containerEl + + if (isSmmFile) { + this.statusBarItem.style.display = 'block' + statusBar.classList.add('smm-file-status-active') + } else { + this.statusBarItem.style.display = 'none' + statusBar.classList.remove('smm-file-status-active') + } + } + + async _ensureDirectoryExists(dirPath) { + if (!dirPath) return + const { vault } = this.app + const exist = await vault.exists(dirPath) + if (!exist) { + await vault.createFolder(dirPath) + } + } + + _t(val) { + return i18n.t(val) + } + + _getCreateDefaultMindMapOptions() { + const { defaultTheme, defaultThemeDark, defaultLayout } = this.settings + return { + theme: this._getObIsDark() ? defaultThemeDark : defaultTheme, + layout: defaultLayout, + rootNodeDefaultText: this._t('common.rootNodeDefaultText'), + secondNodeDefaultText: this._t('common.secondNodeDefaultText'), + branchNodeDefaultText: this._t('common.branchNodeDefaultText') + } + } + + _createDefaultMindMapData() { + return createDefaultMindMapData( + this._getCreateDefaultMindMapOptions(), + false + ) + } + + _getActiveFileDirectory() { + const activeFile = this.app.workspace.getActiveFile() + if (!activeFile) { + return null + } + if (activeFile instanceof TFolder) { + return null + } + const parent = activeFile.parent + if (!parent) { + return null + } + return parent.path.replace(/\/$/, '') + } + + _getObIsDark() { + return document.body.classList.contains('theme-dark') + } + + async _mdToMindmapData(md) { + const frontMatterRegex = /^---\n[\s\S]*?\n---\n/ + const cleanedMd = md.replace(frontMatterRegex, '') + if (!cleanedMd.trim()) { + return null + } + const data = await markdown.transformMarkdownTo(cleanedMd, false) + if (!data) { + return null + } + const { defaultTheme, defaultThemeDark, defaultLayout } = this.settings + return { + root: data, + layout: defaultLayout, + theme: { + template: this._getObIsDark() ? defaultThemeDark : defaultTheme, + config: {} + } + } + } + + onunload() { + this.markdownPostProcessor.destroy() + this.statusBarItem?.remove() + this.commands.clear() + } +} diff --git a/src/ob/Commands.js b/src/ob/Commands.js new file mode 100644 index 0000000..a32d9ac --- /dev/null +++ b/src/ob/Commands.js @@ -0,0 +1,98 @@ +import { Notice, MarkdownView } from 'obsidian' + +export default class Commands { + constructor(plugin) { + this.plugin = plugin + this.app = plugin.app + + this._addCreatesCommand() + this._addActionsCommand() + } + + clear() {} + + addCommand(command) { + this.plugin.addCommand(command) + } + + _t(key) { + return this.plugin._t(key) + } + + _addCreatesCommand() { + this.addCommand({ + id: 'create-smm-mindmap', + name: this._t('action.createMindMap'), + callback: async () => { + this.plugin._createSmmFile() + } + }) + this.addCommand({ + id: 'create-smm-mindmap-insert-markdown', + name: this._t('action.createMindMapInsertToMd'), + checkCallback: checking => { + const markdownView = this.app.workspace.getActiveViewOfType( + MarkdownView + ) + if (markdownView) { + if (!checking) { + this.plugin._createSmmFile('', fileName => { + try { + const file = this.app.vault.getFileByPath(fileName) + const currentFile = this.app.workspace.getActiveFile() + const linkText = this.app.fileManager.generateMarkdownLink( + file, + currentFile?.path || '' + ) + const activeEditor = this.app.workspace.activeEditor + activeEditor.editor.replaceSelection('!' + linkText) + } catch (error) { + console.error(error) + new Notice(this._t('tip.createMindMapFail')) + } + }) + } + return true + } + return false + } + }) + } + + _addActionsCommand() { + this.addCommand({ + id: 'enter-smm-mindmap-demonstrate', + name: this._t('action.enterDemonstrate'), + checkCallback: checking => { + const view = this.plugin._getActiveSmmView() + if (view) { + if (!checking) { + view.mindMapAPP.$bus.$emit('enter_demonstrate') + } + return true + } + return false + } + }) + this.addCommand({ + id: 'save-smm-mindmap-and-update-image', + name: this._t('action.saveAndUpdateImage'), + hotkeys: [ + { + modifiers: ['Mod', 'Shift'], + key: 's' + } + ], + checkCallback: checking => { + const view = this.plugin._getActiveSmmView() + if (view) { + if (!checking) { + view.forceSaveAndUpdateImage() + } + return true + } + return false + } + }) + } +} diff --git a/src/ob/ConfirmDialog.js b/src/ob/ConfirmDialog.js new file mode 100644 index 0000000..76f563f --- /dev/null +++ b/src/ob/ConfirmDialog.js @@ -0,0 +1,64 @@ +import { Modal } from 'obsidian' +import i18n from 'i18next' + +export class ConfirmDialog extends Modal { + constructor(app, params) { + super(app) + this.params = { + title: i18n.t('tip.tip'), + confirmText: i18n.t('tip.confirm'), + cancelText: i18n.t('tip.cancel'), + content: '', + danger: false, + ...params + } + this.resolvePromise = null + this.promise = new Promise(resolve => { + this.resolvePromise = resolve + }) + this.setTitle(this.params.title) + } + + onOpen() { + const { contentEl } = this + contentEl.empty() + const contentContainer = contentEl.createDiv('smm-confirm-dialog-content') + if (typeof this.params.content === 'string') { + contentContainer.createEl('p', { text: this.params.content }) + } else { + contentContainer.appendChild(this.params.content) + } + const buttonContainer = contentEl.createDiv('smm-confirm-dialog-buttons') + const cancelBtn = buttonContainer.createEl('button', { + text: this.params.cancelText + }) + cancelBtn.addEventListener('click', () => { + this.params.onCancel?.() + this.resolvePromise(false) + this.close() + }) + const confirmBtn = buttonContainer.createEl('button', { + text: this.params.confirmText, + cls: this.params.danger ? 'mod-warning' : 'mod-cta' + }) + confirmBtn.addEventListener('click', () => { + this.params.onConfirm?.() + this.resolvePromise(true) + this.close() + }) + } + + onClose() { + const { contentEl } = this + contentEl.empty() + if (this.resolvePromise) { + this.resolvePromise(false) + } + } +} + +export function showConfirmationDialog(app, params) { + const dialog = new ConfirmDialog(app, params) + dialog.open() + return dialog.promise +} diff --git a/src/ob/MarkdownPostProcessor.js b/src/ob/MarkdownPostProcessor.js new file mode 100644 index 0000000..444d6fd --- /dev/null +++ b/src/ob/MarkdownPostProcessor.js @@ -0,0 +1,389 @@ +import { TFile } from 'obsidian' +import { parseMarkdownText } from './metadataAndMarkdown.js' +import { dataURItoBlob, smmFilePathToFileName } from './utils.js' +import LZString from 'lz-string' +import { SMM_VIEW_TYPE } from './constant.js' +import SmmEditView from '../SmmEditView.js' + +export default class MarkdownPostProcessor { + constructor(plugin) { + this.plugin = plugin + + this.urlCache = new Map() + this.imageElements = new Map() + this.emptyMap = new Map() + + this.handleFileModify = this.handleFileModify.bind(this) + this.handleFileDelete = this.handleFileDelete.bind(this) + this.handleModifySvgName = this.handleModifySvgName.bind(this) + + plugin.registerEvent(plugin.app.vault.on('modify', this.handleFileModify)) + plugin.registerEvent(plugin.app.vault.on('delete', this.handleFileDelete)) + plugin.registerEvent( + plugin.app.vault.on('rename', this.handleModifySvgName) + ) + } + + destroy() { + this.plugin.app.vault.off('modify', this.handleFileModify) + this.plugin.app.vault.off('delete', this.handleFileDelete) + this.plugin.app.vault.off('rename', this.handleModifySvgName) + + this.urlCache.forEach(url => URL.revokeObjectURL(url)) + this.urlCache.clear() + this.imageElements.clear() + this.emptyMap.clear() + } + + async handleFileModify(file) { + if (!(file instanceof TFile) || !this.plugin._isSmmFile(file)) return + + try { + const noUrlCache = !this.urlCache.has(file.path) + const hasEmpty = this.emptyMap.has(file.path) + if (noUrlCache && !hasEmpty) { + return + } + const curIsNoImage = noUrlCache && hasEmpty + const data = await this.plugin.app.vault.read(file) + const parsedata = parseMarkdownText(data) + const newUrl = this._getImgUrl(parsedata.svgdata) + if (!newUrl) { + return + } + + const oldUrl = this.urlCache.get(file.path) + if (oldUrl) URL.revokeObjectURL(oldUrl) + this.urlCache.set(file.path, newUrl) + + const emptyDiv = this.emptyMap.get(file.path) + if (emptyDiv) { + this.emptyMap.delete(file.path) + } + + const elements = this.imageElements.get(file.path) || new Set() + elements.forEach(img => { + img.src = newUrl + }) + if (curIsNoImage && emptyDiv) { + const img = this._createSvgImageElement(newUrl, file.path) + emptyDiv.replaceWith(img) + } + } catch (error) { + console.error('更新图片失败:', error) + } + } + + async handleFileDelete(file) { + if (!(file instanceof TFile)) return + + const url = this.urlCache.get(file.path) + if (url) { + URL.revokeObjectURL(url) + this.urlCache.delete(file.path) + const imgs = this.imageElements.get(file.path) + imgs.forEach(img => { + const parentElement = img.parentElement + parentElement.empty() + this._createEmptyDiv( + parentElement, + file, + this.plugin._t('tip.fileDeleted'), + false + ) + }) + this.imageElements.delete(file.path) + } + const emptyDiv = this.emptyMap.get(file.path) + if (emptyDiv) { + emptyDiv.textContent = this.plugin._t('tip.fileDeleted') + emptyDiv.removeEventListener('dblclick', emptyDiv.dblclickHandler) + this.emptyMap.delete(file.path) + } + + this.deletePreviewSvgFile(file) + } + + async deletePreviewSvgFile(file) { + try { + const targetFileName = smmFilePathToFileName(file.path, '.svg') + const { embedImageIsSeparateFileFolder } = this.plugin.settings + const previewFilePath = embedImageIsSeparateFileFolder + ? `${embedImageIsSeparateFileFolder}/${targetFileName}` + : targetFileName + const exist = await this.plugin.app.vault.exists(previewFilePath) + console.log('删除预览图像文件:', previewFilePath, exist) + if (exist) { + await this.plugin.app.vault.adapter.remove(previewFilePath) + } + } catch (error) { + console.error('删除预览图像文件失败:', error) + } + } + + async handleModifySvgName(file, oldName) { + try { + oldName = smmFilePathToFileName(oldName, '.svg') + const { embedImageIsSeparateFileFolder } = this.plugin.settings + const oldPath = embedImageIsSeparateFileFolder + '/' + oldName + const exist = await this.plugin.app.vault.exists(oldPath) + if (exist) { + const newName = smmFilePathToFileName(file.name, '.svg') + const newPath = embedImageIsSeparateFileFolder + '/' + newName + await this.plugin.app.vault.adapter.rename(oldPath, newPath) + } + } catch (error) { + console.error('修改svg文件名失败:', error) + } + try { + const markdownLeafs = this.plugin.app.workspace.getLeavesOfType( + SMM_VIEW_TYPE + ) + for (const leaf of markdownLeafs) { + if ( + leaf.view instanceof SmmEditView && + leaf.view.file.path === file.path + ) { + leaf.view.forceSave(true) + break + } + } + } catch (error) { + console.error('保存失败:', error) + } + } + + register() { + this.plugin.registerMarkdownPostProcessor( + this._markdownPostProcessor.bind(this) + ) + } + + async _markdownPostProcessor(el, ctx) { + try { + if (this._isSpecialCard(el)) { + console.log('特殊卡片处理') + return this._processSpecialCard(el) + } + + const embeddedItems = el.querySelectorAll('.internal-embed') + if (embeddedItems.length === 0) { + await this._processEditMode(el, ctx) + } else { + await this._processReadingMode(embeddedItems, ctx) + } + } catch (error) { + console.error('Markdown处理失败:', error) + } + } + + _isSpecialCard(el) { + return ( + el.hasClass('components--DynamicDataView-PageCardCoverPreviewContent') && + el.children[0]?.getAttribute('data-heading') === 'metadata' && + el.children[2]?.getAttribute('data-heading') === 'svgdata' && + el.children[4]?.getAttribute('data-heading') === 'linkdata' + ) + } + + _processSpecialCard(el) { + el.classList.add('smmMindCard') + const svgdata = el.children[3].children[0].innerHTML + const url = this._getImgUrl(svgdata) + + const img = this._createSvgImageElement(url) + el.replaceChildren(img) + } + + _createEmptyDiv(containerEl, file, text, listenerDblclick = true) { + const emptyDiv = containerEl.createEl('div', { text }) + emptyDiv.style.color = 'var(--text-muted)' + emptyDiv.style.border = '1px dashed var(--text-muted)' + emptyDiv.style.padding = '10px' + emptyDiv.style.borderRadius = '4px' + emptyDiv.style.textAlign = 'center' + if (listenerDblclick) { + emptyDiv.dblclickHandler = () => { + const newWindow = this.plugin.settings.embedDblClickNewWindow + this.plugin.app.workspace.openLinkText(file?.path, '', newWindow) + } + emptyDiv.addEventListener('dblclick', emptyDiv.dblclickHandler) + } + return emptyDiv + } + + async _processEditMode(el, ctx) { + const file = this.plugin.app.vault.getFileByPath(ctx.sourcePath) + if (!this.plugin._isSmmFile(file)) return + if (ctx.remainingNestLevel !== undefined && ctx.remainingNestLevel < 4) + return + + let containerEl = this._findValidContainer(ctx.containerEl) + if (!containerEl || this._shouldSkipContainer(containerEl)) return + + try { + const data = await this.plugin.app.vault.read(file) + const img = await this._createImageFromFile(file, data) + containerEl.empty() + if (img) { + containerEl.appendChild(img) + this._updateImgSize(containerEl, img) + } else { + const emptyDiv = this._createEmptyDiv( + containerEl, + file, + this.plugin._t('tip.noPreviewImageInFile') + ) + this.emptyMap.set(file.path, emptyDiv) + } + if (containerEl.hasClass('markdown-embed')) { + containerEl.classList.remove('markdown-embed', 'inline-embed') + } + if (containerEl.hasClass('canvas-node-content')) { + containerEl.classList.add('smm-canvas-node-content') + } + } catch (error) { + console.error(`处理编辑模式失败: ${file?.path}`, error) + } + } + + async _processReadingMode(embeddedItems, ctx) { + for (const item of embeddedItems) { + try { + const fname = item.getAttribute('src')?.split('#')[0] + if (!fname) continue + + const file = this.plugin.app.metadataCache.getFirstLinkpathDest( + fname, + ctx.sourcePath + ) + if (!(file instanceof TFile) || !this.plugin._isSmmFile(file)) continue + const data = await this.plugin.app.vault.read(file) + const img = await this._createImageFromFile(file, data) + this._updateImgSize(item, img) + if (img) { + item.parentElement?.replaceChild(img, item) + } + } catch (error) { + console.error('处理嵌入项失败', error) + } + } + } + + _updateImgSize(containerEl, img) { + if ( + containerEl.parentNode && + containerEl.parentNode.classList.contains('popover') + ) { + containerEl.classList.add('smm-popover-img-preview-content') + } else { + const width = containerEl.getAttribute('width') + const height = containerEl.getAttribute('height') + if (width) { + img.width = width + } + if (height) { + img.height = height + } + } + } + + async _createImageFromFile(file, data) { + if (this.urlCache.has(file.path)) { + const url = this.urlCache.get(file.path) + return this._createSvgImageElement(url, file.path) + } + + const parsedata = parseMarkdownText(data) + const svgdata = parsedata.svgdata + if (!svgdata) { + return null + } + const url = this._getImgUrl(svgdata) + this.urlCache.set(file.path, url) + const img = this._createSvgImageElement(url, file.path) + return img + } + + _getImgUrl(svgdata) { + if (!svgdata) return '' + let url = '' + if (/^!\[\[/.test(svgdata)) { + const match = svgdata.match(/!\[\[([^\]]+)\]\]/) + if (match && match[1]) { + url = this.plugin.app.vault.adapter.getResourcePath(match[1]) + } + } else { + const svgBlob = dataURItoBlob(LZString.decompressFromBase64(svgdata)) + url = URL.createObjectURL(svgBlob) + } + return url + } + + _createSvgImageElement(url, filePath = '') { + const img = document.createElement('img') + img.src = url + img.draggable = false + + if (filePath) { + img.setAttribute('data-smm-file', filePath) + + img.addEventListener('dblclick', () => { + const newWindow = this.plugin.settings.embedDblClickNewWindow + this.plugin.app.workspace.openLinkText(filePath, '', newWindow) + }) + + if (!this.imageElements.has(filePath)) { + this.imageElements.set(filePath, new Set()) + } + this.imageElements.get(filePath).add(img) + + const observer = new MutationObserver(() => { + if (!document.contains(img)) { + this.imageElements.get(filePath)?.delete(img) + observer.disconnect() + } + }) + observer.observe(document.body, { subtree: true, childList: true }) + } + + return img + } + + _findValidContainer(containerEl) { + const invalidClasses = [ + 'dataview', + 'cm-preview-code-block', + 'cm-embed-block' + ] + + while (containerEl) { + if (invalidClasses.some(cls => containerEl.classList.contains(cls))) { + return null + } + + const isExcalidraw = containerEl.classList.contains('excalidraw-md-host') + if ( + containerEl.classList.contains('internal-embed') || + containerEl.classList.contains('markdown-embed') || + containerEl.classList.contains('markdown-reading-view') || + isExcalidraw + ) { + return containerEl + } + + containerEl = containerEl.parentElement + } + + return null + } + + _shouldSkipContainer(containerEl) { + return ( + containerEl.hasAttribute('ready') || + ['dataview', 'cm-preview-code-block', 'cm-embed-block'].some(cls => + containerEl.classList.contains(cls) + ) + ) + } +} diff --git a/src/ob/Menus.js b/src/ob/Menus.js new file mode 100644 index 0000000..cf4af56 --- /dev/null +++ b/src/ob/Menus.js @@ -0,0 +1,281 @@ +import { TFile, TFolder, Notice, MarkdownView } from 'obsidian' +import { + parseMarkdownText, + assembleMarkdownText +} from './metadataAndMarkdown.js' +import { hideTargetMenu } from './utils.js' +import { PreviewMindMap } from './PreviewMindMap.js' +import LZString from 'lz-string' +import { SMM_VIEW_TYPE, SMM_TAG } from './constant.js' +import { around } from 'monkey-around' +import markdown from 'simple-mind-map/src/parse/markdown.js' +import { showConfirmationDialog } from './ConfirmDialog.js' +import SmmEditView from '../SmmEditView.js' + +export default class Menus { + constructor(plugin) { + this.plugin = plugin + this.app = plugin.app + + this._addFileMenus() + } + + _t(key) { + return this.plugin._t(key) + } + + _addFileMenus() { + this.plugin.registerEvent( + this.app.workspace.on('file-menu', (menu, file) => { + if (file instanceof TFolder) { + menu.addItem(item => { + item + .setTitle(this._t('action.createMindMap')) + .setIcon('smm-icon') + .onClick(() => { + this.plugin._createSmmFile(file.path) + }) + }) + } else if (file instanceof TFile) { + if (this.plugin._isSmmFile(file)) { + hideTargetMenu(menu, '在新窗口中打开') + hideTargetMenu(menu, '移动至新窗口') + menu.addItem(item => + item + .setTitle(this._t('action.openAsMd')) + .setIcon('document') + .setSection('open') + .onClick(async () => { + await this.app.workspace.openLinkText(file.path, '') + const leaf = this.app.workspace.getLeaf(false) + const mdViewType = this.app.viewRegistry.getTypeByExtension( + 'md' + ) + await leaf.setViewState({ + type: mdViewType, + state: { + ...leaf.getViewState().state, + isSwitchToMarkdownViewFromSmmView: true + }, + active: true + }) + this.app.workspace.revealLeaf(leaf) + }) + ) + menu.addItem(item => + item + .setTitle(this._t('action.changeToMdFile')) + .setIcon('refresh-cw') + .setSection('open') + .onClick(async () => { + const confirmed = await showConfirmationDialog(this.app, { + content: this._t('tip.mindMapToMdTip') + }) + if (!confirmed) { + return + } + const content = await this.app.vault.read(file) + const result = parseMarkdownText(content) + const mindMapData = LZString.decompressFromBase64( + result.metadata.content + ) + let mdStr = '' + const tags = result.metadata.tags.filter(tag => { + return tag !== SMM_TAG + }) + if (tags.length) { + mdStr += 'tags:\n' + for (const tag of tags) { + mdStr += ` - ${tag}\n` + } + } + if (result.metadata.yaml) { + mdStr += result.metadata.yaml + } + if (mdStr) { + mdStr = '---\n' + mdStr + '---\n' + } + const { + nodeTextToMarkdownTitleMaxLevel + } = this.plugin.settings + const mdMindMap = markdown.transformToMarkdown( + JSON.parse(mindMapData).root, + nodeTextToMarkdownTitleMaxLevel + ) + mdStr += mdMindMap + let newPath = file.path.replace(/\.smm.*\.md$/g, '.md') + newPath = await this.plugin._getAvailableFilaName(newPath) + await this.app.vault.rename(file, newPath) + const renamedFile = this.app.vault.getFileByPath(newPath) + if (renamedFile) { + this.plugin.markdownPostProcessor.deletePreviewSvgFile(file) + this.app.noSaveOnClose = true + const markdownLeafs = this.app.workspace.getLeavesOfType( + SMM_VIEW_TYPE + ) + for (const leaf of markdownLeafs) { + if ( + leaf.view instanceof SmmEditView && + leaf.view.file.path === renamedFile.path + ) { + leaf.detach() + break + } + } + await this.app.vault.modify(renamedFile, mdStr) + this.app.noSaveOnClose = false + const ref = this.app.metadataCache.on( + 'changed', + changedFile => { + if (changedFile.path === renamedFile.path) { + this.app.metadataCache.offref(ref) + this.app.workspace.openLinkText( + renamedFile.path, + '', + true + ) + new Notice(this._t('tip.changeSuccess')) + } + } + ) + } + }) + ) + } + } + }) + ) + } + + addMarkdownFileMenus() { + const self = this + this.plugin.register( + around(MarkdownView.prototype, { + onPaneMenu(next) { + return function(menu, source) { + const res = next.apply(this, [menu, source]) + if (self.plugin._isSmmFile(this.file)) { + if (source === 'more-options') { + menu.addItem(item => + item + .setTitle(self._t('action.openAsMindMap')) + .setIcon('document') + .setSection('pane') + .onClick(() => { + self.plugin._setSmmView(this.leaf) + }) + ) + } + } else { + if (source === 'more-options') { + menu.addItem(item => + item + .setTitle(self._t('action.previewAsMindMap')) + .setIcon('smm-icon') + .setSection('pane') + .onClick(() => { + let previewMindMap = new PreviewMindMap({ + plugin: self.plugin, + file: this.file, + onClose: () => { + previewMindMap = null + } + }) + }) + ) + menu.addItem(item => + item + .setTitle(self._t('action.changeToMindMapFile')) + .setIcon('refresh-cw') + .setSection('pane') + .onClick(async () => { + const confirmed = await showConfirmationDialog(this.app, { + content: self._t('tip.mdToMindMapTip') + }) + if (!confirmed) { + return + } + let yaml = '' + const tagList = [] + await this.app.fileManager.processFrontMatter( + this.file, + frontmatter => { + if (frontmatter.tags) { + tagList.push(...frontmatter.tags) + delete frontmatter.tags + } + } + ) + if (!tagList.includes(SMM_TAG)) { + tagList.push(SMM_TAG) + } + const content = await this.app.vault.read(this.file) + if (content.startsWith('---\n')) { + yaml = content.split('---\n')[1] + } + const mindMapData = await self.plugin._mdToMindmapData( + content + ) + if (!mindMapData) { + new Notice(self._t('tip.mdToMindMapFail')) + return + } + let newPath = this.file.path.replace('.md', '.smm.md') + newPath = await self.plugin._getAvailableFilaName( + newPath, + 2 + ) + await this.app.vault.rename(this.file, newPath) + const renamedFile = this.app.vault.getFileByPath(newPath) + const str = assembleMarkdownText({ + metadata: { + path: `${newPath || ''}`, + tags: tagList, + yaml: yaml, + content: LZString.compressToBase64( + JSON.stringify(mindMapData) + ) + }, + svgdata: '', + linkdata: [] + }) + if (renamedFile) { + const markdownLeafs = this.app.workspace.getLeavesOfType( + 'markdown' + ) + for (const leaf of markdownLeafs) { + if ( + leaf.view instanceof MarkdownView && + leaf.view.file.path === renamedFile.path + ) { + leaf.detach() + break + } + } + await this.app.vault.modify(renamedFile, str) + const ref = this.app.metadataCache.on( + 'changed', + changedFile => { + if (changedFile.path === renamedFile.path) { + this.app.metadataCache.offref(ref) + this.app.workspace.openLinkText( + renamedFile.path, + '', + true + ) + new Notice(self._t('tip.changeSuccess')) + } + } + ) + } + }) + ) + } + } + return res + } + } + }) + ) + } +} diff --git a/src/ob/ModifyFileName.js b/src/ob/ModifyFileName.js new file mode 100644 index 0000000..8408424 --- /dev/null +++ b/src/ob/ModifyFileName.js @@ -0,0 +1,104 @@ +export default class ModifyFileName { + constructor(view) { + this.view = view + this.plugin = view.plugin + this.app = view.app + this.titleEl = null + } + + setupTitleEditing() { + this.titleEl = this.getTitleElement() + if (!this.titleEl) return + this.titleEl.setAttribute('contenteditable', 'true') + this.onBlur = this.onBlur.bind(this) + this.titleEl.addEventListener('blur', this.onBlur) + this.onKeydown = this.onKeydown.bind(this) + this.titleEl.addEventListener('keydown', this.onKeydown) + } + + getTitleElement() { + return this.view.containerEl.querySelector('.view-header-title') + } + + async finishEditing(accept) { + if (!this.titleEl.isConnected) return + const file = this.view.file + if (!file) return + const originalName = file.basename + if (accept) { + const newName = this.titleEl.textContent.trim() + if (!newName) { + new Notice(this.plugin._t('tip.fileNameEmpty')) + return + } + this.titleEl.innerHTML = newName + if (newName === originalName) return + try { + const parentPath = file.parent.path + const extension = file.extension + const newPath = `${parentPath}${ + parentPath !== '/' ? '/' : '' + }${newName}${extension ? '.' + extension : ''}` + if (!/^[^<>:"/\\|?*]+$/.test(newName)) { + new Notice(this.plugin._t('tip.fileNameIllegal')) + return + } + const existingFile = + this.app.vault.getFileByPath(newPath) || + this.app.vault.getFileByPath(newPath.replace(/^\//, '')) + if (existingFile) { + new Notice(this.plugin._t('tip.fileExist')) + return + } + await this.app.fileManager.renameFile(file, newPath) + } catch (error) { + console.error('重命名文件失败:', error) + new Notice(this.plugin._t('tip.fileRenameFail')) + } + } else { + this.titleEl.innerHTML = originalName + const selection = window.getSelection() + const range = document.createRange() + let lastTextNode = null + const walker = document.createTreeWalker( + this.titleEl, + NodeFilter.SHOW_TEXT, + null, + false + ) + let node + while ((node = walker.nextNode())) { + lastTextNode = node + } + range.setStart( + lastTextNode, + /\.smm$/.test(lastTextNode.textContent) + ? lastTextNode.length - 4 + : lastTextNode.length + ) + range.collapse(true) + selection.removeAllRanges() + selection.addRange(range) + } + } + + onBlur() { + this.finishEditing(true) + } + + onKeydown(e) { + if (e.key === 'Enter') { + this.finishEditing(true) + } else if (e.key === 'Escape') { + this.finishEditing(false) + } + } + + unload() { + if (this.titleEl) { + this.titleEl.removeAttribute('contenteditable') + this.titleEl.removeEventListener('blur', this.onBlur) + this.titleEl.removeEventListener('keydown', this.onKeydown) + } + } +} diff --git a/src/ob/PreviewMindMap.js b/src/ob/PreviewMindMap.js new file mode 100644 index 0000000..f9effa6 --- /dev/null +++ b/src/ob/PreviewMindMap.js @@ -0,0 +1,59 @@ +import { initPreviewModeApp } from '../src/main' + +export class PreviewMindMap { + constructor({ plugin, file, onClose }) { + this.app = plugin.app + this.plugin = plugin + this.file = file + this.onClose = onClose + + this.previewModeApp = null + this.container = document.createElement('div') + this.wrap = document.createElement('div') + this.container.appendChild(this.wrap) + this.container.classList.add('smm-preview-md-to-mindmap-container') + document.body.appendChild(this.container) + this._renderView() + } + + async _renderView() { + const content = await this.app.vault.read(this.file) + const mindMapData = await this.plugin._mdToMindmapData(content) + this.previewModeApp = initPreviewModeApp(this.wrap, { + getInitMindMapData: () => { + return mindMapData + }, + getMindMapOptions: () => { + return { + readonly: true, + fit: true + } + }, + getFile: () => { + return this.file + }, + getSettings: () => { + return this.plugin.settings || {} + }, + getMindMapLocalConfig: () => { + const { mindMapLocalConfig, themeMode } = this.plugin.settings + const config = mindMapLocalConfig || {} + config.isDark = + themeMode === 'follow' + ? this.plugin._getObIsDark() + : themeMode === 'dark' + return config + } + }) + this.previewModeApp.$bus.$on('closePreviewMode', this._close.bind(this)) + } + + _close() { + this.previewModeApp.$destroy() + document.body.removeChild(this.container) + this.previewModeApp = null + this.container = null + this.wrap = null + this.onClose() + } +} diff --git a/src/ob/SmmSettingTab.js b/src/ob/SmmSettingTab.js new file mode 100644 index 0000000..61e1794 --- /dev/null +++ b/src/ob/SmmSettingTab.js @@ -0,0 +1,781 @@ +import { PluginSettingTab, Setting, Notice, normalizePath } from 'obsidian' +import themeList from 'simple-mind-map-plugin-themes/themeList' +import { layoutGroupList } from '../src/config' +import { GITHUB_ICON, COMMUNITY_ICON } from './constant' +import { DEFAULT_SETTINGS } from './constant' +import { SuggestionModal } from './SuggestionModal' +import { TextInfoDialog } from './TextInfoDialog' +import { fragWithHTML } from './utils' + +const validateInteger = (value, defaultValue = 0, errorTip) => { + value = Number(value) + if (!Number.isNaN(value) && value > 0) { + return value + } else { + new Notice(errorTip) + return defaultValue + } +} + +export default class SmmSettingTab extends PluginSettingTab { + constructor(app, plugin) { + super(app, plugin) + this.plugin = plugin + this.filePathSettings = null + this.imagePathSettings = null + this.imageSubPathSettings = null + this.attachmentPathSettings = null + this.attachmentSubPathSettings = null + this.compressImageOptionsMaxWidthSettings = null + this.compressImageOptionsMaxHeightSettings = null + this.compressImageOptionsQualitySettings = null + this.embedImageIsSeparateFileFolderSettings = null + } + + display() { + const { containerEl } = this + containerEl.empty() + + this._addBaseSetting() + + this._addFileSaveSetting() + + this._addCompressSetting() + + this._addImageHostingSetting() + + this._addEmbedSetting() + + this._addHelpInfo() + } + + _addBaseSetting() { + const { containerEl } = this + + new Setting(containerEl) + .setName(this.plugin._t('setting.autoSave.title')) + .setDesc(this.plugin._t('setting.autoSave.desc')) + .addText(text => { + text + .setValue(String(this.plugin.settings.autoSaveTime)) + .onChange(async value => { + value = validateInteger( + value, + DEFAULT_SETTINGS.autoSaveTime, + this.plugin._t('tip.integerInputError') + ) + this.plugin.settings.autoSaveTime = value + await this.plugin._saveSettings() + }) + }) + + new Setting(containerEl) + .setName(this.plugin._t('setting.themeMode.title')) + .setDesc(this.plugin._t('setting.themeMode.desc')) + .addDropdown(dropdown => { + ;[ + { + name: this.plugin._t('setting.themeMode.option1'), + value: 'follow' + }, + { + name: this.plugin._t('setting.themeMode.option2'), + value: 'light' + }, + { + name: this.plugin._t('setting.themeMode.option3'), + value: 'dark' + } + ].forEach(item => { + dropdown.addOption(item.value, item.name) + }) + dropdown + .setValue(this.plugin.settings.themeMode) + .onChange(async value => { + this.plugin.settings.themeMode = value + await this.plugin._saveSettings() + }) + }) + + const allThemeList = [ + { + name: this.plugin._t('setting.theme.title'), + value: 'default', + dark: false + }, + ...themeList + ].reverse() + new Setting(containerEl) + .setName(this.plugin._t('setting.theme.title')) + .setDesc(this.plugin._t('setting.theme.desc')) + .addDropdown(dropdown => { + allThemeList.forEach(item => { + dropdown.addOption(item.value, item.name) + }) + dropdown + .setValue(this.plugin.settings.defaultTheme) + .onChange(async value => { + this.plugin.settings.defaultTheme = value + await this.plugin._saveSettings() + }) + }) + new Setting(containerEl) + .setName(this.plugin._t('setting.theme.title2')) + .setDesc(this.plugin._t('setting.theme.desc2')) + .addDropdown(dropdown => { + allThemeList.forEach(item => { + dropdown.addOption(item.value, item.name) + }) + dropdown + .setValue(this.plugin.settings.defaultThemeDark) + .onChange(async value => { + this.plugin.settings.defaultThemeDark = value + await this.plugin._saveSettings() + }) + }) + + const allLayoutList = [] + ;(layoutGroupList[this.plugin.settings.lang] || layoutGroupList.en).forEach( + item => { + allLayoutList.push( + ...item.list.map((item2, index) => { + return { + name: item.name + (item.list.length > 1 ? index + 1 : ''), + value: item2 + } + }) + ) + } + ) + new Setting(containerEl) + .setName(this.plugin._t('setting.layout.title')) + .setDesc(this.plugin._t('setting.layout.desc')) + .addDropdown(dropdown => { + allLayoutList.forEach(item => { + dropdown.addOption(item.value, item.name) + }) + dropdown + .setValue(this.plugin.settings.defaultLayout) + .onChange(async value => { + this.plugin.settings.defaultLayout = value + await this.plugin._saveSettings() + }) + }) + } + + _addFileSaveSetting() { + const { containerEl } = this + + this._setHeader(containerEl, this.plugin._t('setting.title.title2')) + + new Setting(containerEl) + .setName(this.plugin._t('setting.file.title1')) + .setDesc(this.plugin._t('setting.file.desc1')) + .addText(text => { + text + .setValue(this.plugin.settings.fileNameFormat) + .onChange(async value => { + this.plugin.settings.fileNameFormat = value.trim() + ? value.trim() + : DEFAULT_SETTINGS.fileNameFormat + await this.plugin._saveSettings() + }) + }) + .addExtraButton(button => + button + .setIcon('help') + .setTooltip(this.plugin._t('setting.file.filenameFormatDesc')) + .onClick(async () => { + new TextInfoDialog(this.app, { + title: this.plugin._t('setting.file.filenameFormatDesc'), + html: this.plugin._t('html.filenameFormatDesc') + }).open() + }) + ) + + new Setting(containerEl) + .setName(this.plugin._t('setting.file.title3')) + .setDesc(this.plugin._t('setting.file.desc3')) + .addText(text => { + text + .setValue(this.plugin.settings.nodePasteImageNameFormat) + .onChange(async value => { + this.plugin.settings.nodePasteImageNameFormat = value.trim() + ? value.trim() + : DEFAULT_SETTINGS.nodePasteImageNameFormat + await this.plugin._saveSettings() + }) + }) + .addExtraButton(button => + button + .setIcon('help') + .setTooltip(this.plugin._t('setting.file.filenameFormatDesc')) + .onClick(async () => { + new TextInfoDialog(this.app, { + title: this.plugin._t('setting.file.filenameFormatDesc'), + html: this.plugin._t('html.filenameFormatDesc') + }).open() + }) + ) + + new Setting(containerEl) + .setName(this.plugin._t('setting.folder.title4')) + .setDesc(this.plugin._t('setting.folder.desc4')) + .addDropdown(dropdown => { + this._getFilePathOptions().forEach(item => { + dropdown.addOption(item.value, item.name) + }) + dropdown + .setValue(this.plugin.settings.filePathType) + .onChange(async value => { + this.plugin.settings.filePathType = value + await this.plugin._saveSettings() + this._updateFilePathSettingsVisibility() + }) + }) + this.filePathSettings = new Setting(containerEl) + .setName(this.plugin._t('setting.folder.title1')) + .setDesc(this.plugin._t('setting.folder.desc1')) + .addText(text => { + text.setValue(this.plugin.settings.filePath).onChange(async value => { + this.plugin.settings.filePath = normalizePath(value) + await this.plugin._saveSettings() + }) + this._addFolderSelectBtn(text, selected => { + this.plugin.settings.filePath = normalizePath(selected) + this.plugin._saveSettings() + }) + }) + this.filePathSettings.settingEl.className += ' smm-setting-sub-item' + this._updateFilePathSettingsVisibility() + + new Setting(containerEl) + .setName(this.plugin._t('setting.folder.title5')) + .setDesc(this.plugin._t('setting.folder.desc5')) + .addDropdown(dropdown => { + this._getFilePathOptions(true).forEach(item => { + dropdown.addOption(item.value, item.name) + }) + dropdown + .setValue(this.plugin.settings.imagePathType) + .onChange(async value => { + this.plugin.settings.imagePathType = value + await this.plugin._saveSettings() + this._updateImagePathSettingsVisibility() + }) + }) + this.imagePathSettings = new Setting(containerEl) + .setName(this.plugin._t('setting.folder.title2')) + .setDesc(this.plugin._t('setting.folder.desc2')) + .addText(text => { + text.setValue(this.plugin.settings.imagePath).onChange(async value => { + this.plugin.settings.imagePath = normalizePath(value) + await this.plugin._saveSettings() + }) + this._addFolderSelectBtn(text, selected => { + this.plugin.settings.imagePath = normalizePath(selected) + this.plugin._saveSettings() + }) + }) + this.imagePathSettings.settingEl.className += ' smm-setting-sub-item' + this.imageSubPathSettings = new Setting(containerEl) + .setName(this.plugin._t('setting.folder.title6')) + .setDesc(this.plugin._t('setting.folder.desc6')) + .addText(text => { + text + .setValue(this.plugin.settings.imageSubPath) + .onChange(async value => { + this.plugin.settings.imageSubPath = normalizePath(value) + await this.plugin._saveSettings() + }) + this._addFolderSelectBtn(text, selected => { + this.plugin.settings.imageSubPath = normalizePath(selected) + this.plugin._saveSettings() + }) + }) + this.imageSubPathSettings.settingEl.className += ' smm-setting-sub-item' + this._updateImagePathSettingsVisibility() + + new Setting(containerEl) + .setName(this.plugin._t('setting.folder.title7')) + .setDesc(this.plugin._t('setting.folder.desc7')) + .addDropdown(dropdown => { + this._getFilePathOptions(true).forEach(item => { + dropdown.addOption(item.value, item.name) + }) + dropdown + .setValue(this.plugin.settings.attachmentPathType) + .onChange(async value => { + this.plugin.settings.attachmentPathType = value + await this.plugin._saveSettings() + this._updateAttachmentPathSettingsVisibility() + }) + }) + this.attachmentPathSettings = new Setting(containerEl) + .setName(this.plugin._t('setting.folder.title3')) + .setDesc(this.plugin._t('setting.folder.desc3')) + .addText(text => { + text + .setValue(this.plugin.settings.attachmentPath) + .onChange(async value => { + this.plugin.settings.attachmentPath = normalizePath(value) + await this.plugin._saveSettings() + }) + this._addFolderSelectBtn(text, selected => { + this.plugin.settings.attachmentPath = normalizePath(selected) + this.plugin._saveSettings() + }) + }) + this.attachmentPathSettings.settingEl.className += ' smm-setting-sub-item' + this.attachmentSubPathSettings = new Setting(containerEl) + .setName(this.plugin._t('setting.folder.title6')) + .setDesc(this.plugin._t('setting.folder.desc6')) + .addText(text => { + text + .setValue(this.plugin.settings.attachmentSubPath) + .onChange(async value => { + this.plugin.settings.attachmentSubPath = value + await this.plugin._saveSettings() + }) + this._addFolderSelectBtn(text, selected => { + this.plugin.settings.attachmentSubPath = selected + this.plugin._saveSettings() + }) + }) + this.attachmentSubPathSettings.settingEl.className += + ' smm-setting-sub-item' + this._updateAttachmentPathSettingsVisibility() + + new Setting(containerEl) + .setName(this.plugin._t('setting.folder.title8')) + .setDesc(this.plugin._t('setting.folder.desc8')) + .addToggle(toggle => { + toggle + .setValue(this.plugin.settings.supportObSearch) + .onChange(async value => { + this.plugin.settings.supportObSearch = value + await this.plugin._saveSettings() + }) + }) + + new Setting(containerEl) + .setName(this.plugin._t('setting.folder.title9')) + .setDesc(this.plugin._t('setting.folder.desc9')) + .addToggle(toggle => { + toggle + .setValue(this.plugin.settings.saveCanvasViewData) + .onChange(async value => { + this.plugin.settings.saveCanvasViewData = value + await this.plugin._saveSettings() + }) + }) + + new Setting(containerEl) + .setName(this.plugin._t('setting.folder.title10')) + .setDesc(this.plugin._t('setting.folder.desc10')) + .addDropdown(dropdown => { + new Array(6).fill(0).forEach((_, index) => { + dropdown.addOption(index + 1, index + 1) + }) + dropdown + .setValue(this.plugin.settings.nodeTextToMarkdownTitleMaxLevel) + .onChange(async value => { + this.plugin.settings.nodeTextToMarkdownTitleMaxLevel = value + await this.plugin._saveSettings() + }) + }) + } + + _addCompressSetting() { + const { containerEl } = this + + this._setHeader(containerEl, this.plugin._t('setting.title.title3')) + + new Setting(containerEl) + .setName(this.plugin._t('setting.compress.title1')) + .setDesc(this.plugin._t('setting.compress.desc1')) + .addToggle(toggle => { + toggle + .setValue(this.plugin.settings.compressImage) + .onChange(async value => { + this.plugin.settings.compressImage = value + await this.plugin._saveSettings() + this._updateCompressImageSettingsVisibility() + }) + }) + + this.compressImageOptionsMaxWidthSettings = new Setting(containerEl) + .setName(this.plugin._t('setting.compress.title2')) + .setDesc(this.plugin._t('setting.compress.desc2')) + .addText(text => { + text + .setValue(String(this.plugin.settings.compressImageOptionsMaxWidth)) + .onChange(async value => { + value = validateInteger( + value, + DEFAULT_SETTINGS.compressImageOptionsMaxWidth, + this.plugin._t('tip.integerInputError') + ) + this.plugin.settings.compressImageOptionsMaxWidth = value + await this.plugin._saveSettings() + }) + }) + this.compressImageOptionsMaxWidthSettings.settingEl.className += + ' smm-setting-sub-item' + this.compressImageOptionsMaxHeightSettings = new Setting(containerEl) + .setName(this.plugin._t('setting.compress.title3')) + .setDesc(this.plugin._t('setting.compress.desc3')) + .addText(text => { + text + .setValue(String(this.plugin.settings.compressImageOptionsMaxHeight)) + .onChange(async value => { + value = validateInteger( + value, + DEFAULT_SETTINGS.compressImageOptionsMaxHeight, + this.plugin._t('tip.integerInputError') + ) + this.plugin.settings.compressImageOptionsMaxHeight = value + await this.plugin._saveSettings() + }) + }) + this.compressImageOptionsMaxHeightSettings.settingEl.className += + ' smm-setting-sub-item' + this.compressImageOptionsQualitySettings = new Setting(containerEl) + .setName(this.plugin._t('setting.compress.title4')) + .setDesc( + `${this.plugin._t('setting.compress.desc4')},${this.plugin._t( + 'setting.compress.curValue' + )}: ${this.plugin.settings.compressImageOptionsQuality}` + ) + .addSlider(slider => + slider + .setLimits(0, 1, 0.1) + .setValue(this.plugin.settings.compressImageOptionsQuality) + .onChange(async value => { + this.plugin.settings.compressImageOptionsQuality = value + this.compressImageOptionsQualitySettings?.setDesc( + `${this.plugin._t('setting.compress.desc4')},${this.plugin._t( + 'setting.compress.curValue' + )}: ${value}` + ) + await this.plugin._saveSettings() + }) + ) + .addExtraButton(button => + button + .setIcon('reset') + .setTooltip(this.plugin._t('setting.compress.reset')) + .onClick(async () => { + const defaultValue = DEFAULT_SETTINGS.compressImageOptionsQuality + this.plugin.settings.compressImageOptionsQuality = defaultValue + const sliderEl = this.compressImageOptionsQualitySettings + ?.components[0] + if (sliderEl) { + sliderEl.setValue(defaultValue) + this.plugin.settings.compressImageOptionsQuality = defaultValue + this.compressImageOptionsQualitySettings?.setDesc( + `${this.plugin._t( + 'setting.compress.curValue' + )}: ${defaultValue}` + ) + } + await this.plugin._saveSettings() + }) + ) + this.compressImageOptionsQualitySettings.settingEl.className += + ' smm-setting-sub-item' + this._updateCompressImageSettingsVisibility() + } + + _addEmbedSetting() { + const { containerEl } = this + + this._setHeader(containerEl, this.plugin._t('setting.title.title4')) + + new Setting(containerEl) + .setName(this.plugin._t('setting.embed.title3')) + .setDesc(this.plugin._t('setting.embed.desc3')) + .addToggle(toggle => { + toggle + .setValue(this.plugin.settings.embedImageIsSeparateFile) + .onChange(async value => { + this.plugin.settings.embedImageIsSeparateFile = value + this._updateEmbedImageFileFolderSettingsVisibility() + await this.plugin._saveSettings() + }) + }) + + this.embedImageIsSeparateFileFolderSettings = new Setting(containerEl) + .setName(this.plugin._t('setting.embed.title4')) + .setDesc(this.plugin._t('setting.embed.desc4')) + .addText(text => { + text + .setValue(this.plugin.settings.embedImageIsSeparateFileFolder) + .onChange(async value => { + this.plugin.settings.embedImageIsSeparateFileFolder = value + await this.plugin._saveSettings() + }) + this._addFolderSelectBtn(text, selected => { + this.plugin.settings.embedImageIsSeparateFileFolder = selected + this.plugin._saveSettings() + }) + }) + this.embedImageIsSeparateFileFolderSettings.settingEl.className += + ' smm-setting-sub-item' + this._updateEmbedImageFileFolderSettingsVisibility() + + new Setting(containerEl) + .setName(this.plugin._t('setting.embed.title2')) + .setDesc(this.plugin._t('setting.embed.desc2')) + .addToggle(toggle => { + toggle + .setValue(this.plugin.settings.compressImageIsTransparent) + .onChange(async value => { + this.plugin.settings.compressImageIsTransparent = value + await this.plugin._saveSettings() + }) + }) + + new Setting(containerEl) + .setName(this.plugin._t('setting.embed.title1')) + .setDesc(this.plugin._t('setting.embed.desc1')) + .addToggle(toggle => { + toggle + .setValue(this.plugin.settings.embedDblClickNewWindow) + .onChange(async value => { + this.plugin.settings.embedDblClickNewWindow = value + await this.plugin._saveSettings() + }) + }) + + new Setting(containerEl) + .setName(this.plugin._t('setting.embed.title5')) + .setDesc(this.plugin._t('setting.embed.desc5')) + .addToggle(toggle => { + toggle + .setValue(this.plugin.settings.embedLinkNewWindowOpen) + .onChange(async value => { + this.plugin.settings.embedLinkNewWindowOpen = value + await this.plugin._saveSettings() + }) + }) + } + + _addFolderSelectBtn(text, callback = () => {}) { + const inputEl = text.inputEl + const suggestionButton = inputEl.parentElement?.createEl('button', { + text: this.plugin._t('setting.button.select'), + cls: 'suggestion-button' + }) + suggestionButton?.addEventListener('click', () => { + new SuggestionModal({ + plugin: this.plugin, + type: 'folder', + app: this.app, + onSelect: selected => { + text.setValue(selected) + inputEl.focus() + callback(selected) + } + }).open() + }) + } + + _getFilePathOptions(full = false) { + const res = [ + { + name: this.plugin._t('setting.folder.option1'), + value: 'root' + }, + { + name: this.plugin._t('setting.folder.option2'), + value: 'custom' + }, + { + name: this.plugin._t('setting.folder.option3'), + value: 'currentFileFolder' + } + ] + if (full) { + res.push({ + name: this.plugin._t('setting.folder.option4'), + value: 'currentFileFolderSubFolder' + }) + } + return res + } + + _updateEmbedImageFileFolderSettingsVisibility() { + const isVisible = this.plugin.settings.embedImageIsSeparateFile + if (this.embedImageIsSeparateFileFolderSettings) { + this.embedImageIsSeparateFileFolderSettings.settingEl.classList[ + isVisible ? 'remove' : 'add' + ]('smm-setting-item-hide') + } + } + + _updateFilePathSettingsVisibility() { + const isVisible = this.plugin.settings.filePathType === 'custom' + if (this.filePathSettings) { + this.filePathSettings.settingEl.classList[isVisible ? 'remove' : 'add']( + 'smm-setting-item-hide' + ) + } + } + + _updateImagePathSettingsVisibility() { + const isVisible = this.plugin.settings.imagePathType === 'custom' + if (this.imagePathSettings) { + this.imagePathSettings.settingEl.classList[isVisible ? 'remove' : 'add']( + 'smm-setting-item-hide' + ) + } + const isVisibleSub = + this.plugin.settings.imagePathType === 'currentFileFolderSubFolder' + if (this.imageSubPathSettings) { + this.imageSubPathSettings.settingEl.classList[ + isVisibleSub ? 'remove' : 'add' + ]('smm-setting-item-hide') + } + } + + _updateAttachmentPathSettingsVisibility() { + const isVisible = this.plugin.settings.attachmentPathType === 'custom' + if (this.attachmentPathSettings) { + this.attachmentPathSettings.settingEl.classList[ + isVisible ? 'remove' : 'add' + ]('smm-setting-item-hide') + } + const isVisibleSub = + this.plugin.settings.attachmentPathType === 'currentFileFolderSubFolder' + if (this.attachmentSubPathSettings) { + this.attachmentSubPathSettings.settingEl.classList[ + isVisibleSub ? 'remove' : 'add' + ]('smm-setting-item-hide') + } + } + + _updateCompressImageSettingsVisibility() { + const isVisible = this.plugin.settings.compressImage + if (this.compressImageOptionsMaxWidthSettings) { + this.compressImageOptionsMaxWidthSettings.settingEl.classList[ + isVisible ? 'remove' : 'add' + ]('smm-setting-item-hide') + } + if (this.compressImageOptionsMaxHeightSettings) { + this.compressImageOptionsMaxHeightSettings.settingEl.classList[ + isVisible ? 'remove' : 'add' + ]('smm-setting-item-hide') + } + if (this.compressImageOptionsQualitySettings) { + this.compressImageOptionsQualitySettings.settingEl.classList[ + isVisible ? 'remove' : 'add' + ]('smm-setting-item-hide') + } + } + + _addImageHostingSetting() { + const { containerEl } = this + + this._setHeader(containerEl, this.plugin._t('setting.title.title6')) + + // 是否开启图床 + new Setting(containerEl) + .setName(this.plugin._t('setting.imageHosting.title1')) + .setDesc(this.plugin._t('setting.imageHosting.desc1')) + .addToggle(toggle => { + toggle + .setValue(this.plugin.settings.useImgHosting) + .onChange(async value => { + if ( + value && + (!this.plugin.settings.imgHostingUrl || + !this.plugin.settings.imgHostingFormField || + !this.plugin.settings.imgHostingResponseField) + ) { + toggle.setValue(false) + new Notice(this.plugin._t('setting.imageHosting.tip1')) + return + } + this.plugin.settings.useImgHosting = value + await this.plugin._saveSettings() + }) + }) + + // 图床url + new Setting(containerEl) + .setName(this.plugin._t('setting.imageHosting.title2')) + .setDesc(this.plugin._t('setting.imageHosting.desc2')) + .addText(text => { + text + .setValue(String(this.plugin.settings.imgHostingUrl)) + .onChange(async value => { + this.plugin.settings.imgHostingUrl = value + await this.plugin._saveSettings() + }) + }) + + // 表单字段 + new Setting(containerEl) + .setName(this.plugin._t('setting.imageHosting.title3')) + .setDesc(this.plugin._t('setting.imageHosting.desc3')) + .addText(text => { + text + .setValue(String(this.plugin.settings.imgHostingFormField)) + .onChange(async value => { + this.plugin.settings.imgHostingFormField = value + await this.plugin._saveSettings() + }) + }) + + // 接口响应结构 + new Setting(containerEl) + .setName(this.plugin._t('setting.imageHosting.title4')) + .setDesc( + fragWithHTML( + this.plugin._t('setting.imageHosting.desc4') + + '' + + this.plugin._t('setting.imageHosting.desc5') + + '。' + ) + ) + .addText(text => { + text + .setValue(String(this.plugin.settings.imgHostingResponseField)) + .onChange(async value => { + this.plugin.settings.imgHostingResponseField = value + await this.plugin._saveSettings() + }) + }) + } + + _addOtherSetting() { + const { containerEl } = this + + this._setHeader(containerEl, this.plugin._t('setting.title.title5')) + } + + // 设置标题 + _setHeader(containerEl, title) { + new Setting(containerEl).setName(title).setHeading() + } + + _addHelpInfo() { + const { containerEl } = this + const linkEl = containerEl.createDiv('setting-item smm-setting-link-list') + linkEl.innerHTML = ` + + + ` + } +} diff --git a/src/ob/SuggestionModal.js b/src/ob/SuggestionModal.js new file mode 100644 index 0000000..fe906d2 --- /dev/null +++ b/src/ob/SuggestionModal.js @@ -0,0 +1,39 @@ +import { SuggestModal } from 'obsidian' + +export class SuggestionModal extends SuggestModal { + constructor({ plugin, app, getSuggestions, onSelect, type }) { + super(app) + this.plugin = plugin + this.emptyStateText = this.plugin._t('tip.noMatchResult') + this.type = type + if (this.type === 'folder') { + this.getSuggestions = this._queryFolders.bind(this) + } else { + this.getSuggestions = getSuggestions + } + this.onSelect = onSelect + } + + _queryFolders(query) { + const list = this.app.vault.getAllFolders() + return list + .filter(item => { + return item.path.toLowerCase().includes(query) + }) + .map(item => { + return item.path + }) + } + + getSuggestions(query) { + return this.getSuggestions(query) + } + + renderSuggestion(suggestion, el) { + el.createEl('div', { text: suggestion }) + } + + onChooseSuggestion(suggestion) { + this.onSelect(suggestion) + } +} diff --git a/src/ob/TextInfoDialog.js b/src/ob/TextInfoDialog.js new file mode 100644 index 0000000..4cbd4eb --- /dev/null +++ b/src/ob/TextInfoDialog.js @@ -0,0 +1,34 @@ +import { Modal } from 'obsidian' +import i18n from 'i18next' + +export class TextInfoDialog extends Modal { + constructor(app, params = {}) { + super(app) + this.params = { + title: '', + html: '', + closeText: i18n.t('tip.close'), + ...params + } + this.setTitle(this.params.title) + } + + onOpen() { + const { contentEl } = this + contentEl.empty() + const contentContainer = contentEl.createDiv('smm-text-info-dialog-content') + contentContainer.innerHTML = this.params.html + const buttonContainer = contentEl.createDiv('smm-text-info-dialog-buttons') + const closeBtn = buttonContainer.createEl('button', { + text: this.params.closeText + }) + closeBtn.addEventListener('click', () => { + this.close() + }) + } + + onClose() { + const { contentEl } = this + contentEl.empty() + } +} diff --git a/src/ob/constant.js b/src/ob/constant.js new file mode 100644 index 0000000..9e94c8a --- /dev/null +++ b/src/ob/constant.js @@ -0,0 +1,90 @@ +export const SMM_VIEW_TYPE = 'smm' + +export const SMM_TAG = 'simplemindmap' + +export const getDefaultSmmData = (options = {}) => { + const theme = options.theme || 'classic13' + const layout = options.layout || 'logicalStructure' + const rootNodeDefaultText = options.rootNodeDefaultText || 'Root node' // 根节点 + const secondNodeDefaultText = options.secondNodeDefaultText || 'Second node' // 二级节点 + const branchNodeDefaultText = options.branchNodeDefaultText || 'Branch node' // 分支主题 + return { + root: { + data: { text: rootNodeDefaultText }, + children: [ + { + data: { text: secondNodeDefaultText }, + children: [ + { data: { text: branchNodeDefaultText }, children: [] }, + { data: { text: branchNodeDefaultText }, children: [] } + ] + } + ] + }, + theme: { template: theme, config: {} }, + layout + } +} + +export const DEFAULT_SETTINGS = { + isFirstUse: true, + fileNameFormat: 'MindMap {date:YYYY-MM-DD HH.mm.ss}', + lang: 'zh', + themeMode: 'follow', + defaultLayout: 'logicalStructure', + defaultTheme: 'classic13', + defaultThemeDark: 'classic', + filePathType: 'root', + filePath: '', + imagePathType: 'currentFileFolder', + imagePath: '', + imageSubPath: '', + attachmentPathType: 'currentFileFolder', + attachmentPath: '', + attachmentSubPath: '', + compressImage: true, + compressImageOptionsMaxWidth: 1200, + compressImageOptionsMaxHeight: 1200, + compressImageOptionsQuality: 0.8, + compressImageIsTransparent: false, + embedDblClickNewWindow: true, + autoSaveTime: 5, + mindMapConfig: null, + mindMapLocalConfig: null, + supportObSearch: true, + saveCanvasViewData: true, + nodeTextToMarkdownTitleMaxLevel: 3, + embedImageIsSeparateFile: true, + embedImageIsSeparateFileFolder: '.smm-embed-image-files', + nodePasteImageNameFormat: '{notename}_pasteImage', + embedLinkNewWindowOpen: true, + useImgHosting: false, + imgHostingUrl: 'http://127.0.0.1:36677/upload', + imgHostingFormField: 'files', + imgHostingResponseField: 'data.result[0]' +} + +let smmEditViewCount = 0 +export const getSmmEditViewCount = () => { + return smmEditViewCount++ +} + +export const IGNORE_CHECK_SMM = 'ignoreCheckSmm' + +export const SIDE_BAR_ICON = `` + +export const SAVE_ICON = `` + +export const IMPORT_ICON = `` + +export const EXPORT_ICON = `` + +export const OUTLINE_ICON = `` + +export const MINDMAP_ICON = `` + +export const PRINT_ICON = `` + +export const GITHUB_ICON = `` + +export const COMMUNITY_ICON = `` diff --git a/src/ob/metadataAndMarkdown.js b/src/ob/metadataAndMarkdown.js new file mode 100644 index 0000000..38b3197 --- /dev/null +++ b/src/ob/metadataAndMarkdown.js @@ -0,0 +1,147 @@ +import { getDefaultSmmData, SMM_TAG } from './constant' +import LZString from 'lz-string' +import i18n from 'i18next' + +export const parseMarkdownText = text => { + const result = { + metadata: { path: '', tags: [], yaml: '', content: '' }, + svgdata: '', + svgdataUpdateAt: '', + linkdata: [], + textdata: [] + } + + const lines = text.split('\n') + let currentSection = '' + let inCodeBlock = false + let inYamlHeader = false + let inTags = false + let codeBlockContent = [] + + for (const line of lines) { + if (line.trim() === '---') { + inYamlHeader = !inYamlHeader + continue + } + + if (line.startsWith('# metadata')) { + currentSection = 'metadata' + continue + } else if (line.startsWith('# svgdata')) { + currentSection = 'svgdata' + continue + } else if (line.startsWith('# linkdata')) { + currentSection = 'linkdata' + continue + } else if (line.startsWith('# textdata')) { + break + } + + if (line.trim() === '```metadata' || line.trim() === '```svgData') { + inCodeBlock = true + continue + } else if (line.trim() === '```' && inCodeBlock) { + inCodeBlock = false + if (currentSection === 'metadata') { + result.metadata.content = codeBlockContent.join('\n') + codeBlockContent = [] + } else if (currentSection === 'svgdata') { + result.svgdata = codeBlockContent.join('\n') + if (result.svgdata == undefined) { + result.svgdata = '' + } + codeBlockContent = [] + } + continue + } + + if (inCodeBlock) { + codeBlockContent.push(line) + } else if (currentSection === 'linkdata' && line.startsWith('- ')) { + result.linkdata.push(line.replace('- ', '').trim()) + } else if (currentSection === 'svgdata') { + if (line.startsWith('![[')) { + result.svgdata = line.trim() + } else if (line.startsWith('> updateAt:')) { + result.svgdataUpdateAt = line.match(/> updateAt:\s*(.*)/)[1] + } + } else if (inYamlHeader) { + if (line.startsWith('tags:')) { + inTags = true + } else if (inTags && line.startsWith(' -')) { + result.metadata.tags.push(line.replace(' -', '').trim()) + } else { + inTags = false + if (line.startsWith('path:')) { + result.metadata.path = line.split(':')[1].trim() + } else if (line) { + result.metadata.yaml += line + '\n' + } + } + } + } + + return result +} + +export const assembleMarkdownText = obj => { + let result = '---\n' + + result += `path: ${obj.metadata.path}\n` + result += 'tags:\n' + for (const tag of obj.metadata.tags) { + result += ` - ${tag}\n` + } + if (obj.metadata.yaml) { + result += obj.metadata.yaml + } + result += '---\n' + + result += '> ' + i18n.t('tip.mdModifyTip') + '\n' + + result += '# metadata\n' + result += '```metadata\n' + result += obj.metadata.content + result += '\n```\n' + + result += '# svgdata\n' + if (obj.svgdata && /^!\[\[/.test(obj.svgdata)) { + result += obj.svgdata + '\n' + result += '> updateAt: ' + (obj.svgdataUpdateAt || '') + '\n' + } else { + result += '```svgData\n' + result += obj.svgdata + result += '\n```\n' + } + + result += '# linkdata\n' + for (const item of obj.linkdata) { + result += `- ${item}\n` + } + + result += '# textdata\n' + if (obj.textdata && Array.isArray(obj.textdata)) { + result += obj.textdata.join('\n\n') + } + return result +} + +export const createDefaultMindMapData = (options, isCompress = true) => { + const content = JSON.stringify(getDefaultSmmData(options)) + return isCompress ? LZString.compressToBase64(content) : content +} + +export const createDefaultText = (filePath, options) => { + return assembleMarkdownText({ + metadata: { + path: `${filePath || ''}`, + tags: [SMM_TAG], + yaml: '', + content: createDefaultMindMapData(options) + }, + svgdata: '', + svgdataUpdateAt: '', + linkdata: [], + textdata: [] + }) +} diff --git a/src/ob/utils.js b/src/ob/utils.js new file mode 100644 index 0000000..2548e91 --- /dev/null +++ b/src/ob/utils.js @@ -0,0 +1,127 @@ +import { createUid } from 'simple-mind-map/src/utils/index.js' + +export const simpleDeepClone = data => { + try { + return JSON.parse(JSON.stringify(data)) + } catch (error) { + return null + } +} + +export const generateRandomString = ( + length = 12, + charSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' +) => { + if (typeof length !== 'number' || length <= 0) { + throw new Error('长度必须是正整数') + } + if (typeof charSet !== 'string' || charSet.length === 0) { + throw new Error('字符集不能为空') + } + + let randomValues + if (typeof crypto !== 'undefined' && crypto.getRandomValues) { + randomValues = new Uint32Array(length) + crypto.getRandomValues(randomValues) + } else { + randomValues = new Array(length) + .fill(0) + .map(() => Math.random() * 0x100000000) + } + + let result = '' + for (let i = 0; i < length; i++) { + const randomIndex = randomValues[i] % charSet.length + result += charSet.charAt(randomIndex) + } + + return result +} + +export const hideTargetMenu = (menu, text = '在新窗口中打开') => { + menu.items.forEach(item => { + if (item.title === text || item.dom?.innerText?.includes(text)) { + item.dom.hide() + } + }) +} + +export const dataURItoBlob = dataURI => { + const byteString = atob(dataURI.split(',')[1]) + const mimeString = dataURI + .split(',')[0] + .split(':')[1] + .split(';')[0] + const ab = new ArrayBuffer(byteString.length) + const ia = new Uint8Array(ab) + for (let i = 0; i < byteString.length; i++) { + ia[i] = byteString.charCodeAt(i) + } + return new Blob([ab], { type: mimeString }) +} + +export const getUidFromSource = data => { + const { matches, content } = data.match + const total = content.length + const last = matches[matches.length - 1] + let index = last[1] + let str = content[index] + let uid = '' + let isJoin = false + while (true || index >= total) { + if (isJoin && (str === '\n' || str === undefined)) { + break + } + if (isJoin) { + uid += str + } + if (str === '^') { + isJoin = true + } + index++ + str = content[index] + } + return uid +} + +export const smmFilePathToFileName = (filePath, ext) => { + if (!filePath) return createUid() + ext + filePath = + filePath + .replace(/\//g, '_') + .replace(/.smm.md$/, '') + .replace(/.md$/, '') + ext + return filePath +} + +export const formatFileName = (str, { notename, ignores } = {}) => { + str = str.trim() + if (!str) return '' + str = str.replace(/{([^{}]+)}/g, (...args) => { + const match = args[1].trim() + if (ignores && ignores.includes(match)) { + return args[0] + } + if (match === 'notename' && notename) { + return notename + } else if (match === 'date') { + return moment().format('YYYY-MM-DD') + } else if (match === 'time') { + return moment().format('HH:mm:ss') + } else if (match === 'datetime') { + return moment().format('YYYY-MM-DD HH:mm:ss') + } else if (match === 'random') { + return Math.random() + .toString(36) + .substring(2, 8) + } else if (match.startsWith('date:') && match.slice(5).trim()) { + return moment().format(match.slice(5).trim()) + } + return args[0] + }) + return str +} + +export const fragWithHTML = html => { + return createFragment(frag => (frag.createDiv().innerHTML = html)) +} \ No newline at end of file diff --git a/src/package-lock.json b/src/package-lock.json new file mode 100644 index 0000000..46adc5e --- /dev/null +++ b/src/package-lock.json @@ -0,0 +1,12260 @@ +{ + "name": "simple-mind-map", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "simple-mind-map", + "version": "0.1.0", + "dependencies": { + "@toast-ui/editor": "^3.1.5", + "element-ui": "^2.15.1", + "i18next": "^25.2.1", + "katex": "^0.16.9", + "lz-string": "^1.5.0", + "monkey-around": "^3.0.0", + "simple-mind-map-plugin-themes": "^1.0.0", + "v-viewer": "^1.6.4", + "vue": "^2.6.14", + "vue-i18n": "^8.27.2", + "vue-template-compiler": "^2.6.14", + "vuex": "^3.6.2", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@babel/core": "^7.28.0", + "@babel/preset-env": "^7.28.0", + "@types/node": "^16.11.6", + "babel-loader": "^10.0.0", + "babel-plugin-component": "^1.1.1", + "buffer": "^6.0.3", + "builtin-modules": "3.3.0", + "css-loader": "^7.1.2", + "css-minimizer-webpack-plugin": "^7.0.2", + "file-loader": "^6.2.0", + "less": "^3.12.2", + "less-loader": "^7.1.0", + "markdown-it": "^13.0.1", + "markdown-it-checkbox": "^1.1.0", + "mini-css-extract-plugin": "^2.9.2", + "obsidian": "latest", + "sass": "^1.89.2", + "sass-loader": "^16.0.5", + "stream-browserify": "^3.0.0", + "string_decoder": "^1.3.0", + "terser-webpack-plugin": "^5.3.14", + "url-loader": "^4.1.1", + "util": "^0.12.5", + "vue-loader": "^15.9.8", + "webpack": "^5.98.0", + "webpack-cli": "^6.0.1" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/@babel/compat-data": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", + "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.10" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", + "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "dev": true, + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "dependencies": { + "@babel/types": "^7.28.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", + "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", + "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz", + "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", + "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz", + "integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", + "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", + "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", + "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz", + "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.0.tgz", + "integrity": "sha512-LOAozRVbqxEVjSKfhGnuLoE4Kz4Oc5UJzuvFUhSsQzdCdaAQu06mG8zDv2GFSerM62nImUZ7K92vxnQcLSDlCQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.0.tgz", + "integrity": "sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.0", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-classes": "^7.28.0", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.28.0", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.0", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", + "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.0.tgz", + "integrity": "sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@codemirror/state": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz", + "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==", + "dev": true, + "peer": true, + "dependencies": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.37.2", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.37.2.tgz", + "integrity": "sha512-XD3LdgQpxQs5jhOOZ2HRVT+Rj59O4Suc7g2ULvZ+Yi8eCkickrkZ5JFuoDhs2ST1mNI5zSsNYgR3NGa4OUrbnw==", + "dev": true, + "peer": true, + "dependencies": { + "@codemirror/state": "^6.5.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", + "dev": true, + "engines": { + "node": ">=14.17.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", + "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", + "dev": true, + "peer": true + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@toast-ui/editor": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@toast-ui/editor/-/editor-3.2.2.tgz", + "integrity": "sha512-ASX7LFjN2ZYQJrwmkUajPs7DRr9FsM1+RQ82CfTO0Y5ZXorBk1VZS4C2Dpxinx9kl55V4F8/A2h2QF4QMDtRbA==", + "dependencies": { + "dompurify": "^2.3.3", + "prosemirror-commands": "^1.1.9", + "prosemirror-history": "^1.1.3", + "prosemirror-inputrules": "^1.1.3", + "prosemirror-keymap": "^1.1.4", + "prosemirror-model": "^1.14.1", + "prosemirror-state": "^1.3.4", + "prosemirror-view": "^1.18.7" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/codemirror": { + "version": "5.60.8", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.8.tgz", + "integrity": "sha512-VjFgDF/eB+Aklcy15TtOTLQeMjTo07k7KAjql8OK5Dirr7a6sJY4T1uVBDuTVG9VEmn1uUsohOpYnVfgC6/jyw==", + "dev": true, + "dependencies": { + "@types/tern": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.18.126", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", + "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", + "dev": true + }, + "node_modules/@types/tern": { + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz", + "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", + "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", + "dev": true, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", + "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", + "dev": true, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", + "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", + "dev": true, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/async-validator": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz", + "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==", + "dependencies": { + "babel-runtime": "6.x" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-helper-vue-jsx-merge-props": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", + "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" + }, + "node_modules/babel-loader": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", + "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", + "dev": true, + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5.61.0" + } + }, + "node_modules/babel-loader/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-plugin-component": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz", + "integrity": "sha512-WUw887kJf2GH80Ng/ZMctKZ511iamHNqPhd9uKo14yzisvV7Wt1EckIrb8oq/uCz3B3PpAW7Xfl7AkTLDYT6ag==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "7.0.0-beta.35" + } + }, + "node_modules/babel-plugin-component/node_modules/@babel/helper-module-imports": { + "version": "7.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz", + "integrity": "sha512-vaC1KyIZSuyWb3Lj277fX0pxivyHwuDU4xZsofqgYAbkDxNieMg2vuhzP5AgMweMY7fCQUMTi+BgPqTLjkxXFg==", + "dev": true, + "dependencies": { + "@babel/types": "7.0.0-beta.35", + "lodash": "^4.2.0" + } + }, + "node_modules/babel-plugin-component/node_modules/@babel/types": { + "version": "7.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.35.tgz", + "integrity": "sha512-y9XT11CozHDgjWcTdxmhSj13rJVXpa5ZXwjjOiTedjaM0ba5ItqdS02t31EhPl7HtOWxsZkYCCUNrSfrOisA6w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "optional": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001726", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz", + "integrity": "sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "deprecated": "Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog", + "dev": true, + "dependencies": { + "bluebird": "^3.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/core-js-compat": { + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", + "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==", + "dev": true, + "dependencies": { + "browserslist": "^4.25.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "dev": true, + "peer": true + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-loader/node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/css-loader/node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/css-loader/node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/css-loader/node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/css-loader/node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/css-loader/node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/css-loader/node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/css-loader/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-7.0.2.tgz", + "integrity": "sha512-nBRWZtI77PBZQgcXMNqiIXVshiQOVLGSf2qX/WZfG8IQfMbeHUMXaBWQmiiSTmPJUflQxHjZjzAmuyO7tpL2Jg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "cssnano": "^7.0.4", + "jest-worker": "^29.7.0", + "postcss": "^8.4.40", + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/css-declaration-sorter": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/cssnano": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.7.tgz", + "integrity": "sha512-evKu7yiDIF7oS+EIpwFlMF730ijRyLFaM2o5cTxRGJR9OKHKkc+qP443ZEVR9kZG0syaAJJCPJyfv5pbrxlSng==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^7.0.7", + "lilconfig": "^3.1.3" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/cssnano-preset-default": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.7.tgz", + "integrity": "sha512-jW6CG/7PNB6MufOrlovs1TvBTEVmhY45yz+bd0h6nw3h6d+1e+/TX+0fflZ+LzvZombbT5f+KC063w9VoHeHow==", + "dev": true, + "dependencies": { + "browserslist": "^4.24.5", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^5.0.1", + "postcss-calc": "^10.1.1", + "postcss-colormin": "^7.0.3", + "postcss-convert-values": "^7.0.5", + "postcss-discard-comments": "^7.0.4", + "postcss-discard-duplicates": "^7.0.2", + "postcss-discard-empty": "^7.0.1", + "postcss-discard-overridden": "^7.0.1", + "postcss-merge-longhand": "^7.0.5", + "postcss-merge-rules": "^7.0.5", + "postcss-minify-font-values": "^7.0.1", + "postcss-minify-gradients": "^7.0.1", + "postcss-minify-params": "^7.0.3", + "postcss-minify-selectors": "^7.0.5", + "postcss-normalize-charset": "^7.0.1", + "postcss-normalize-display-values": "^7.0.1", + "postcss-normalize-positions": "^7.0.1", + "postcss-normalize-repeat-style": "^7.0.1", + "postcss-normalize-string": "^7.0.1", + "postcss-normalize-timing-functions": "^7.0.1", + "postcss-normalize-unicode": "^7.0.3", + "postcss-normalize-url": "^7.0.1", + "postcss-normalize-whitespace": "^7.0.1", + "postcss-ordered-values": "^7.0.2", + "postcss-reduce-initial": "^7.0.3", + "postcss-reduce-transforms": "^7.0.1", + "postcss-svgo": "^7.0.2", + "postcss-unique-selectors": "^7.0.4" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/cssnano-utils": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.1.tgz", + "integrity": "sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==", + "dev": true, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", + "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-calc": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz", + "integrity": "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12 || ^20.9 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.38" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-colormin": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.3.tgz", + "integrity": "sha512-xZxQcSyIVZbSsl1vjoqZAcMYYdnJsIyG8OvqShuuqf12S88qQboxxEy0ohNCOLwVPXTU+hFHvJPACRL2B5ohTA==", + "dev": true, + "dependencies": { + "browserslist": "^4.24.5", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-convert-values": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.5.tgz", + "integrity": "sha512-0VFhH8nElpIs3uXKnVtotDJJNX0OGYSZmdt4XfSfvOMrFw1jKfpwpZxfC4iN73CTM/MWakDEmsHQXkISYj4BXw==", + "dev": true, + "dependencies": { + "browserslist": "^4.24.5", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-comments": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.4.tgz", + "integrity": "sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^7.1.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-duplicates": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.2.tgz", + "integrity": "sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==", + "dev": true, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-empty": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.1.tgz", + "integrity": "sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==", + "dev": true, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-discard-overridden": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.1.tgz", + "integrity": "sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==", + "dev": true, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-merge-longhand": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.5.tgz", + "integrity": "sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^7.0.5" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-merge-rules": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.5.tgz", + "integrity": "sha512-ZonhuSwEaWA3+xYbOdJoEReKIBs5eDiBVLAGpYZpNFPzXZcEE5VKR7/qBEQvTZpiwjqhhqEQ+ax5O3VShBj9Wg==", + "dev": true, + "dependencies": { + "browserslist": "^4.24.5", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^5.0.1", + "postcss-selector-parser": "^7.1.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-font-values": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.1.tgz", + "integrity": "sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-gradients": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.1.tgz", + "integrity": "sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==", + "dev": true, + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-params": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.3.tgz", + "integrity": "sha512-vUKV2+f5mtjewYieanLX0xemxIp1t0W0H/D11u+kQV/MWdygOO7xPMkbK+r9P6Lhms8MgzKARF/g5OPXhb8tgg==", + "dev": true, + "dependencies": { + "browserslist": "^4.24.5", + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-minify-selectors": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.5.tgz", + "integrity": "sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "postcss-selector-parser": "^7.1.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-charset": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.1.tgz", + "integrity": "sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==", + "dev": true, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-display-values": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.1.tgz", + "integrity": "sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-positions": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.1.tgz", + "integrity": "sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-repeat-style": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.1.tgz", + "integrity": "sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-string": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.1.tgz", + "integrity": "sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-timing-functions": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.1.tgz", + "integrity": "sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-unicode": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.3.tgz", + "integrity": "sha512-EcoA29LvG3F+EpOh03iqu+tJY3uYYKzArqKJHxDhUYLa2u58aqGq16K6/AOsXD9yqLN8O6y9mmePKN5cx6krOw==", + "dev": true, + "dependencies": { + "browserslist": "^4.24.5", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-url": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.1.tgz", + "integrity": "sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-normalize-whitespace": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.1.tgz", + "integrity": "sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-ordered-values": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.2.tgz", + "integrity": "sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==", + "dev": true, + "dependencies": { + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-reduce-initial": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.3.tgz", + "integrity": "sha512-RFvkZaqiWtGMlVjlUHpaxGqEL27lgt+Q2Ixjf83CRAzqdo+TsDyGPtJUbPx2MuYIJ+sCQc2TrOvRnhcXQfgIVA==", + "dev": true, + "dependencies": { + "browserslist": "^4.24.5", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-reduce-transforms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.1.tgz", + "integrity": "sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-svgo": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.2.tgz", + "integrity": "sha512-5Dzy66JlnRM6pkdOTF8+cGsB1fnERTE8Nc+Eed++fOWo1hdsBptCsbG8UuJkgtZt75bRtMJIrPeZmtfANixdFA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.3.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/postcss-unique-selectors": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.4.tgz", + "integrity": "sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^7.1.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/stylehacks": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.5.tgz", + "integrity": "sha512-5kNb7V37BNf0Q3w+1pxfa+oiNPS++/b4Jil9e/kPDgrk1zjEd6uR7SZeJiYaLYH6RRSC1XX2/37OTeU/4FvuIA==", + "dev": true, + "dependencies": { + "browserslist": "^4.24.5", + "postcss-selector-parser": "^7.1.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==" + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.7.tgz", + "integrity": "sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ==" + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.179", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.179.tgz", + "integrity": "sha512-UWKi/EbBopgfFsc5k61wFpV7WrnnSlSzW/e2XcBmS6qKYTivZlLtoll5/rdqRTxGglGHkmkW0j0pFNJG10EUIQ==", + "dev": true + }, + "node_modules/element-ui": { + "version": "2.15.14", + "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.14.tgz", + "integrity": "sha512-2v9fHL0ZGINotOlRIAJD5YuVB8V7WKxrE9Qy7dXhRipa035+kF7WuU/z+tEmLVPBcJ0zt8mOu1DKpWcVzBK8IA==", + "dependencies": { + "async-validator": "~1.8.1", + "babel-helper-vue-jsx-merge-props": "^2.0.0", + "deepmerge": "^1.2.0", + "normalize-wheel": "^1.0.1", + "resize-observer-polyfill": "^1.5.0", + "throttle-debounce": "^1.0.1" + }, + "peerDependencies": { + "vue": "^2.5.17" + } + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ] + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/i18next": { + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.2.1.tgz", + "integrity": "sha512-+UoXK5wh+VlE1Zy5p6MjcvctHXAhRwQKCxiJD8noKZzIXmnAX8gdHX5fLPA3MEVxEN4vbZkQFy8N0LyD9tUqPw==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "dependencies": { + "@babel/runtime": "^7.27.1" + }, + "peerDependencies": { + "typescript": "^5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "dev": true + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "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/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "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": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/katex": { + "version": "0.16.9", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.9.tgz", + "integrity": "sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "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/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/less": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz", + "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "tslib": "^1.10.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "native-request": "^1.0.5", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", + "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/markdown-it": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz", + "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-checkbox": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/markdown-it-checkbox/-/markdown-it-checkbox-1.1.0.tgz", + "integrity": "sha512-NkZVjnXo5G+cLNdi7DPZxICypBuxFE9F8sx3YGMZn+Cfizr8EZ/1TFUKl7ZnefF6cr1aFHbnQ5iA3rc4cp7EyA==", + "dev": true, + "dependencies": { + "underscore": "^1.8.2" + } + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "node_modules/merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "optional": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", + "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/monkey-around": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/monkey-around/-/monkey-around-3.0.0.tgz", + "integrity": "sha512-jL6uY2lEAoaHxZep1cNRkCZjoIWY4g5VYCjriEWmcyHU7w8NU1+JH57xE251UVTohK0lCxMjv0ZV4ByDLIXEpw==" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/native-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz", + "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==", + "dev": true, + "optional": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "optional": true + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true + }, + "node_modules/normalize-wheel": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", + "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/obsidian": { + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-1.8.7.tgz", + "integrity": "sha512-h4bWwNFAGRXlMlMAzdEiIM2ppTGlrh7uGOJS6w4gClrsjc+ei/3YAtU2VdFUlCiPuTHpY4aBpFJJW75S1Tl/JA==", + "dev": true, + "dependencies": { + "@types/codemirror": "5.60.8", + "moment": "2.29.4" + }, + "peerDependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "node_modules/orderedmap": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", + "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==" + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "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/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prosemirror-commands": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz", + "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-history": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.3.2.tgz", + "integrity": "sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==", + "dependencies": { + "prosemirror-state": "^1.2.2", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.31.0", + "rope-sequence": "^1.3.0" + } + }, + "node_modules/prosemirror-inputrules": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz", + "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-keymap": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", + "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", + "dependencies": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, + "node_modules/prosemirror-model": { + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.19.4.tgz", + "integrity": "sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==", + "dependencies": { + "orderedmap": "^2.0.0" + } + }, + "node_modules/prosemirror-state": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", + "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.27.0" + } + }, + "node_modules/prosemirror-transform": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz", + "integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==", + "dependencies": { + "prosemirror-model": "^1.0.0" + } + }, + "node_modules/prosemirror-view": { + "version": "1.33.1", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.1.tgz", + "integrity": "sha512-62qkYgSJIkwIMMCpuGuPzc52DiK1Iod6TWoIMxP4ja6BTD4yO8kCUL64PZ/WhH/dJ9fW0CDO39FhH1EMyhUFEg==", + "dependencies": { + "prosemirror-model": "^1.16.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "dev": true, + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/rope-sequence": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", + "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sass": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.2.tgz", + "integrity": "sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==", + "dev": true, + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/sass-loader": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz", + "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==", + "dev": true, + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/simple-mind-map-plugin-themes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-mind-map-plugin-themes/-/simple-mind-map-plugin-themes-1.0.0.tgz", + "integrity": "sha512-v+L28HfRK1B+qw+76ueRGbbAxnKmGhVNuHL+oCWTE0qbdvaqSAszI+yOxqeTNXJmBgzrjeJXpJ831/gDiWUKaQ==", + "dependencies": { + "esbuild": "^0.17.15" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dev": true, + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", + "dev": true, + "peer": true + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "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/svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/throttle-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz", + "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-browserslist-db/node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/v-viewer": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/v-viewer/-/v-viewer-1.7.4.tgz", + "integrity": "sha512-K3PQ8utnVXXBCa5IRXRAhk/m83fNIsK77gTSXqAmPJe8eDTaSY1nifAOWPUmQDjzuCxYfa14UjGftHR9MFV70Q==", + "dependencies": { + "lodash-es": "^4.17.21", + "viewerjs": "^1.11.6" + }, + "peerDependencies": { + "viewerjs": "^1.9.0", + "vue": "^2.0.0" + } + }, + "node_modules/viewerjs": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/viewerjs/-/viewerjs-1.11.6.tgz", + "integrity": "sha512-TlhdSp2oEOLFXvEp4psKaeTjR5zBjTRcM/sHUN8PkV1UWuY8HKC8n7GaVdW5Xqnwdr/F1OmzLik1QwDjI4w/nw==" + }, + "node_modules/vue": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz", + "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==", + "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.", + "dependencies": { + "@vue/compiler-sfc": "2.7.16", + "csstype": "^3.1.0" + } + }, + "node_modules/vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "node_modules/vue-i18n": { + "version": "8.28.2", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.28.2.tgz", + "integrity": "sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA==" + }, + "node_modules/vue-loader": { + "version": "15.11.1", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.11.1.tgz", + "integrity": "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==", + "dev": true, + "dependencies": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "peerDependencies": { + "css-loader": "*", + "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "prettier": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/vue-loader/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/vue-loader/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/vue-loader/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-style-loader/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/vue-style-loader/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/vue-style-loader/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "node_modules/vue/node_modules/@vue/compiler-sfc": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz", + "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==", + "dependencies": { + "@babel/parser": "^7.23.5", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/vue/node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/vue/node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/vuex": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", + "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", + "peerDependencies": { + "vue": "^2.0.0" + } + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + }, + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.99.8", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.8.tgz", + "integrity": "sha512-lQ3CPiSTpfOnrEGeXDwoq5hIGzSjmwD72GdfVzF7CQAI7t47rJG9eDWvcEkEn3CUQymAElVvDg3YNTlCYj+qUQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", + "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.6.1", + "@webpack-cli/configtest": "^3.0.1", + "@webpack-cli/info": "^3.0.1", + "@webpack-cli/serve": "^3.0.1", + "colorette": "^2.0.14", + "commander": "^12.1.0", + "cross-spawn": "^7.0.3", + "envinfo": "^7.14.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^6.0.1" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.82.0" + }, + "peerDependenciesMeta": { + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack/node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "dependencies": { + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + } + } + }, + "@babel/compat-data": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", + "dev": true + }, + "@babel/core": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "dev": true, + "requires": { + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "requires": { + "@babel/types": "^7.27.3" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", + "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.10" + } + }, + "@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + } + }, + "@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "requires": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + } + }, + "@babel/helper-module-transforms": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "dev": true, + "requires": { + "@babel/types": "^7.27.1" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + } + }, + "@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==" + }, + "@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==" + }, + "@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", + "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", + "dev": true, + "requires": { + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + } + }, + "@babel/helpers": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "dev": true, + "requires": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" + } + }, + "@babel/parser": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "requires": { + "@babel/types": "^7.28.0" + } + }, + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", + "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + } + }, + "@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + } + }, + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", + "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "requires": {} + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.28.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz", + "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", + "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz", + "integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", + "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", + "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", + "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz", + "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.0.tgz", + "integrity": "sha512-LOAozRVbqxEVjSKfhGnuLoE4Kz4Oc5UJzuvFUhSsQzdCdaAQu06mG8zDv2GFSerM62nImUZ7K92vxnQcLSDlCQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-regexp-modifiers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/preset-env": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.0.tgz", + "integrity": "sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.28.0", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.0", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-classes": "^7.28.0", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.0", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.28.0", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.28.0", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "core-js-compat": "^3.43.0", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", + "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==" + }, + "@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + } + }, + "@babel/traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" + } + }, + "@babel/types": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.0.tgz", + "integrity": "sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==", + "requires": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + } + }, + "@codemirror/state": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz", + "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==", + "dev": true, + "peer": true, + "requires": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "@codemirror/view": { + "version": "6.37.2", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.37.2.tgz", + "integrity": "sha512-XD3LdgQpxQs5jhOOZ2HRVT+Rj59O4Suc7g2ULvZ+Yi8eCkickrkZ5JFuoDhs2ST1mNI5zSsNYgR3NGa4OUrbnw==", + "dev": true, + "peer": true, + "requires": { + "@codemirror/state": "^6.5.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "@discoveryjs/json-ext": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", + "dev": true + }, + "@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "optional": true + }, + "@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@marijn/find-cluster-break": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", + "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", + "dev": true, + "peer": true + }, + "@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "optional": true, + "requires": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1", + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + } + }, + "@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "dev": true, + "optional": true + }, + "@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "dev": true, + "optional": true + }, + "@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "dev": true, + "optional": true + }, + "@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "dev": true, + "optional": true + }, + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "@toast-ui/editor": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@toast-ui/editor/-/editor-3.2.2.tgz", + "integrity": "sha512-ASX7LFjN2ZYQJrwmkUajPs7DRr9FsM1+RQ82CfTO0Y5ZXorBk1VZS4C2Dpxinx9kl55V4F8/A2h2QF4QMDtRbA==", + "requires": { + "dompurify": "^2.3.3", + "prosemirror-commands": "^1.1.9", + "prosemirror-history": "^1.1.3", + "prosemirror-inputrules": "^1.1.3", + "prosemirror-keymap": "^1.1.4", + "prosemirror-model": "^1.14.1", + "prosemirror-state": "^1.3.4", + "prosemirror-view": "^1.18.7" + } + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/codemirror": { + "version": "5.60.8", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.8.tgz", + "integrity": "sha512-VjFgDF/eB+Aklcy15TtOTLQeMjTo07k7KAjql8OK5Dirr7a6sJY4T1uVBDuTVG9VEmn1uUsohOpYnVfgC6/jyw==", + "dev": true, + "requires": { + "@types/tern": "*" + } + }, + "@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "@types/node": { + "version": "16.18.126", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", + "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", + "dev": true + }, + "@types/tern": { + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz", + "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2 || ^2.0.0", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", + "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", + "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", + "dev": true, + "requires": {} + }, + "@webpack-cli/serve": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", + "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true + }, + "adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==" + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "async-validator": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz", + "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==", + "requires": { + "babel-runtime": "6.x" + } + }, + "available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "requires": { + "possible-typed-array-names": "^1.0.0" + } + }, + "babel-helper-vue-jsx-merge-props": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", + "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" + }, + "babel-loader": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", + "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", + "dev": true, + "requires": { + "find-up": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, + "babel-plugin-component": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz", + "integrity": "sha512-WUw887kJf2GH80Ng/ZMctKZ511iamHNqPhd9uKo14yzisvV7Wt1EckIrb8oq/uCz3B3PpAW7Xfl7AkTLDYT6ag==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0-beta.35" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz", + "integrity": "sha512-vaC1KyIZSuyWb3Lj277fX0pxivyHwuDU4xZsofqgYAbkDxNieMg2vuhzP5AgMweMY7fCQUMTi+BgPqTLjkxXFg==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.35", + "lodash": "^4.2.0" + } + }, + "@babel/types": { + "version": "7.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.35.tgz", + "integrity": "sha512-y9XT11CozHDgjWcTdxmhSj13rJVXpa5ZXwjjOiTedjaM0ba5ItqdS02t31EhPl7HtOWxsZkYCCUNrSfrOisA6w==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.6.5" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "browserslist": { + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true + }, + "call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "requires": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + } + }, + "call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + } + }, + "call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001726", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz", + "integrity": "sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==", + "dev": true + }, + "cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "requires": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "requires": { + "readdirp": "^4.0.1" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, + "core-js-compat": { + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", + "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==", + "dev": true, + "requires": { + "browserslist": "^4.25.0" + } + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + }, + "crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "dev": true, + "peer": true + }, + "cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "dependencies": { + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "requires": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + } + }, + "postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^7.0.0" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + } + } + }, + "css-minimizer-webpack-plugin": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-7.0.2.tgz", + "integrity": "sha512-nBRWZtI77PBZQgcXMNqiIXVshiQOVLGSf2qX/WZfG8IQfMbeHUMXaBWQmiiSTmPJUflQxHjZjzAmuyO7tpL2Jg==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.25", + "cssnano": "^7.0.4", + "jest-worker": "^29.7.0", + "postcss": "^8.4.40", + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" + }, + "dependencies": { + "ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "css-declaration-sorter": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "dev": true, + "requires": {} + }, + "cssnano": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.7.tgz", + "integrity": "sha512-evKu7yiDIF7oS+EIpwFlMF730ijRyLFaM2o5cTxRGJR9OKHKkc+qP443ZEVR9kZG0syaAJJCPJyfv5pbrxlSng==", + "dev": true, + "requires": { + "cssnano-preset-default": "^7.0.7", + "lilconfig": "^3.1.3" + } + }, + "cssnano-preset-default": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.7.tgz", + "integrity": "sha512-jW6CG/7PNB6MufOrlovs1TvBTEVmhY45yz+bd0h6nw3h6d+1e+/TX+0fflZ+LzvZombbT5f+KC063w9VoHeHow==", + "dev": true, + "requires": { + "browserslist": "^4.24.5", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^5.0.1", + "postcss-calc": "^10.1.1", + "postcss-colormin": "^7.0.3", + "postcss-convert-values": "^7.0.5", + "postcss-discard-comments": "^7.0.4", + "postcss-discard-duplicates": "^7.0.2", + "postcss-discard-empty": "^7.0.1", + "postcss-discard-overridden": "^7.0.1", + "postcss-merge-longhand": "^7.0.5", + "postcss-merge-rules": "^7.0.5", + "postcss-minify-font-values": "^7.0.1", + "postcss-minify-gradients": "^7.0.1", + "postcss-minify-params": "^7.0.3", + "postcss-minify-selectors": "^7.0.5", + "postcss-normalize-charset": "^7.0.1", + "postcss-normalize-display-values": "^7.0.1", + "postcss-normalize-positions": "^7.0.1", + "postcss-normalize-repeat-style": "^7.0.1", + "postcss-normalize-string": "^7.0.1", + "postcss-normalize-timing-functions": "^7.0.1", + "postcss-normalize-unicode": "^7.0.3", + "postcss-normalize-url": "^7.0.1", + "postcss-normalize-whitespace": "^7.0.1", + "postcss-ordered-values": "^7.0.2", + "postcss-reduce-initial": "^7.0.3", + "postcss-reduce-transforms": "^7.0.1", + "postcss-svgo": "^7.0.2", + "postcss-unique-selectors": "^7.0.4" + } + }, + "cssnano-utils": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.1.tgz", + "integrity": "sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==", + "dev": true, + "requires": {} + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "postcss": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", + "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", + "dev": true, + "requires": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + } + }, + "postcss-calc": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz", + "integrity": "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==", + "dev": true, + "requires": { + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.3.tgz", + "integrity": "sha512-xZxQcSyIVZbSsl1vjoqZAcMYYdnJsIyG8OvqShuuqf12S88qQboxxEy0ohNCOLwVPXTU+hFHvJPACRL2B5ohTA==", + "dev": true, + "requires": { + "browserslist": "^4.24.5", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.5.tgz", + "integrity": "sha512-0VFhH8nElpIs3uXKnVtotDJJNX0OGYSZmdt4XfSfvOMrFw1jKfpwpZxfC4iN73CTM/MWakDEmsHQXkISYj4BXw==", + "dev": true, + "requires": { + "browserslist": "^4.24.5", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.4.tgz", + "integrity": "sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^7.1.0" + } + }, + "postcss-discard-duplicates": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.2.tgz", + "integrity": "sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==", + "dev": true, + "requires": {} + }, + "postcss-discard-empty": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.1.tgz", + "integrity": "sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==", + "dev": true, + "requires": {} + }, + "postcss-discard-overridden": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.1.tgz", + "integrity": "sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==", + "dev": true, + "requires": {} + }, + "postcss-merge-longhand": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.5.tgz", + "integrity": "sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^7.0.5" + } + }, + "postcss-merge-rules": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.5.tgz", + "integrity": "sha512-ZonhuSwEaWA3+xYbOdJoEReKIBs5eDiBVLAGpYZpNFPzXZcEE5VKR7/qBEQvTZpiwjqhhqEQ+ax5O3VShBj9Wg==", + "dev": true, + "requires": { + "browserslist": "^4.24.5", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^5.0.1", + "postcss-selector-parser": "^7.1.0" + } + }, + "postcss-minify-font-values": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.1.tgz", + "integrity": "sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.1.tgz", + "integrity": "sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==", + "dev": true, + "requires": { + "colord": "^2.9.3", + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.3.tgz", + "integrity": "sha512-vUKV2+f5mtjewYieanLX0xemxIp1t0W0H/D11u+kQV/MWdygOO7xPMkbK+r9P6Lhms8MgzKARF/g5OPXhb8tgg==", + "dev": true, + "requires": { + "browserslist": "^4.24.5", + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.5.tgz", + "integrity": "sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "postcss-selector-parser": "^7.1.0" + } + }, + "postcss-normalize-charset": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.1.tgz", + "integrity": "sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==", + "dev": true, + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.1.tgz", + "integrity": "sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.1.tgz", + "integrity": "sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.1.tgz", + "integrity": "sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.1.tgz", + "integrity": "sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.1.tgz", + "integrity": "sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.3.tgz", + "integrity": "sha512-EcoA29LvG3F+EpOh03iqu+tJY3uYYKzArqKJHxDhUYLa2u58aqGq16K6/AOsXD9yqLN8O6y9mmePKN5cx6krOw==", + "dev": true, + "requires": { + "browserslist": "^4.24.5", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.1.tgz", + "integrity": "sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.1.tgz", + "integrity": "sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.2.tgz", + "integrity": "sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==", + "dev": true, + "requires": { + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.3.tgz", + "integrity": "sha512-RFvkZaqiWtGMlVjlUHpaxGqEL27lgt+Q2Ixjf83CRAzqdo+TsDyGPtJUbPx2MuYIJ+sCQc2TrOvRnhcXQfgIVA==", + "dev": true, + "requires": { + "browserslist": "^4.24.5", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.1.tgz", + "integrity": "sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.2.tgz", + "integrity": "sha512-5Dzy66JlnRM6pkdOTF8+cGsB1fnERTE8Nc+Eed++fOWo1hdsBptCsbG8UuJkgtZt75bRtMJIrPeZmtfANixdFA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.3.2" + } + }, + "postcss-unique-selectors": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.4.tgz", + "integrity": "sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^7.1.0" + } + }, + "schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + }, + "stylehacks": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.5.tgz", + "integrity": "sha512-5kNb7V37BNf0Q3w+1pxfa+oiNPS++/b4Jil9e/kPDgrk1zjEd6uR7SZeJiYaLYH6RRSC1XX2/37OTeU/4FvuIA==", + "dev": true, + "requires": { + "browserslist": "^4.24.5", + "postcss-selector-parser": "^7.1.0" + } + } + } + }, + "css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "requires": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "requires": { + "css-tree": "~2.2.0" + }, + "dependencies": { + "css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "requires": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + } + }, + "mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true + } + } + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==" + }, + "debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "optional": true + }, + "dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0" + } + }, + "dompurify": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.7.tgz", + "integrity": "sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ==" + }, + "domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + } + }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, + "electron-to-chromium": { + "version": "1.5.179", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.179.tgz", + "integrity": "sha512-UWKi/EbBopgfFsc5k61wFpV7WrnnSlSzW/e2XcBmS6qKYTivZlLtoll5/rdqRTxGglGHkmkW0j0pFNJG10EUIQ==", + "dev": true + }, + "element-ui": { + "version": "2.15.14", + "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.14.tgz", + "integrity": "sha512-2v9fHL0ZGINotOlRIAJD5YuVB8V7WKxrE9Qy7dXhRipa035+kF7WuU/z+tEmLVPBcJ0zt8mOu1DKpWcVzBK8IA==", + "requires": { + "async-validator": "~1.8.1", + "babel-helper-vue-jsx-merge-props": "^2.0.0", + "deepmerge": "^1.2.0", + "normalize-wheel": "^1.0.1", + "resize-observer-polyfill": "^1.5.0", + "throttle-debounce": "^1.0.1" + } + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + }, + "envinfo": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true + }, + "es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true + }, + "es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "requires": { + "es-errors": "^1.3.0" + } + }, + "esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "requires": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "requires": { + "is-callable": "^1.2.7" + } + }, + "frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + } + }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "requires": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.3" + } + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "i18next": { + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.2.1.tgz", + "integrity": "sha512-+UoXK5wh+VlE1Zy5p6MjcvctHXAhRwQKCxiJD8noKZzIXmnAX8gdHX5fLPA3MEVxEN4vbZkQFy8N0LyD9tUqPw==", + "requires": { + "@babel/runtime": "^7.27.1" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true + }, + "immutable": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "dev": true + }, + "import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true + }, + "is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "requires": { + "hasown": "^2.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "optional": true + }, + "is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "requires": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "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" + } + }, + "is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + } + }, + "is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.16" + } + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "katex": { + "version": "0.16.9", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.9.tgz", + "integrity": "sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==", + "requires": { + "commander": "^8.3.0" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + } + } + }, + "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 + }, + "klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true + }, + "less": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz", + "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "native-request": "^1.0.5", + "source-map": "~0.6.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "less-loader": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", + "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + } + }, + "lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true + }, + "linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==" + }, + "markdown-it": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz", + "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true + } + } + }, + "markdown-it-checkbox": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/markdown-it-checkbox/-/markdown-it-checkbox-1.1.0.tgz", + "integrity": "sha512-NkZVjnXo5G+cLNdi7DPZxICypBuxFE9F8sx3YGMZn+Cfizr8EZ/1TFUKl7ZnefF6cr1aFHbnQ5iA3rc4cp7EyA==", + "dev": true, + "requires": { + "underscore": "^1.8.2" + } + }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true + }, + "mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "optional": true, + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mini-css-extract-plugin": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", + "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "dependencies": { + "ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true + }, + "monkey-around": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/monkey-around/-/monkey-around-3.0.0.tgz", + "integrity": "sha512-jL6uY2lEAoaHxZep1cNRkCZjoIWY4g5VYCjriEWmcyHU7w8NU1+JH57xE251UVTohK0lCxMjv0ZV4ByDLIXEpw==" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==" + }, + "native-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz", + "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==", + "dev": true, + "optional": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "optional": true + }, + "node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true + }, + "normalize-wheel": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", + "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==" + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "obsidian": { + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-1.8.7.tgz", + "integrity": "sha512-h4bWwNFAGRXlMlMAzdEiIM2ppTGlrh7uGOJS6w4gClrsjc+ei/3YAtU2VdFUlCiPuTHpY4aBpFJJW75S1Tl/JA==", + "dev": true, + "requires": { + "@types/codemirror": "5.60.8", + "moment": "2.29.4" + } + }, + "orderedmap": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", + "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "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 + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "optional": true + }, + "prosemirror-commands": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz", + "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==", + "requires": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "prosemirror-history": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.3.2.tgz", + "integrity": "sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==", + "requires": { + "prosemirror-state": "^1.2.2", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.31.0", + "rope-sequence": "^1.3.0" + } + }, + "prosemirror-inputrules": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz", + "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==", + "requires": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "prosemirror-keymap": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", + "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", + "requires": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, + "prosemirror-model": { + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.19.4.tgz", + "integrity": "sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==", + "requires": { + "orderedmap": "^2.0.0" + } + }, + "prosemirror-state": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", + "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", + "requires": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.27.0" + } + }, + "prosemirror-transform": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz", + "integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==", + "requires": { + "prosemirror-model": "^1.0.0" + } + }, + "prosemirror-view": { + "version": "1.33.1", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.1.tgz", + "integrity": "sha512-62qkYgSJIkwIMMCpuGuPzc52DiK1Iod6TWoIMxP4ja6BTD4yO8kCUL64PZ/WhH/dJ9fW0CDO39FhH1EMyhUFEg==", + "requires": { + "prosemirror-model": "^1.16.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true + }, + "rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "requires": { + "resolve": "^1.20.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true + }, + "regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "dev": true, + "requires": { + "jsesc": "~3.0.2" + }, + "dependencies": { + "jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true + } + } + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "requires": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "rope-sequence": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", + "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + } + }, + "sass": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.2.tgz", + "integrity": "sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==", + "dev": true, + "requires": { + "@parcel/watcher": "^2.4.1", + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz", + "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==", + "dev": true, + "requires": { + "neo-async": "^2.6.2" + } + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true + }, + "serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "simple-mind-map-plugin-themes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-mind-map-plugin-themes/-/simple-mind-map-plugin-themes-1.0.0.tgz", + "integrity": "sha512-v+L28HfRK1B+qw+76ueRGbbAxnKmGhVNuHL+oCWTE0qbdvaqSAszI+yOxqeTNXJmBgzrjeJXpJ831/gDiWUKaQ==", + "requires": { + "esbuild": "^0.17.15" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "requires": { + "frac": "~1.1.2" + } + }, + "stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dev": true, + "requires": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", + "dev": true, + "peer": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.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 + }, + "svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "dependencies": { + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + } + } + }, + "tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "dev": true + }, + "terser": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "dependencies": { + "ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "throttle-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz", + "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "optional": true, + "peer": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "requires": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "dependencies": { + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + } + }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "v-viewer": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/v-viewer/-/v-viewer-1.7.4.tgz", + "integrity": "sha512-K3PQ8utnVXXBCa5IRXRAhk/m83fNIsK77gTSXqAmPJe8eDTaSY1nifAOWPUmQDjzuCxYfa14UjGftHR9MFV70Q==", + "requires": { + "lodash-es": "^4.17.21", + "viewerjs": "^1.11.6" + } + }, + "viewerjs": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/viewerjs/-/viewerjs-1.11.6.tgz", + "integrity": "sha512-TlhdSp2oEOLFXvEp4psKaeTjR5zBjTRcM/sHUN8PkV1UWuY8HKC8n7GaVdW5Xqnwdr/F1OmzLik1QwDjI4w/nw==" + }, + "vue": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz", + "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==", + "requires": { + "@vue/compiler-sfc": "2.7.16", + "csstype": "^3.1.0" + }, + "dependencies": { + "@vue/compiler-sfc": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz", + "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==", + "requires": { + "@babel/parser": "^7.23.5", + "postcss": "^8.4.14", + "prettier": "^1.18.2 || ^2.0.0", + "source-map": "^0.6.1" + } + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + } + } + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-i18n": { + "version": "8.28.2", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.28.2.tgz", + "integrity": "sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA==" + }, + "vue-loader": { + "version": "15.11.1", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.11.1.tgz", + "integrity": "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "requires": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "vuex": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", + "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", + "requires": {} + }, + "w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + }, + "watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.99.8", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.8.tgz", + "integrity": "sha512-lQ3CPiSTpfOnrEGeXDwoq5hIGzSjmwD72GdfVzF7CQAI7t47rJG9eDWvcEkEn3CUQymAElVvDg3YNTlCYj+qUQ==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "webpack-cli": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", + "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.6.1", + "@webpack-cli/configtest": "^3.0.1", + "@webpack-cli/info": "^3.0.1", + "@webpack-cli/serve": "^3.0.1", + "colorette": "^2.0.14", + "commander": "^12.1.0", + "cross-spawn": "^7.0.3", + "envinfo": "^7.14.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^6.0.1" + }, + "dependencies": { + "commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true + } + } + }, + "webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + } + }, + "wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" + }, + "word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" + }, + "xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "requires": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/src/package.json b/src/package.json new file mode 100644 index 0000000..540a980 --- /dev/null +++ b/src/package.json @@ -0,0 +1,75 @@ +{ + "name": "simple-mind-map", + "version": "0.1.0", + "private": true, + "scripts": { + "build": "cross-env NODE_ENV=production webpack --mode production", + "dev": "cross-env NODE_ENV=development webpack --watch --mode development", + "lint": "vue-cli-service lint", + "format": "prettier --write src/* src/*/* src/*/*/* src/*/*/*/*", + "createNodeImageList": "node ./scripts/createNodeImageList.js", + "ai:serve": "node ./scripts/ai.js" + }, + "devDependencies": { + "@babel/core": "^7.28.0", + "@babel/preset-env": "^7.28.0", + "@types/node": "^16.11.6", + "babel-loader": "^10.0.0", + "babel-plugin-component": "^1.1.1", + "buffer": "^6.0.3", + "builtin-modules": "3.3.0", + "css-loader": "^7.1.2", + "css-minimizer-webpack-plugin": "^7.0.2", + "file-loader": "^6.2.0", + "less": "^3.12.2", + "less-loader": "^7.1.0", + "markdown-it": "^13.0.1", + "markdown-it-checkbox": "^1.1.0", + "mini-css-extract-plugin": "^2.9.2", + "obsidian": "latest", + "sass": "^1.89.2", + "sass-loader": "^16.0.5", + "stream-browserify": "^3.0.0", + "string_decoder": "^1.3.0", + "terser-webpack-plugin": "^5.3.14", + "url-loader": "^4.1.1", + "util": "^0.12.5", + "vue-loader": "^15.9.8", + "webpack": "^5.98.0", + "webpack-cli": "^6.0.1" + }, + "dependencies": { + "@toast-ui/editor": "^3.1.5", + "element-ui": "^2.15.1", + "i18next": "^25.2.1", + "katex": "^0.16.9", + "lz-string": "^1.5.0", + "monkey-around": "^3.0.0", + "simple-mind-map-plugin-themes": "^1.0.0", + "v-viewer": "^1.6.4", + "vue": "^2.6.14", + "vue-i18n": "^8.27.2", + "vue-template-compiler": "^2.6.14", + "vuex": "^3.6.2", + "xlsx": "^0.18.5" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/essential", + "eslint:recommended" + ], + "parserOptions": { + "parser": "babel-eslint" + }, + "rules": {} + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead" + ] +} diff --git a/src/shims-vue.d.ts b/src/shims-vue.d.ts new file mode 100644 index 0000000..efa1613 --- /dev/null +++ b/src/shims-vue.d.ts @@ -0,0 +1,5 @@ +declare module '*.vue' { + import Vue from 'vue'; + export default Vue; + } + \ No newline at end of file diff --git a/src/src/assets/icon-font/iconfont.css b/src/src/assets/icon-font/iconfont.css new file mode 100644 index 0000000..de81f0d --- /dev/null +++ b/src/src/assets/icon-font/iconfont.css @@ -0,0 +1,651 @@ +@font-face { + font-family: "iconfont"; /* Project id 2479351 */ + src: url('iconfont.woff2?t=1764835435069') format('woff2'), + url('iconfont.woff?t=1764835435069') format('woff'), + url('iconfont.ttf?t=1764835435069') format('truetype'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.iconfour-squares:before { + content: "\ea3e"; +} + +.iconyousuojin:before { + content: "\e6f0"; +} + +.icondaimakuai:before { + content: "\e65d"; +} + +.iconcharulianjie:before { + content: "\ec7f"; +} + +.iconcharutupian:before { + content: "\ec81"; +} + +.iconwuxupailie:before { + content: "\ec82"; +} + +.iconyinyong:before { + content: "\ec88"; +} + +.iconyouxupailie:before { + content: "\ec89"; +} + +.iconzitidaima:before { + content: "\ec8a"; +} + +.iconzitishangbiao:before { + content: "\ec8b"; +} + +.iconzitibiaoti:before { + content: "\ec8c"; +} + +.iconzitixiabiao:before { + content: "\ec8d"; +} + +.iconbeijingyanse1:before { + content: "\e645"; +} + +.icondocdocx:before { + content: "\e635"; +} + +.iconsousuo1:before { + content: "\e661"; +} + +.icondodechild:before { + content: "\e70e"; +} + +.iconbofang:before { + content: "\e8a3"; +} + +.iconkuangxuan:before { + content: "\e624"; +} + +.iconcaidan:before { + content: "\e630"; +} + +.iconshangxiayidong:before { + content: "\e6c9"; +} + +.iconzuoyouyidong:before { + content: "\e6ca"; +} + +.iconbaocun:before { + content: "\e6e3"; +} + +.iconxinbiaoqianyedakai:before { + content: "\e623"; +} + +.icondaochu2:before { + content: "\e65f"; +} + +.icondaoru1:before { + content: "\e65a"; +} + +.iconarrow-left:before { + content: "\e61b"; +} + +.iconarrow-up:before { + content: "\e61c"; +} + +.icona-rongqi21:before { + content: "\e62b"; +} + +.icongeshishua:before { + content: "\e67b"; +} + +.iconcaozuo_geshishua:before { + content: "\e724"; +} + +.icontupian:before { + content: "\e8ba"; +} + +.iconwaikuang1:before { + content: "\e6db"; +} + +.iconwaikuang2:before { + content: "\e61f"; +} + +.iconqingchuyangshi:before { + content: "\e64a"; +} + +.iconchaolianjie1:before { + content: "\e6e2"; +} + +.icontag:before { + content: "\e62a"; +} + +.iconbeizhu:before { + content: "\e64b"; +} + +.icontaiyang:before { + content: "\e62e"; +} + +.iconjichuyangshi:before { + content: "\e61a"; +} + +.icongaiyao:before { + content: "\e653"; +} + +.iconMermaid:before { + content: "\e69a"; +} + +.iconzuoyouduiqi:before { + content: "\ec87"; +} + +.iconxise:before { + content: "\e680"; +} + +.iconshubiaoyidong:before { + content: "\e659"; +} + +.iconvip:before { + content: "\e65e"; +} + +.iconlianjie:before { + content: "\e619"; +} + +.iconjibiji:before { + content: "\e618"; +} + +.iconhuiyuan-:before { + content: "\e615"; +} + +.iconAIshengcheng:before { + content: "\e6b5"; +} + +.iconprinting:before { + content: "\ea28"; +} + +.iconwenjianjia:before { + content: "\e614"; +} + +.iconcontentleft:before { + content: "\e8c9"; +} + +.iconjuzhongduiqi:before { + content: "\ec80"; +} + +.iconfile-excel:before { + content: "\e7b7"; +} + +.iconfreemind:before { + content: "\e97d"; +} + +.iconwaikuang:before { + content: "\e640"; +} + +.iconhighlight:before { + content: "\e6b8"; +} + +.iconyanshibofang:before { + content: "\e648"; +} + +.iconfujian:before { + content: "\e88a"; +} + +.icongeshihua:before { + content: "\e7a3"; +} + +.iconyuanma:before { + content: "\e658"; +} + +.icongundongtiao:before { + content: "\e670"; +} + +.iconxietongwendang:before { + content: "\e60d"; +} + +.iconTXT:before { + content: "\e6e1"; +} + +.iconwenjian1:before { + content: "\e69f"; +} + +.icondodeparent:before { + content: "\e70f"; +} + +.icongongshi:before { + content: "\e617"; +} + +.icontouming:before { + content: "\e60c"; +} + +.iconlieri:before { + content: "\e60b"; +} + +.iconmoon_line:before { + content: "\e745"; +} + +.iconsousuo:before { + content: "\e693"; +} + +.iconjiantouyou:before { + content: "\e62d"; +} + +.iconbianji1:before { + content: "\e60a"; +} + +.icondaohang1:before { + content: "\e632"; +} + +.iconyanjing:before { + content: "\e8bf"; +} + +.iconwangzhan:before { + content: "\e628"; +} + +.iconcsdn:before { + content: "\e608"; +} + +.iconshejiaotubiao-10:before { + content: "\e644"; +} + +.iconstar:before { + content: "\e7df"; +} + +.iconfork:before { + content: "\e641"; +} + +.iconxiazai:before { + content: "\e613"; +} + +.iconteamwork:before { + content: "\e870"; +} + +.iconshuiyin:before { + content: "\e67a"; +} + +.iconxmind:before { + content: "\ea57"; +} + +.iconmouseR:before { + content: "\e6bd"; +} + +.iconmouseL:before { + content: "\e6c0"; +} + +.iconwenjian:before { + content: "\e607"; +} + +.iconpdf:before { + content: "\e740"; +} + +.iconPNG:before { + content: "\ec18"; +} + +.iconSVG:before { + content: "\e621"; +} + +.iconmarkdown:before { + content: "\ec04"; +} + +.iconjson:before { + content: "\ea42"; +} + +.iconlianjiexian:before { + content: "\e75b"; +} + +.iconbangzhu:before { + content: "\e620"; +} + +.iconshezhi:before { + content: "\e8b7"; +} + +.iconwushuju:before { + content: "\e643"; +} + +.iconzuijinliulan:before { + content: "\e62f"; +} + +.icon3zuidahua-3:before { + content: "\e692"; +} + +.iconzuixiaohua:before { + content: "\e650"; +} + +.iconzuidahua:before { + content: "\e651"; +} + +.iconguanbi:before { + content: "\e652"; +} + +.icondiannao:before { + content: "\eac0"; +} + +.iconzhuye:before { + content: "\e65c"; +} + +.iconbendi1x:before { + content: "\e606"; +} + +.iconbeijingyanse:before { + content: "\e6f8"; +} + +.iconqingchu:before { + content: "\e605"; +} + +.iconcase:before { + content: "\e6c6"; +} + +.iconxingzhuang-wenzi:before { + content: "\eb99"; +} + +.iconzitijiacu:before { + content: "\ec83"; +} + +.iconzitixiahuaxian:before { + content: "\ec85"; +} + +.iconzitixieti:before { + content: "\ec86"; +} + +.iconshanchuxian:before { + content: "\e612"; +} + +.iconzitiyanse:before { + content: "\e854"; +} + +.icongithub:before { + content: "\e64f"; +} + +.iconchoose1:before { + content: "\e6c5"; +} + +.iconzhuti:before { + content: "\e7aa"; +} + +.icondaochu1:before { + content: "\e63e"; +} + +.iconlingcunwei:before { + content: "\e657"; +} + +.iconexport:before { + content: "\e642"; +} + +.icondakai:before { + content: "\ebdf"; +} + +.iconxinjian:before { + content: "\e64e"; +} + +.iconjianqie:before { + content: "\e601"; +} + +.iconzhengli:before { + content: "\e83b"; +} + +.iconfuzhi:before { + content: "\e604"; +} + +.iconniantie:before { + content: "\e63f"; +} + +.iconshangyi:before { + content: "\e6be"; +} + +.iconxiayi:before { + content: "\e6bf"; +} + +.icongaikuozonglan:before { + content: "\e609"; +} + +.iconquanxuan:before { + content: "\f199"; +} + +.icondaoru:before { + content: "\e6a3"; +} + +.iconhoutui-shi:before { + content: "\e656"; +} + +.iconqianjin1:before { + content: "\e654"; +} + +.iconwithdraw:before { + content: "\e603"; +} + +.iconqianjin:before { + content: "\e600"; +} + +.iconhuifumoren:before { + content: "\e60e"; +} + +.iconhuanhang:before { + content: "\e61e"; +} + +.iconsuoxiao:before { + content: "\ec13"; +} + +.iconbianji:before { + content: "\e626"; +} + +.iconfangda:before { + content: "\e663"; +} + +.iconquanping1:before { + content: "\e664"; +} + +.icondingwei:before { + content: "\e616"; +} + +.icondaohang:before { + content: "\e611"; +} + +.iconjianpan:before { + content: "\e64d"; +} + +.iconquanping:before { + content: "\e602"; +} + +.icondaochu:before { + content: "\e63d"; +} + +.iconbiaoqian:before { + content: "\e63c"; +} + +.iconflow-Mark:before { + content: "\e65b"; +} + +.iconchaolianjie:before { + content: "\e6f4"; +} + +.iconjingzi:before { + content: "\e610"; +} + +.iconxiaolian:before { + content: "\e60f"; +} + +.iconimage:before { + content: "\e629"; +} + +.iconjiegou:before { + content: "\e61d"; +} + +.iconyangshi:before { + content: "\e631"; +} + +.iconfuhao-dagangshu:before { + content: "\e71f"; +} + +.icontianjiazijiedian:before { + content: "\e622"; +} + +.iconjiedian:before { + content: "\e655"; +} + +.iconshanchu:before { + content: "\e696"; +} + +.iconzhankai:before { + content: "\e64c"; +} + +.iconzhankai1:before { + content: "\e673"; +} + diff --git a/src/src/assets/icon-font/iconfont.ttf b/src/src/assets/icon-font/iconfont.ttf new file mode 100644 index 0000000..7c1923d Binary files /dev/null and b/src/src/assets/icon-font/iconfont.ttf differ diff --git a/src/src/assets/icon-font/iconfont.woff b/src/src/assets/icon-font/iconfont.woff new file mode 100644 index 0000000..ec9bfba Binary files /dev/null and b/src/src/assets/icon-font/iconfont.woff differ diff --git a/src/src/assets/icon-font/iconfont.woff2 b/src/src/assets/icon-font/iconfont.woff2 new file mode 100644 index 0000000..61354d6 Binary files /dev/null and b/src/src/assets/icon-font/iconfont.woff2 differ diff --git a/src/src/assets/img/foramt/1.png b/src/src/assets/img/foramt/1.png new file mode 100644 index 0000000..e160ea5 Binary files /dev/null and b/src/src/assets/img/foramt/1.png differ diff --git a/src/src/assets/img/foramt/10.png b/src/src/assets/img/foramt/10.png new file mode 100644 index 0000000..f1e7762 Binary files /dev/null and b/src/src/assets/img/foramt/10.png differ diff --git a/src/src/assets/img/foramt/2.png b/src/src/assets/img/foramt/2.png new file mode 100644 index 0000000..a25a4bf Binary files /dev/null and b/src/src/assets/img/foramt/2.png differ diff --git a/src/src/assets/img/foramt/3.png b/src/src/assets/img/foramt/3.png new file mode 100644 index 0000000..4781185 Binary files /dev/null and b/src/src/assets/img/foramt/3.png differ diff --git a/src/src/assets/img/foramt/4.png b/src/src/assets/img/foramt/4.png new file mode 100644 index 0000000..86e7f91 Binary files /dev/null and b/src/src/assets/img/foramt/4.png differ diff --git a/src/src/assets/img/foramt/5.png b/src/src/assets/img/foramt/5.png new file mode 100644 index 0000000..8f8dff7 Binary files /dev/null and b/src/src/assets/img/foramt/5.png differ diff --git a/src/src/assets/img/foramt/6.png b/src/src/assets/img/foramt/6.png new file mode 100644 index 0000000..4942726 Binary files /dev/null and b/src/src/assets/img/foramt/6.png differ diff --git a/src/src/assets/img/foramt/7.png b/src/src/assets/img/foramt/7.png new file mode 100644 index 0000000..f6d1b78 Binary files /dev/null and b/src/src/assets/img/foramt/7.png differ diff --git a/src/src/assets/img/structures/catalogOrganization.jpg b/src/src/assets/img/structures/catalogOrganization.jpg new file mode 100644 index 0000000..3a6bf3c Binary files /dev/null and b/src/src/assets/img/structures/catalogOrganization.jpg differ diff --git a/src/src/assets/img/structures/fishbone.jpg b/src/src/assets/img/structures/fishbone.jpg new file mode 100644 index 0000000..68515ad Binary files /dev/null and b/src/src/assets/img/structures/fishbone.jpg differ diff --git a/src/src/assets/img/structures/logicalStructure.jpg b/src/src/assets/img/structures/logicalStructure.jpg new file mode 100644 index 0000000..8badf2c Binary files /dev/null and b/src/src/assets/img/structures/logicalStructure.jpg differ diff --git a/src/src/assets/img/structures/logicalStructureLeft.jpg b/src/src/assets/img/structures/logicalStructureLeft.jpg new file mode 100644 index 0000000..3b15fab Binary files /dev/null and b/src/src/assets/img/structures/logicalStructureLeft.jpg differ diff --git a/src/src/assets/img/structures/mindMap.jpg b/src/src/assets/img/structures/mindMap.jpg new file mode 100644 index 0000000..05b19fa Binary files /dev/null and b/src/src/assets/img/structures/mindMap.jpg differ diff --git a/src/src/assets/img/structures/organizationStructure.jpg b/src/src/assets/img/structures/organizationStructure.jpg new file mode 100644 index 0000000..f6d1e8c Binary files /dev/null and b/src/src/assets/img/structures/organizationStructure.jpg differ diff --git a/src/src/assets/img/structures/timeline.jpg b/src/src/assets/img/structures/timeline.jpg new file mode 100644 index 0000000..3cd7b9d Binary files /dev/null and b/src/src/assets/img/structures/timeline.jpg differ diff --git a/src/src/assets/img/structures/timeline2.jpg b/src/src/assets/img/structures/timeline2.jpg new file mode 100644 index 0000000..28797f6 Binary files /dev/null and b/src/src/assets/img/structures/timeline2.jpg differ diff --git a/src/src/assets/img/structures/verticalTimeline.jpg b/src/src/assets/img/structures/verticalTimeline.jpg new file mode 100644 index 0000000..c4c4249 Binary files /dev/null and b/src/src/assets/img/structures/verticalTimeline.jpg differ diff --git a/src/src/assets/img/structures/verticalTimeline2.jpg b/src/src/assets/img/structures/verticalTimeline2.jpg new file mode 100644 index 0000000..a52856e Binary files /dev/null and b/src/src/assets/img/structures/verticalTimeline2.jpg differ diff --git a/src/src/assets/img/structures/verticalTimeline3.jpg b/src/src/assets/img/structures/verticalTimeline3.jpg new file mode 100644 index 0000000..106dd38 Binary files /dev/null and b/src/src/assets/img/structures/verticalTimeline3.jpg differ diff --git a/src/src/assets/img/图片加载失败.svg b/src/src/assets/img/图片加载失败.svg new file mode 100644 index 0000000..1b0f7d8 --- /dev/null +++ b/src/src/assets/img/图片加载失败.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-.svg b/src/src/assets/svg/business/-.svg new file mode 100644 index 0000000..2f23963 --- /dev/null +++ b/src/src/assets/svg/business/-.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_1.svg b/src/src/assets/svg/business/-_1.svg new file mode 100644 index 0000000..464b38f --- /dev/null +++ b/src/src/assets/svg/business/-_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_10.svg b/src/src/assets/svg/business/-_10.svg new file mode 100644 index 0000000..29b5d6c --- /dev/null +++ b/src/src/assets/svg/business/-_10.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_11.svg b/src/src/assets/svg/business/-_11.svg new file mode 100644 index 0000000..70edb4b --- /dev/null +++ b/src/src/assets/svg/business/-_11.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_12.svg b/src/src/assets/svg/business/-_12.svg new file mode 100644 index 0000000..2dca3f2 --- /dev/null +++ b/src/src/assets/svg/business/-_12.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_13.svg b/src/src/assets/svg/business/-_13.svg new file mode 100644 index 0000000..0b9b863 --- /dev/null +++ b/src/src/assets/svg/business/-_13.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_14.svg b/src/src/assets/svg/business/-_14.svg new file mode 100644 index 0000000..764bc47 --- /dev/null +++ b/src/src/assets/svg/business/-_14.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_15.svg b/src/src/assets/svg/business/-_15.svg new file mode 100644 index 0000000..1f7dbc4 --- /dev/null +++ b/src/src/assets/svg/business/-_15.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_16.svg b/src/src/assets/svg/business/-_16.svg new file mode 100644 index 0000000..455fd26 --- /dev/null +++ b/src/src/assets/svg/business/-_16.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_17.svg b/src/src/assets/svg/business/-_17.svg new file mode 100644 index 0000000..36ff112 --- /dev/null +++ b/src/src/assets/svg/business/-_17.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_18.svg b/src/src/assets/svg/business/-_18.svg new file mode 100644 index 0000000..df0bb8f --- /dev/null +++ b/src/src/assets/svg/business/-_18.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_2.svg b/src/src/assets/svg/business/-_2.svg new file mode 100644 index 0000000..802a446 --- /dev/null +++ b/src/src/assets/svg/business/-_2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_3.svg b/src/src/assets/svg/business/-_3.svg new file mode 100644 index 0000000..9f64cec --- /dev/null +++ b/src/src/assets/svg/business/-_3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_4.svg b/src/src/assets/svg/business/-_4.svg new file mode 100644 index 0000000..fbd7e46 --- /dev/null +++ b/src/src/assets/svg/business/-_4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_5.svg b/src/src/assets/svg/business/-_5.svg new file mode 100644 index 0000000..a9cbd0c --- /dev/null +++ b/src/src/assets/svg/business/-_5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_6.svg b/src/src/assets/svg/business/-_6.svg new file mode 100644 index 0000000..add3e62 --- /dev/null +++ b/src/src/assets/svg/business/-_6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_7.svg b/src/src/assets/svg/business/-_7.svg new file mode 100644 index 0000000..ae7bd9c --- /dev/null +++ b/src/src/assets/svg/business/-_7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_8.svg b/src/src/assets/svg/business/-_8.svg new file mode 100644 index 0000000..437543c --- /dev/null +++ b/src/src/assets/svg/business/-_8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/-_9.svg b/src/src/assets/svg/business/-_9.svg new file mode 100644 index 0000000..bab1c67 --- /dev/null +++ b/src/src/assets/svg/business/-_9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/OAxitong.svg b/src/src/assets/svg/business/OAxitong.svg new file mode 100644 index 0000000..df92799 --- /dev/null +++ b/src/src/assets/svg/business/OAxitong.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/changyongziyuan.svg b/src/src/assets/svg/business/changyongziyuan.svg new file mode 100644 index 0000000..cae6e96 --- /dev/null +++ b/src/src/assets/svg/business/changyongziyuan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/chuchashenpi.svg b/src/src/assets/svg/business/chuchashenpi.svg new file mode 100644 index 0000000..eab1129 --- /dev/null +++ b/src/src/assets/svg/business/chuchashenpi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/fanwendengji.svg b/src/src/assets/svg/business/fanwendengji.svg new file mode 100644 index 0000000..de2c15b --- /dev/null +++ b/src/src/assets/svg/business/fanwendengji.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/feizhengshiwendengji.svg b/src/src/assets/svg/business/feizhengshiwendengji.svg new file mode 100644 index 0000000..632f927 --- /dev/null +++ b/src/src/assets/svg/business/feizhengshiwendengji.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/gongwenjiaohuan.svg b/src/src/assets/svg/business/gongwenjiaohuan.svg new file mode 100644 index 0000000..f7f14c5 --- /dev/null +++ b/src/src/assets/svg/business/gongwenjiaohuan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/gongzuohuibao.svg b/src/src/assets/svg/business/gongzuohuibao.svg new file mode 100644 index 0000000..3bab822 --- /dev/null +++ b/src/src/assets/svg/business/gongzuohuibao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/gudingzichan.svg b/src/src/assets/svg/business/gudingzichan.svg new file mode 100644 index 0000000..57613ae --- /dev/null +++ b/src/src/assets/svg/business/gudingzichan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/huiyiguanli.svg b/src/src/assets/svg/business/huiyiguanli.svg new file mode 100644 index 0000000..2af78df --- /dev/null +++ b/src/src/assets/svg/business/huiyiguanli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/huiyiyuding.svg b/src/src/assets/svg/business/huiyiyuding.svg new file mode 100644 index 0000000..cc09cc4 --- /dev/null +++ b/src/src/assets/svg/business/huiyiyuding.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/kaoqinguanli.svg b/src/src/assets/svg/business/kaoqinguanli.svg new file mode 100644 index 0000000..719d3a6 --- /dev/null +++ b/src/src/assets/svg/business/kaoqinguanli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/qingxiujiashenqing.svg b/src/src/assets/svg/business/qingxiujiashenqing.svg new file mode 100644 index 0000000..d4abc1e --- /dev/null +++ b/src/src/assets/svg/business/qingxiujiashenqing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/sannianjihua.svg b/src/src/assets/svg/business/sannianjihua.svg new file mode 100644 index 0000000..51155dc --- /dev/null +++ b/src/src/assets/svg/business/sannianjihua.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/tongzhifabu.svg b/src/src/assets/svg/business/tongzhifabu.svg new file mode 100644 index 0000000..33ab042 --- /dev/null +++ b/src/src/assets/svg/business/tongzhifabu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/xiangmuguanli.svg b/src/src/assets/svg/business/xiangmuguanli.svg new file mode 100644 index 0000000..e6bb522 --- /dev/null +++ b/src/src/assets/svg/business/xiangmuguanli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/xinxitougao.svg b/src/src/assets/svg/business/xinxitougao.svg new file mode 100644 index 0000000..b7d79ef --- /dev/null +++ b/src/src/assets/svg/business/xinxitougao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/zhishichanquan.svg b/src/src/assets/svg/business/zhishichanquan.svg new file mode 100644 index 0000000..8c00607 --- /dev/null +++ b/src/src/assets/svg/business/zhishichanquan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/zhongxindongtaifabu.svg b/src/src/assets/svg/business/zhongxindongtaifabu.svg new file mode 100644 index 0000000..c8d37c5 --- /dev/null +++ b/src/src/assets/svg/business/zhongxindongtaifabu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/zongheshenpi.svg b/src/src/assets/svg/business/zongheshenpi.svg new file mode 100644 index 0000000..de28086 --- /dev/null +++ b/src/src/assets/svg/business/zongheshenpi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/business/商务 b/src/src/assets/svg/business/商务 new file mode 100644 index 0000000..e69de29 diff --git a/src/src/assets/svg/education/DNA.svg b/src/src/assets/svg/education/DNA.svg new file mode 100644 index 0000000..2037d53 --- /dev/null +++ b/src/src/assets/svg/education/DNA.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-1-shilibiao.svg b/src/src/assets/svg/education/a-1-shilibiao.svg new file mode 100644 index 0000000..682ab62 --- /dev/null +++ b/src/src/assets/svg/education/a-1-shilibiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-10-yiliaoxiang.svg b/src/src/assets/svg/education/a-10-yiliaoxiang.svg new file mode 100644 index 0000000..51e1186 --- /dev/null +++ b/src/src/assets/svg/education/a-10-yiliaoxiang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-11-yiyongweishengzhi.svg b/src/src/assets/svg/education/a-11-yiyongweishengzhi.svg new file mode 100644 index 0000000..34cb782 --- /dev/null +++ b/src/src/assets/svg/education/a-11-yiyongweishengzhi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-12-huxi.svg b/src/src/assets/svg/education/a-12-huxi.svg new file mode 100644 index 0000000..0ca0dc4 --- /dev/null +++ b/src/src/assets/svg/education/a-12-huxi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-13-xiguan.svg b/src/src/assets/svg/education/a-13-xiguan.svg new file mode 100644 index 0000000..4f41df0 --- /dev/null +++ b/src/src/assets/svg/education/a-13-xiguan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-14-zhutingqi.svg b/src/src/assets/svg/education/a-14-zhutingqi.svg new file mode 100644 index 0000000..fd11785 --- /dev/null +++ b/src/src/assets/svg/education/a-14-zhutingqi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-15-bingdu.svg b/src/src/assets/svg/education/a-15-bingdu.svg new file mode 100644 index 0000000..0bd3f3d --- /dev/null +++ b/src/src/assets/svg/education/a-15-bingdu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-16-yiyuan.svg b/src/src/assets/svg/education/a-16-yiyuan.svg new file mode 100644 index 0000000..aa4f1d7 --- /dev/null +++ b/src/src/assets/svg/education/a-16-yiyuan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-17-zhusheqi.svg b/src/src/assets/svg/education/a-17-zhusheqi.svg new file mode 100644 index 0000000..4f1ffbc --- /dev/null +++ b/src/src/assets/svg/education/a-17-zhusheqi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-18-xiguan.svg b/src/src/assets/svg/education/a-18-xiguan.svg new file mode 100644 index 0000000..f1f98c7 --- /dev/null +++ b/src/src/assets/svg/education/a-18-xiguan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-19guaizhang.svg b/src/src/assets/svg/education/a-19guaizhang.svg new file mode 100644 index 0000000..f64bfbd --- /dev/null +++ b/src/src/assets/svg/education/a-19guaizhang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-2-kouzhao.svg b/src/src/assets/svg/education/a-2-kouzhao.svg new file mode 100644 index 0000000..15c26a6 --- /dev/null +++ b/src/src/assets/svg/education/a-2-kouzhao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-20-shuye.svg b/src/src/assets/svg/education/a-20-shuye.svg new file mode 100644 index 0000000..7a3403b --- /dev/null +++ b/src/src/assets/svg/education/a-20-shuye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-3-chuangkoutie.svg b/src/src/assets/svg/education/a-3-chuangkoutie.svg new file mode 100644 index 0000000..3cbdb6e --- /dev/null +++ b/src/src/assets/svg/education/a-3-chuangkoutie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-4-lunyi.svg b/src/src/assets/svg/education/a-4-lunyi.svg new file mode 100644 index 0000000..4c401e9 --- /dev/null +++ b/src/src/assets/svg/education/a-4-lunyi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-5-mianqian.svg b/src/src/assets/svg/education/a-5-mianqian.svg new file mode 100644 index 0000000..7002809 --- /dev/null +++ b/src/src/assets/svg/education/a-5-mianqian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-6-jiancebi.svg b/src/src/assets/svg/education/a-6-jiancebi.svg new file mode 100644 index 0000000..599ae63 --- /dev/null +++ b/src/src/assets/svg/education/a-6-jiancebi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-7-xinzang.svg b/src/src/assets/svg/education/a-7-xinzang.svg new file mode 100644 index 0000000..962d8e3 --- /dev/null +++ b/src/src/assets/svg/education/a-7-xinzang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-8-DNA.svg b/src/src/assets/svg/education/a-8-DNA.svg new file mode 100644 index 0000000..2cef90f --- /dev/null +++ b/src/src/assets/svg/education/a-8-DNA.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-9-tizhongcheng.svg b/src/src/assets/svg/education/a-9-tizhongcheng.svg new file mode 100644 index 0000000..fcb25b7 --- /dev/null +++ b/src/src/assets/svg/education/a-9-tizhongcheng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-bitong1.svg b/src/src/assets/svg/education/a-bitong1.svg new file mode 100644 index 0000000..a611cf3 --- /dev/null +++ b/src/src/assets/svg/education/a-bitong1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-shu2.svg b/src/src/assets/svg/education/a-shu2.svg new file mode 100644 index 0000000..f8a272b --- /dev/null +++ b/src/src/assets/svg/education/a-shu2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-shu4.svg b/src/src/assets/svg/education/a-shu4.svg new file mode 100644 index 0000000..a8a8e67 --- /dev/null +++ b/src/src/assets/svg/education/a-shu4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-shu5.svg b/src/src/assets/svg/education/a-shu5.svg new file mode 100644 index 0000000..104124d --- /dev/null +++ b/src/src/assets/svg/education/a-shu5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-shuben2.svg b/src/src/assets/svg/education/a-shuben2.svg new file mode 100644 index 0000000..52bb174 --- /dev/null +++ b/src/src/assets/svg/education/a-shuben2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-shuben3.svg b/src/src/assets/svg/education/a-shuben3.svg new file mode 100644 index 0000000..f7cef20 --- /dev/null +++ b/src/src/assets/svg/education/a-shuben3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-shuben4.svg b/src/src/assets/svg/education/a-shuben4.svg new file mode 100644 index 0000000..bd0bcec --- /dev/null +++ b/src/src/assets/svg/education/a-shuben4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/a-xueshimao1.svg b/src/src/assets/svg/education/a-xueshimao1.svg new file mode 100644 index 0000000..622b351 --- /dev/null +++ b/src/src/assets/svg/education/a-xueshimao1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/baichui.svg b/src/src/assets/svg/education/baichui.svg new file mode 100644 index 0000000..036ae9f --- /dev/null +++ b/src/src/assets/svg/education/baichui.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/bijiben.svg b/src/src/assets/svg/education/bijiben.svg new file mode 100644 index 0000000..0859802 --- /dev/null +++ b/src/src/assets/svg/education/bijiben.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/bitong.svg b/src/src/assets/svg/education/bitong.svg new file mode 100644 index 0000000..85d7bbb --- /dev/null +++ b/src/src/assets/svg/education/bitong.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/chizi.svg b/src/src/assets/svg/education/chizi.svg new file mode 100644 index 0000000..32b95a0 --- /dev/null +++ b/src/src/assets/svg/education/chizi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/chongdian.svg b/src/src/assets/svg/education/chongdian.svg new file mode 100644 index 0000000..2839d2d --- /dev/null +++ b/src/src/assets/svg/education/chongdian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/citie.svg b/src/src/assets/svg/education/citie.svg new file mode 100644 index 0000000..bf322cf --- /dev/null +++ b/src/src/assets/svg/education/citie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/daima.svg b/src/src/assets/svg/education/daima.svg new file mode 100644 index 0000000..3adca80 --- /dev/null +++ b/src/src/assets/svg/education/daima.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/deng.svg b/src/src/assets/svg/education/deng.svg new file mode 100644 index 0000000..31f3122 --- /dev/null +++ b/src/src/assets/svg/education/deng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/dianliushiyan.svg b/src/src/assets/svg/education/dianliushiyan.svg new file mode 100644 index 0000000..29c3947 --- /dev/null +++ b/src/src/assets/svg/education/dianliushiyan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/diqiu.svg b/src/src/assets/svg/education/diqiu.svg new file mode 100644 index 0000000..50c3d34 --- /dev/null +++ b/src/src/assets/svg/education/diqiu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/diqiuyi.svg b/src/src/assets/svg/education/diqiuyi.svg new file mode 100644 index 0000000..e4f5975 --- /dev/null +++ b/src/src/assets/svg/education/diqiuyi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/fanyi.svg b/src/src/assets/svg/education/fanyi.svg new file mode 100644 index 0000000..fd1de51 --- /dev/null +++ b/src/src/assets/svg/education/fanyi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/gongwenbao.svg b/src/src/assets/svg/education/gongwenbao.svg new file mode 100644 index 0000000..1a0d104 --- /dev/null +++ b/src/src/assets/svg/education/gongwenbao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/heiban.svg b/src/src/assets/svg/education/heiban.svg new file mode 100644 index 0000000..b652661 --- /dev/null +++ b/src/src/assets/svg/education/heiban.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/huiyi.svg b/src/src/assets/svg/education/huiyi.svg new file mode 100644 index 0000000..b83a315 --- /dev/null +++ b/src/src/assets/svg/education/huiyi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/jiangbei.svg b/src/src/assets/svg/education/jiangbei.svg new file mode 100644 index 0000000..15b2575 --- /dev/null +++ b/src/src/assets/svg/education/jiangbei.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/jiaoxuelou.svg b/src/src/assets/svg/education/jiaoxuelou.svg new file mode 100644 index 0000000..e943339 --- /dev/null +++ b/src/src/assets/svg/education/jiaoxuelou.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/jinpai.svg b/src/src/assets/svg/education/jinpai.svg new file mode 100644 index 0000000..dd07c1e --- /dev/null +++ b/src/src/assets/svg/education/jinpai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/jisuan.svg b/src/src/assets/svg/education/jisuan.svg new file mode 100644 index 0000000..388e131 --- /dev/null +++ b/src/src/assets/svg/education/jisuan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/jisuanqi.svg b/src/src/assets/svg/education/jisuanqi.svg new file mode 100644 index 0000000..455bc7c --- /dev/null +++ b/src/src/assets/svg/education/jisuanqi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/naozhong.svg b/src/src/assets/svg/education/naozhong.svg new file mode 100644 index 0000000..0901e9e --- /dev/null +++ b/src/src/assets/svg/education/naozhong.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/qianbi.svg b/src/src/assets/svg/education/qianbi.svg new file mode 100644 index 0000000..11926c7 --- /dev/null +++ b/src/src/assets/svg/education/qianbi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/sepan.svg b/src/src/assets/svg/education/sepan.svg new file mode 100644 index 0000000..a99429f --- /dev/null +++ b/src/src/assets/svg/education/sepan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/shiyan.svg b/src/src/assets/svg/education/shiyan.svg new file mode 100644 index 0000000..691625d --- /dev/null +++ b/src/src/assets/svg/education/shiyan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/shouji.svg b/src/src/assets/svg/education/shouji.svg new file mode 100644 index 0000000..9931596 --- /dev/null +++ b/src/src/assets/svg/education/shouji.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/shuben.svg b/src/src/assets/svg/education/shuben.svg new file mode 100644 index 0000000..2e00a4b --- /dev/null +++ b/src/src/assets/svg/education/shuben.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/shuxie.svg b/src/src/assets/svg/education/shuxie.svg new file mode 100644 index 0000000..99eb780 --- /dev/null +++ b/src/src/assets/svg/education/shuxie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/sousuo.svg b/src/src/assets/svg/education/sousuo.svg new file mode 100644 index 0000000..196d967 --- /dev/null +++ b/src/src/assets/svg/education/sousuo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/suanpan.svg b/src/src/assets/svg/education/suanpan.svg new file mode 100644 index 0000000..3bdacb5 --- /dev/null +++ b/src/src/assets/svg/education/suanpan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/tianping.svg b/src/src/assets/svg/education/tianping.svg new file mode 100644 index 0000000..42ed4fd --- /dev/null +++ b/src/src/assets/svg/education/tianping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/tingzhenqi.svg b/src/src/assets/svg/education/tingzhenqi.svg new file mode 100644 index 0000000..ec16619 --- /dev/null +++ b/src/src/assets/svg/education/tingzhenqi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/tiyu.svg b/src/src/assets/svg/education/tiyu.svg new file mode 100644 index 0000000..d24aba2 --- /dev/null +++ b/src/src/assets/svg/education/tiyu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/wenjian.svg b/src/src/assets/svg/education/wenjian.svg new file mode 100644 index 0000000..3cf32e0 --- /dev/null +++ b/src/src/assets/svg/education/wenjian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/xianweijing.svg b/src/src/assets/svg/education/xianweijing.svg new file mode 100644 index 0000000..aa5ffd1 --- /dev/null +++ b/src/src/assets/svg/education/xianweijing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/xiaoheiban.svg b/src/src/assets/svg/education/xiaoheiban.svg new file mode 100644 index 0000000..a4984ac --- /dev/null +++ b/src/src/assets/svg/education/xiaoheiban.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/xiezizhuo.svg b/src/src/assets/svg/education/xiezizhuo.svg new file mode 100644 index 0000000..f0b044d --- /dev/null +++ b/src/src/assets/svg/education/xiezizhuo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/xueshimao.svg b/src/src/assets/svg/education/xueshimao.svg new file mode 100644 index 0000000..b8bd58b --- /dev/null +++ b/src/src/assets/svg/education/xueshimao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/yuanpan.svg b/src/src/assets/svg/education/yuanpan.svg new file mode 100644 index 0000000..0674e52 --- /dev/null +++ b/src/src/assets/svg/education/yuanpan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/education/教育 b/src/src/assets/svg/education/教育 new file mode 100644 index 0000000..e69de29 diff --git a/src/src/assets/svg/festival/celianggongju.svg b/src/src/assets/svg/festival/celianggongju.svg new file mode 100644 index 0000000..3a077a1 --- /dev/null +++ b/src/src/assets/svg/festival/celianggongju.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/chunjie.svg b/src/src/assets/svg/festival/chunjie.svg new file mode 100644 index 0000000..6c031f3 --- /dev/null +++ b/src/src/assets/svg/festival/chunjie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/duanwujie.svg b/src/src/assets/svg/festival/duanwujie.svg new file mode 100644 index 0000000..b2cf287 --- /dev/null +++ b/src/src/assets/svg/festival/duanwujie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/ertongjie.svg b/src/src/assets/svg/festival/ertongjie.svg new file mode 100644 index 0000000..604b2e0 --- /dev/null +++ b/src/src/assets/svg/festival/ertongjie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/fuqinjie.svg b/src/src/assets/svg/festival/fuqinjie.svg new file mode 100644 index 0000000..ec59a88 --- /dev/null +++ b/src/src/assets/svg/festival/fuqinjie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/ganenjie.svg b/src/src/assets/svg/festival/ganenjie.svg new file mode 100644 index 0000000..bbbc0e4 --- /dev/null +++ b/src/src/assets/svg/festival/ganenjie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/gongju.svg b/src/src/assets/svg/festival/gongju.svg new file mode 100644 index 0000000..2fba67a --- /dev/null +++ b/src/src/assets/svg/festival/gongju.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/hushijie.svg b/src/src/assets/svg/festival/hushijie.svg new file mode 100644 index 0000000..967206e --- /dev/null +++ b/src/src/assets/svg/festival/hushijie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/jiaoshijie.svg b/src/src/assets/svg/festival/jiaoshijie.svg new file mode 100644 index 0000000..eb73ba0 --- /dev/null +++ b/src/src/assets/svg/festival/jiaoshijie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/laodongjie.svg b/src/src/assets/svg/festival/laodongjie.svg new file mode 100644 index 0000000..1494219 --- /dev/null +++ b/src/src/assets/svg/festival/laodongjie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/muqinjie.svg b/src/src/assets/svg/festival/muqinjie.svg new file mode 100644 index 0000000..031932e --- /dev/null +++ b/src/src/assets/svg/festival/muqinjie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/nvshengjie.svg b/src/src/assets/svg/festival/nvshengjie.svg new file mode 100644 index 0000000..e876962 --- /dev/null +++ b/src/src/assets/svg/festival/nvshengjie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/qingrenjie.svg b/src/src/assets/svg/festival/qingrenjie.svg new file mode 100644 index 0000000..b43b8e3 --- /dev/null +++ b/src/src/assets/svg/festival/qingrenjie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/qixi.svg b/src/src/assets/svg/festival/qixi.svg new file mode 100644 index 0000000..8c03aaa --- /dev/null +++ b/src/src/assets/svg/festival/qixi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/shengdanjie.svg b/src/src/assets/svg/festival/shengdanjie.svg new file mode 100644 index 0000000..6c3f735 --- /dev/null +++ b/src/src/assets/svg/festival/shengdanjie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/shuang.svg b/src/src/assets/svg/festival/shuang.svg new file mode 100644 index 0000000..d55927f --- /dev/null +++ b/src/src/assets/svg/festival/shuang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/yuandan.svg b/src/src/assets/svg/festival/yuandan.svg new file mode 100644 index 0000000..dc16a3e --- /dev/null +++ b/src/src/assets/svg/festival/yuandan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/yuanxiaojie.svg b/src/src/assets/svg/festival/yuanxiaojie.svg new file mode 100644 index 0000000..7dfacad --- /dev/null +++ b/src/src/assets/svg/festival/yuanxiaojie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/zhongqiujie.svg b/src/src/assets/svg/festival/zhongqiujie.svg new file mode 100644 index 0000000..2376894 --- /dev/null +++ b/src/src/assets/svg/festival/zhongqiujie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/zhongyangjie.svg b/src/src/assets/svg/festival/zhongyangjie.svg new file mode 100644 index 0000000..623717c --- /dev/null +++ b/src/src/assets/svg/festival/zhongyangjie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/festival/节日 b/src/src/assets/svg/festival/节日 new file mode 100644 index 0000000..e69de29 diff --git a/src/src/assets/svg/food/binggan.svg b/src/src/assets/svg/food/binggan.svg new file mode 100644 index 0000000..32e0d9e --- /dev/null +++ b/src/src/assets/svg/food/binggan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/binggun.svg b/src/src/assets/svg/food/binggun.svg new file mode 100644 index 0000000..c260d5e --- /dev/null +++ b/src/src/assets/svg/food/binggun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/bingqilin.svg b/src/src/assets/svg/food/bingqilin.svg new file mode 100644 index 0000000..705a259 --- /dev/null +++ b/src/src/assets/svg/food/bingqilin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/boluo.svg b/src/src/assets/svg/food/boluo.svg new file mode 100644 index 0000000..85e7044 --- /dev/null +++ b/src/src/assets/svg/food/boluo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/caomei.svg b/src/src/assets/svg/food/caomei.svg new file mode 100644 index 0000000..9b60180 --- /dev/null +++ b/src/src/assets/svg/food/caomei.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/celianggongju.svg b/src/src/assets/svg/food/celianggongju.svg new file mode 100644 index 0000000..3a077a1 --- /dev/null +++ b/src/src/assets/svg/food/celianggongju.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/chengzi.svg b/src/src/assets/svg/food/chengzi.svg new file mode 100644 index 0000000..5f0d0a5 --- /dev/null +++ b/src/src/assets/svg/food/chengzi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/dangao.svg b/src/src/assets/svg/food/dangao.svg new file mode 100644 index 0000000..43b3258 --- /dev/null +++ b/src/src/assets/svg/food/dangao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/fanqiejiang.svg b/src/src/assets/svg/food/fanqiejiang.svg new file mode 100644 index 0000000..c756531 --- /dev/null +++ b/src/src/assets/svg/food/fanqiejiang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/gongju.svg b/src/src/assets/svg/food/gongju.svg new file mode 100644 index 0000000..2fba67a --- /dev/null +++ b/src/src/assets/svg/food/gongju.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/hanbao.svg b/src/src/assets/svg/food/hanbao.svg new file mode 100644 index 0000000..6300b0c --- /dev/null +++ b/src/src/assets/svg/food/hanbao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/jiandan.svg b/src/src/assets/svg/food/jiandan.svg new file mode 100644 index 0000000..073dd55 --- /dev/null +++ b/src/src/assets/svg/food/jiandan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/kafeibei.svg b/src/src/assets/svg/food/kafeibei.svg new file mode 100644 index 0000000..87fb290 --- /dev/null +++ b/src/src/assets/svg/food/kafeibei.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/lajiao.svg b/src/src/assets/svg/food/lajiao.svg new file mode 100644 index 0000000..e6cc34d --- /dev/null +++ b/src/src/assets/svg/food/lajiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/naixi.svg b/src/src/assets/svg/food/naixi.svg new file mode 100644 index 0000000..5443f8a --- /dev/null +++ b/src/src/assets/svg/food/naixi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/niunai.svg b/src/src/assets/svg/food/niunai.svg new file mode 100644 index 0000000..dc3e630 --- /dev/null +++ b/src/src/assets/svg/food/niunai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/pingguo.svg b/src/src/assets/svg/food/pingguo.svg new file mode 100644 index 0000000..3584aab --- /dev/null +++ b/src/src/assets/svg/food/pingguo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/pisa.svg b/src/src/assets/svg/food/pisa.svg new file mode 100644 index 0000000..f70c521 --- /dev/null +++ b/src/src/assets/svg/food/pisa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/putao.svg b/src/src/assets/svg/food/putao.svg new file mode 100644 index 0000000..034c01a --- /dev/null +++ b/src/src/assets/svg/food/putao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/quqi.svg b/src/src/assets/svg/food/quqi.svg new file mode 100644 index 0000000..8021ea3 --- /dev/null +++ b/src/src/assets/svg/food/quqi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/regou.svg b/src/src/assets/svg/food/regou.svg new file mode 100644 index 0000000..87bcce3 --- /dev/null +++ b/src/src/assets/svg/food/regou.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/shutiao.svg b/src/src/assets/svg/food/shutiao.svg new file mode 100644 index 0000000..d20a47e --- /dev/null +++ b/src/src/assets/svg/food/shutiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/sudaqishui.svg b/src/src/assets/svg/food/sudaqishui.svg new file mode 100644 index 0000000..9d78ae3 --- /dev/null +++ b/src/src/assets/svg/food/sudaqishui.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/taozi.svg b/src/src/assets/svg/food/taozi.svg new file mode 100644 index 0000000..5c1f435 --- /dev/null +++ b/src/src/assets/svg/food/taozi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/tiantianquan.svg b/src/src/assets/svg/food/tiantianquan.svg new file mode 100644 index 0000000..cd82d7b --- /dev/null +++ b/src/src/assets/svg/food/tiantianquan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/xiangjiao.svg b/src/src/assets/svg/food/xiangjiao.svg new file mode 100644 index 0000000..e667982 --- /dev/null +++ b/src/src/assets/svg/food/xiangjiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/xigua.svg b/src/src/assets/svg/food/xigua.svg new file mode 100644 index 0000000..c98bee4 --- /dev/null +++ b/src/src/assets/svg/food/xigua.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/xilanhua.svg b/src/src/assets/svg/food/xilanhua.svg new file mode 100644 index 0000000..5d73b2b --- /dev/null +++ b/src/src/assets/svg/food/xilanhua.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/yingtao.svg b/src/src/assets/svg/food/yingtao.svg new file mode 100644 index 0000000..b3574f1 --- /dev/null +++ b/src/src/assets/svg/food/yingtao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/yumi.svg b/src/src/assets/svg/food/yumi.svg new file mode 100644 index 0000000..bc66ee2 --- /dev/null +++ b/src/src/assets/svg/food/yumi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/food/食物 b/src/src/assets/svg/food/食物 new file mode 100644 index 0000000..e69de29 diff --git a/src/src/assets/svg/medicine/a-1-shilibiao.svg b/src/src/assets/svg/medicine/a-1-shilibiao.svg new file mode 100644 index 0000000..682ab62 --- /dev/null +++ b/src/src/assets/svg/medicine/a-1-shilibiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-10-yiliaoxiang.svg b/src/src/assets/svg/medicine/a-10-yiliaoxiang.svg new file mode 100644 index 0000000..51e1186 --- /dev/null +++ b/src/src/assets/svg/medicine/a-10-yiliaoxiang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-11-yiyongweishengzhi.svg b/src/src/assets/svg/medicine/a-11-yiyongweishengzhi.svg new file mode 100644 index 0000000..34cb782 --- /dev/null +++ b/src/src/assets/svg/medicine/a-11-yiyongweishengzhi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-12-huxi.svg b/src/src/assets/svg/medicine/a-12-huxi.svg new file mode 100644 index 0000000..0ca0dc4 --- /dev/null +++ b/src/src/assets/svg/medicine/a-12-huxi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-13-xiguan.svg b/src/src/assets/svg/medicine/a-13-xiguan.svg new file mode 100644 index 0000000..4f41df0 --- /dev/null +++ b/src/src/assets/svg/medicine/a-13-xiguan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-14-zhutingqi.svg b/src/src/assets/svg/medicine/a-14-zhutingqi.svg new file mode 100644 index 0000000..fd11785 --- /dev/null +++ b/src/src/assets/svg/medicine/a-14-zhutingqi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-15-bingdu.svg b/src/src/assets/svg/medicine/a-15-bingdu.svg new file mode 100644 index 0000000..0bd3f3d --- /dev/null +++ b/src/src/assets/svg/medicine/a-15-bingdu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-16-yiyuan.svg b/src/src/assets/svg/medicine/a-16-yiyuan.svg new file mode 100644 index 0000000..aa4f1d7 --- /dev/null +++ b/src/src/assets/svg/medicine/a-16-yiyuan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-17-zhusheqi.svg b/src/src/assets/svg/medicine/a-17-zhusheqi.svg new file mode 100644 index 0000000..4f1ffbc --- /dev/null +++ b/src/src/assets/svg/medicine/a-17-zhusheqi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-18-xiguan.svg b/src/src/assets/svg/medicine/a-18-xiguan.svg new file mode 100644 index 0000000..f1f98c7 --- /dev/null +++ b/src/src/assets/svg/medicine/a-18-xiguan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-19guaizhang.svg b/src/src/assets/svg/medicine/a-19guaizhang.svg new file mode 100644 index 0000000..f64bfbd --- /dev/null +++ b/src/src/assets/svg/medicine/a-19guaizhang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-2-kouzhao.svg b/src/src/assets/svg/medicine/a-2-kouzhao.svg new file mode 100644 index 0000000..15c26a6 --- /dev/null +++ b/src/src/assets/svg/medicine/a-2-kouzhao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-20-shuye.svg b/src/src/assets/svg/medicine/a-20-shuye.svg new file mode 100644 index 0000000..7a3403b --- /dev/null +++ b/src/src/assets/svg/medicine/a-20-shuye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-3-chuangkoutie.svg b/src/src/assets/svg/medicine/a-3-chuangkoutie.svg new file mode 100644 index 0000000..3cbdb6e --- /dev/null +++ b/src/src/assets/svg/medicine/a-3-chuangkoutie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-4-lunyi.svg b/src/src/assets/svg/medicine/a-4-lunyi.svg new file mode 100644 index 0000000..4c401e9 --- /dev/null +++ b/src/src/assets/svg/medicine/a-4-lunyi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-5-mianqian.svg b/src/src/assets/svg/medicine/a-5-mianqian.svg new file mode 100644 index 0000000..7002809 --- /dev/null +++ b/src/src/assets/svg/medicine/a-5-mianqian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-6-jiancebi.svg b/src/src/assets/svg/medicine/a-6-jiancebi.svg new file mode 100644 index 0000000..599ae63 --- /dev/null +++ b/src/src/assets/svg/medicine/a-6-jiancebi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-7-xinzang.svg b/src/src/assets/svg/medicine/a-7-xinzang.svg new file mode 100644 index 0000000..962d8e3 --- /dev/null +++ b/src/src/assets/svg/medicine/a-7-xinzang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-8-DNA.svg b/src/src/assets/svg/medicine/a-8-DNA.svg new file mode 100644 index 0000000..2cef90f --- /dev/null +++ b/src/src/assets/svg/medicine/a-8-DNA.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/a-9-tizhongcheng.svg b/src/src/assets/svg/medicine/a-9-tizhongcheng.svg new file mode 100644 index 0000000..fcb25b7 --- /dev/null +++ b/src/src/assets/svg/medicine/a-9-tizhongcheng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/medicine/医疗 b/src/src/assets/svg/medicine/医疗 new file mode 100644 index 0000000..e69de29 diff --git a/src/src/assets/svg/tools/gaizhui.svg b/src/src/assets/svg/tools/gaizhui.svg new file mode 100644 index 0000000..bae28c5 --- /dev/null +++ b/src/src/assets/svg/tools/gaizhui.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan.svg b/src/src/assets/svg/tools/ziyuan.svg new file mode 100644 index 0000000..86c6f89 --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_1.svg b/src/src/assets/svg/tools/ziyuan_1.svg new file mode 100644 index 0000000..e8081cd --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_10.svg b/src/src/assets/svg/tools/ziyuan_10.svg new file mode 100644 index 0000000..bb88c9b --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_10.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_11.svg b/src/src/assets/svg/tools/ziyuan_11.svg new file mode 100644 index 0000000..9a7ff4e --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_11.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_12.svg b/src/src/assets/svg/tools/ziyuan_12.svg new file mode 100644 index 0000000..2cb20b2 --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_12.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_13.svg b/src/src/assets/svg/tools/ziyuan_13.svg new file mode 100644 index 0000000..6428c97 --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_13.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_14.svg b/src/src/assets/svg/tools/ziyuan_14.svg new file mode 100644 index 0000000..dfe47e6 --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_14.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_15.svg b/src/src/assets/svg/tools/ziyuan_15.svg new file mode 100644 index 0000000..4ed2773 --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_15.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_16.svg b/src/src/assets/svg/tools/ziyuan_16.svg new file mode 100644 index 0000000..c1af7e5 --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_16.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_17.svg b/src/src/assets/svg/tools/ziyuan_17.svg new file mode 100644 index 0000000..0c3af49 --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_17.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_18.svg b/src/src/assets/svg/tools/ziyuan_18.svg new file mode 100644 index 0000000..98983ab --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_18.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_2.svg b/src/src/assets/svg/tools/ziyuan_2.svg new file mode 100644 index 0000000..4b79c30 --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_3.svg b/src/src/assets/svg/tools/ziyuan_3.svg new file mode 100644 index 0000000..aa609ad --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_4.svg b/src/src/assets/svg/tools/ziyuan_4.svg new file mode 100644 index 0000000..bffbad4 --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_5.svg b/src/src/assets/svg/tools/ziyuan_5.svg new file mode 100644 index 0000000..72d8f4c --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_6.svg b/src/src/assets/svg/tools/ziyuan_6.svg new file mode 100644 index 0000000..d5d13d5 --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_7.svg b/src/src/assets/svg/tools/ziyuan_7.svg new file mode 100644 index 0000000..4dcbef5 --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_8.svg b/src/src/assets/svg/tools/ziyuan_8.svg new file mode 100644 index 0000000..d00334f --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/ziyuan_9.svg b/src/src/assets/svg/tools/ziyuan_9.svg new file mode 100644 index 0000000..e0e9e1e --- /dev/null +++ b/src/src/assets/svg/tools/ziyuan_9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/tools/工具 b/src/src/assets/svg/tools/工具 new file mode 100644 index 0000000..e69de29 diff --git a/src/src/assets/svg/travel/banshouli.svg b/src/src/assets/svg/travel/banshouli.svg new file mode 100644 index 0000000..11eb441 --- /dev/null +++ b/src/src/assets/svg/travel/banshouli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/chuhangshijian.svg b/src/src/assets/svg/travel/chuhangshijian.svg new file mode 100644 index 0000000..fd0ab6f --- /dev/null +++ b/src/src/assets/svg/travel/chuhangshijian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/ditu.svg b/src/src/assets/svg/travel/ditu.svg new file mode 100644 index 0000000..7af7852 --- /dev/null +++ b/src/src/assets/svg/travel/ditu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/fengjing.svg b/src/src/assets/svg/travel/fengjing.svg new file mode 100644 index 0000000..1e39d13 --- /dev/null +++ b/src/src/assets/svg/travel/fengjing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/gonglve.svg b/src/src/assets/svg/travel/gonglve.svg new file mode 100644 index 0000000..b1b72d6 --- /dev/null +++ b/src/src/assets/svg/travel/gonglve.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/hangli.svg b/src/src/assets/svg/travel/hangli.svg new file mode 100644 index 0000000..c991f89 --- /dev/null +++ b/src/src/assets/svg/travel/hangli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/huafei.svg b/src/src/assets/svg/travel/huafei.svg new file mode 100644 index 0000000..de9c9f3 --- /dev/null +++ b/src/src/assets/svg/travel/huafei.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/jipiao.svg b/src/src/assets/svg/travel/jipiao.svg new file mode 100644 index 0000000..2ac1c49 --- /dev/null +++ b/src/src/assets/svg/travel/jipiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/jiudian.svg b/src/src/assets/svg/travel/jiudian.svg new file mode 100644 index 0000000..90fc62b --- /dev/null +++ b/src/src/assets/svg/travel/jiudian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/lvban.svg b/src/src/assets/svg/travel/lvban.svg new file mode 100644 index 0000000..e70d223 --- /dev/null +++ b/src/src/assets/svg/travel/lvban.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/meishi.svg b/src/src/assets/svg/travel/meishi.svg new file mode 100644 index 0000000..eea9914 --- /dev/null +++ b/src/src/assets/svg/travel/meishi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/menpiao.svg b/src/src/assets/svg/travel/menpiao.svg new file mode 100644 index 0000000..e982774 --- /dev/null +++ b/src/src/assets/svg/travel/menpiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/paishe.svg b/src/src/assets/svg/travel/paishe.svg new file mode 100644 index 0000000..21cae9e --- /dev/null +++ b/src/src/assets/svg/travel/paishe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/qianzheng.svg b/src/src/assets/svg/travel/qianzheng.svg new file mode 100644 index 0000000..b25343f --- /dev/null +++ b/src/src/assets/svg/travel/qianzheng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/shangdian.svg b/src/src/assets/svg/travel/shangdian.svg new file mode 100644 index 0000000..9611b47 --- /dev/null +++ b/src/src/assets/svg/travel/shangdian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/tianqi.svg b/src/src/assets/svg/travel/tianqi.svg new file mode 100644 index 0000000..a7eee08 --- /dev/null +++ b/src/src/assets/svg/travel/tianqi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/youlechangsuo.svg b/src/src/assets/svg/travel/youlechangsuo.svg new file mode 100644 index 0000000..faeb39d --- /dev/null +++ b/src/src/assets/svg/travel/youlechangsuo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/yuyanfanyi.svg b/src/src/assets/svg/travel/yuyanfanyi.svg new file mode 100644 index 0000000..3206a9d --- /dev/null +++ b/src/src/assets/svg/travel/yuyanfanyi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/zhuyishixiang.svg b/src/src/assets/svg/travel/zhuyishixiang.svg new file mode 100644 index 0000000..f71e648 --- /dev/null +++ b/src/src/assets/svg/travel/zhuyishixiang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/zuche.svg b/src/src/assets/svg/travel/zuche.svg new file mode 100644 index 0000000..306ec6b --- /dev/null +++ b/src/src/assets/svg/travel/zuche.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/src/assets/svg/travel/旅行 b/src/src/assets/svg/travel/旅行 new file mode 100644 index 0000000..e69de29 diff --git a/src/src/components/ImgUpload/index.vue b/src/src/components/ImgUpload/index.vue new file mode 100644 index 0000000..db6d2bf --- /dev/null +++ b/src/src/components/ImgUpload/index.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/src/src/components/ImgUpload/style.less b/src/src/components/ImgUpload/style.less new file mode 100644 index 0000000..e482775 --- /dev/null +++ b/src/src/components/ImgUpload/style.less @@ -0,0 +1,92 @@ +.imgUploadContainer { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + background-color: rgba(255, 255, 255, 0.9); + z-index: 1000; + + &.isDark { + + .imgUploadPanel { + + .imgUploadInputArea { + background-color: #363b3f; + color: hsla(0, 0%, 100%, 0.6); + } + } + + } + + .imgUploadPanel { + position: relative; + width: 100%; + font-size: 22px; + white-space: nowrap; + color: #909090; + cursor: default; + user-select: none; + + .title { + margin-bottom: 15px; + font-size: 22px; + font-weight: 700; + color: hsla(218, 9%, 51%, 0.8); + } + + .closeBtn { + position: absolute; + right: 25px; + top: 32px; + cursor: pointer; + } + + .imgUploadInputArea { + display: block; + width: 100%; + height: 200px; + font-size: 20px; + color: rgba(51, 51, 51, 0.4); + background-color: hsla(0, 0%, 87%, 0.6); + border: none; + outline: none; + cursor: pointer; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + white-space: normal; + padding: 10px; + } + + #imgUploadInput { + display: none; + } + + .uploadInfoBox { + position: relative; + width: 100%; + height: 200px; + background-color: hsla(0, 0%, 87%, 0.6); + + .previewBox { + width: 100%; + height: 100%; + background-size: contain; + background-repeat: no-repeat; + background-position: center; + } + + .delBtn { + position: absolute; + right: 0px; + top: 0px; + cursor: pointer; + width: 20px; + height: 20px; + background-color: #fff; + } + } + } +} \ No newline at end of file diff --git a/src/src/components/ImgUpload/utils.js b/src/src/components/ImgUpload/utils.js new file mode 100644 index 0000000..d926e7d --- /dev/null +++ b/src/src/components/ImgUpload/utils.js @@ -0,0 +1,40 @@ +export const getDroppedText = item => { + return new Promise(resolve => { + item.getAsString(resolve) + }) +} + +export const handleFiles = (files, validateFileType) => { + if (!files || files.length === 0) return + let res = null + Array.from(files).forEach(file => { + if (typeof validateFileType === 'function') { + if (validateFileType(file)) { + res = file + } + } else { + res = file + } + }) + return res +} + +export const getDataFromDt = async (dt, validateFileType) => { + let text = null + let file = null + if (dt.files && dt.files.length > 0) { + file = handleFiles(dt.files, validateFileType) + } + else if (dt.items && dt.items.length > 0) { + for (let i = 0; i < dt.items.length; i++) { + const item = dt.items[i] + if (item.kind === 'string' && item.type === 'text/plain') { + text = await getDroppedText(item) + } + } + } + return { + text, + file + } +} diff --git a/src/src/config/constant.js b/src/src/config/constant.js new file mode 100644 index 0000000..a989d63 --- /dev/null +++ b/src/src/config/constant.js @@ -0,0 +1,149 @@ +export const layoutImgMap = { + logicalStructure: require('../assets/img/structures/logicalStructure.jpg'), + logicalStructureLeft: require('../assets/img/structures/logicalStructureLeft.jpg'), + mindMap: require('../assets/img/structures/mindMap.jpg'), + organizationStructure: require('../assets/img/structures/organizationStructure.jpg'), + catalogOrganization: require('../assets/img/structures/catalogOrganization.jpg'), + timeline: require('../assets/img/structures/timeline.jpg'), + timeline2: require('../assets/img/structures/timeline2.jpg'), + fishbone: require('../assets/img/structures/fishbone.jpg'), + verticalTimeline: require('../assets/img/structures/verticalTimeline.jpg') +} + +export const formulaList = [ + 'a^2', + 'a_2', + 'a^{2+2}', + 'a_{i,j}', + 'x_2^3', + '\\overbrace{1+2+\\cdots+100}', + '\\sum_{k=1}^N k^2', + '\\lim_{n \\to \\infty}x_n', + '\\int_{-N}^{N} e^x\\, dx', + '\\sqrt{3}', + '\\sqrt[n]{3}', + '\\sin\\theta', + '\\log X', + '\\log_{10}', + '\\log_\\alpha X', + '\\lim_{t\\to n}T', + '\\frac{1}{2}=0.5', + '\\binom{n}{k}', + '\\begin{matrix}x & y \\\\z & v\\end{matrix}', + '\\begin{cases}3x + 5y + z \\\\7x - 2y + 4z \\\\-6x + 3y + 2z\\end{cases}' +] + +export const supportChangeLineStyleLayouts = [ + 'logicalStructure', + 'logicalStructureLeft', + 'mindMap', + 'organizationStructure', + 'verticalTimeline' +] + +export const supportLineRadiusLayouts = [ + 'logicalStructure', + 'logicalStructureLeft', + 'mindMap', + 'verticalTimeline' +] + +export const supportNodeUseLineStyleLayouts = [ + 'logicalStructure', + 'logicalStructureLeft', + 'mindMap', + 'catalogOrganization', + 'organizationStructure' +] + +export const supportRootLineKeepSameInCurveLayouts = [ + 'logicalStructure', + 'logicalStructureLeft', + 'mindMap', + 'organizationStructure' +] + +export const rainbowLinesOptions = [ + { + value: 'close' + }, + { + value: 'colors1', + list: [ + 'rgb(255, 213, 73)', + 'rgb(255, 136, 126)', + 'rgb(107, 225, 141)', + 'rgb(151, 171, 255)', + 'rgb(129, 220, 242)', + 'rgb(255, 163, 125)', + 'rgb(152, 132, 234)' + ] + }, + { + value: 'colors2', + list: [ + 'rgb(248, 93, 93)', + 'rgb(255, 151, 84)', + 'rgb(255, 214, 69)', + 'rgb(73, 205, 140)', + 'rgb(64, 192, 255)', + 'rgb(84, 110, 214)', + 'rgb(164, 93, 220)' + ] + }, + { + value: 'colors3', + list: [ + 'rgb(140, 240, 231)', + 'rgb(74, 210, 255)', + 'rgb(65, 168, 243)', + 'rgb(49, 128, 205)', + 'rgb(188, 226, 132)', + 'rgb(113, 215, 123)', + 'rgb(120, 191, 109)' + ] + }, + { + value: 'colors4', + list: [ + 'rgb(169, 98, 99)', + 'rgb(245, 125, 123)', + 'rgb(254, 183, 168)', + 'rgb(251, 218, 171)', + 'rgb(138, 163, 181)', + 'rgb(131, 127, 161)', + 'rgb(84, 83, 140)' + ] + }, + { + value: 'colors5', + list: [ + 'rgb(255, 229, 142)', + 'rgb(254, 158, 41)', + 'rgb(248, 119, 44)', + 'rgb(232, 82, 80)', + 'rgb(182, 66, 98)', + 'rgb(99, 54, 99)', + 'rgb(65, 40, 82)' + ] + }, + { + value: 'colors6', + list: [ + 'rgb(171, 227, 209)', + 'rgb(107, 201, 196)', + 'rgb(55, 170, 169)', + 'rgb(18, 135, 131)', + 'rgb(74, 139, 166)', + 'rgb(75, 105, 150)', + 'rgb(57, 75, 133)' + ] + } +] + +export const toastUiEditorLangMap = { + zh: 'zh-CN', + en: 'en-US', + ['zh-TW']: 'zh-TW', + zhtw: 'zh-TW' +} \ No newline at end of file diff --git a/src/src/config/en.js b/src/src/config/en.js new file mode 100644 index 0000000..0feaab3 --- /dev/null +++ b/src/src/config/en.js @@ -0,0 +1,694 @@ +import { checkIsMac } from '@/utils/index.js' + +export const fontFamilyList = [ + { + name: 'Song Ti', + value: '宋体, SimSun, Songti SC' + }, + { + name: 'Microsoft Yahei', + value: '微软雅黑, Microsoft YaHei' + }, + { + name: 'Italics', + value: '楷体, 楷体_GB2312, SimKai, STKaiti' + }, + { + name: 'Boldface', + value: '黑体, SimHei, Heiti SC' + }, + { + name: 'Official script', + value: '隶书, SimLi' + }, + { + name: 'Andale Mono', + value: 'andale mono' + }, + { + name: 'Arial', + value: 'arial, helvetica, sans-serif' + }, + { + name: 'arialBlack', + value: 'arial black, avant garde' + }, + { + name: 'Comic Sans Ms', + value: 'comic sans ms' + }, + { + name: 'Impact', + value: 'impact, chicago' + }, + { + name: 'Times New Roman', + value: 'times new roman' + }, + { + name: 'Sans-Serif', + value: 'sans-serif' + }, + { + name: 'serif', + value: 'serif' + } +] + +export const borderDasharrayList = [ + { + name: 'Solid', + value: 'none' + }, + { + name: 'Dotted1', + value: '5,5' + }, + { + name: 'Dotted2', + value: '10,10' + }, + { + name: 'Dotted3', + value: '20,10,5,5,5,10' + }, + { + name: 'Dotted4', + value: '5,5,1,5' + }, + { + name: 'Dotted5', + value: '15,10,5,10,15' + }, + { + name: 'Dotted6', + value: '1,5' + }, + { + name: 'Dotted7', + value: '6,4' + } +] + +export const lineStyleList = [ + { + name: 'Straight', + value: 'straight' + }, + { + name: 'Curve', + value: 'curve' + }, + { + name: 'Curve2', + value: 'curve2' + }, + { + name: 'Direct', + value: 'direct' + } +] + +export const rootLineKeepSameInCurveList = [ + { + name: 'Bracket', + value: false + }, + { + name: 'Brace', + value: true + } +] + +export const rootLineKeepSameInCurveList2 = [ + { + name: 'Bracket', + value: true + }, + { + name: 'Brace', + value: false + } +] + +export const backgroundRepeatList = [ + { + name: 'No repeat', + value: 'no-repeat' + }, + { + name: 'Repeat', + value: 'repeat' + }, + { + name: 'Repeat-x', + value: 'repeat-x' + }, + { + name: 'Repeat-y', + value: 'repeat-y' + } +] + +export const backgroundPositionList = [ + { + name: 'Default', + value: '0% 0%' + }, + { + name: 'Left top', + value: 'left top' + }, + { + name: 'Left center', + value: 'left center' + }, + { + name: 'Left bottom', + value: 'left bottom' + }, + { + name: 'Right top', + value: 'right top' + }, + { + name: 'Right center', + value: 'right center' + }, + { + name: 'Right bottom', + value: 'right bottom' + }, + { + name: 'Center top', + value: 'center top' + }, + { + name: 'Center center', + value: 'center center' + }, + { + name: 'Center bottom', + value: 'center bottom' + } +] + +const isMac = checkIsMac() +const ctrl = isMac ? '⌘' : 'Ctrl' +const enter = isMac ? 'Return' : 'Enter' +const macFn = isMac ? 'fn + ' : '' + +export const backgroundSizeList = [ + { + name: 'Auto', + value: 'auto' + }, + { + name: 'Cover', + value: 'cover' + }, + { + name: 'Contain', + value: 'contain' + } +] + +export const shortcutKeyList = [ + { + type: 'Obsidian specific', + list: [ + { + icon: 'iconbaocun', + name: 'Save and update image data', + value: `${ctrl} + Shfit + S` + }, + { + icon: 'iconxinbiaoqianyedakai', + name: 'New tab opens hyperlink', + value: `${ctrl} + Left key` + } + ] + }, + { + type: 'Node operation', + list: [ + { + icon: 'icontianjiazijiedian', + name: 'Inert child node', + value: 'Tab | Insert' + }, + { + icon: 'iconjiedian', + name: 'Insert sibling node', + value: enter + }, + { + icon: 'icondodeparent', + name: 'Insert parent node', + value: 'Shift + Tab' + }, + { + icon: 'iconshangyi', + name: 'Move up node', + value: `${ctrl} + ↑` + }, + { + icon: 'iconxiayi', + name: 'Move down node', + value: `${ctrl} + ↓` + }, + { + icon: 'icongaikuozonglan', + name: 'Insert summary', + value: `${ctrl} + G` + }, + { + icon: 'iconzhankai', + name: 'Expand/UnExpand node', + value: '/' + }, + { + icon: 'iconshanchu', + name: 'Delete node', + value: 'Delete | Backspace' + }, + { + icon: 'iconshanchu', + name: 'Delete current node', + value: 'Shift + Backspace' + }, + { + icon: 'iconbianji', + name: 'Edit node', + value: macFn + 'F2' + }, + { + icon: 'iconzhengli', + name: 'Arrange layout', + value: `${ctrl} + R` + }, + { + icon: 'iconzuoyouduiqi', + name: 'One click same level node alignment', + value: `${ctrl} + E` + }, + { + icon: 'iconsousuo', + name: 'Search and Replace', + value: `${ctrl} + F` + } + ] + }, + { + type: 'Edit operation', + list: [ + { + icon: 'iconhoutui-shi', + name: 'Undo', + value: `${ctrl} + Z` + }, + { + icon: 'iconqianjin1', + name: 'Redo', + value: `${ctrl} + Y` + }, + { + icon: 'iconhuanhang', + name: 'Text wrap', + value: `Shift + ${enter}` + }, + { + icon: 'iconcase', + name: 'Increase font size', + value: `${ctrl} + Shift + +` + }, + { + icon: 'iconcase', + name: 'Decrease font size', + value: `${ctrl} + Shift + -` + }, + { + icon: 'iconzitijiacu', + name: 'Bold', + value: `${ctrl} + B` + }, + { + icon: 'iconzitixieti', + name: 'Italic', + value: `${ctrl} + I` + }, + { + icon: 'iconzitixiahuaxian', + name: 'Underline', + value: `${ctrl} + U` + }, + { + icon: 'iconshanchuxian', + name: 'Strikethrough', + value: `${ctrl} + [` + }, + { + icon: 'iconfuzhi', + name: 'Copy node', + value: `${ctrl} + C` + }, + { + icon: 'iconjianqie', + name: 'Cut node', + value: `${ctrl} + X` + }, + { + icon: 'iconniantie', + name: 'Paste node', + value: `${ctrl} + V` + }, + { + icon: 'iconquanxuan', + name: 'Select all', + value: `${ctrl} + A` + }, + { + icon: 'iconquanxuan', + name: 'Multiple choice', + value: `Right click / ${ctrl} + Left click` + } + ] + }, + { + type: 'Canvas operation', + list: [ + { + icon: 'iconfangda', + name: 'Zoom in', + value: `${ctrl} + +` + }, + { + icon: 'iconsuoxiao', + name: 'Zoom out', + value: `${ctrl} + -` + }, + { + icon: 'iconfangda', + name: 'Zoom in/Zoom out', + value: `${ctrl} + Mouse wheel` + }, + { + icon: 'icondingwei', + name: 'Back root node', + value: `${ctrl} + ${enter}` + }, + { + icon: 'iconquanping1', + name: 'Fit canvas', + value: `${ctrl} + Shift + I` + }, + { + icon: 'iconshubiaoyidong', + name: 'Moving canvas', + value: `Left click / Right click / Space bar + Left click` + }, + { + icon: 'iconshangxiayidong', + name: 'Move the canvas up and down', + value: `Mouse wheel` + }, + { + icon: 'iconzuoyouyidong', + name: 'Move the canvas left and right', + value: `Shift + Mouse wheel` + } + ] + }, + { + type: 'Outline Operation', + list: [ + { + icon: 'iconhuanhang', + name: 'Text wrap', + value: `Shift + ${enter}` + }, + { + icon: 'iconshanchu', + name: 'Delete current node', + value: 'Delete' + }, + { + icon: 'iconjiedian', + name: 'Insert sibling node', + value: enter + }, + { + icon: 'icondodechild', + name: 'Move down one level', + value: 'Tab' + }, + { + icon: 'icondodeparent', + name: 'Move up one level', + value: 'Shift + Tab' + }, + { + icon: 'iconjiedian', + name: 'Create the content behind the cursor as a peer node', + value: `Ctrl + ${enter}` + } + ] + } +] + +export const shapeList = [ + { + name: 'Rectangle', + value: 'rectangle' + }, + { + name: 'Diamond', + value: 'diamond' + }, + { + name: 'Parallelogram', + value: 'parallelogram' + }, + { + name: 'Rounded rectangle', + value: 'roundedRectangle' + }, + { + name: 'Octagonal rectangle', + value: 'octagonalRectangle' + }, + { + name: 'Outer triangular rectangle', + value: 'outerTriangularRectangle' + }, + { + name: 'Inner triangular rectangle', + value: 'innerTriangularRectangle' + }, + { + name: 'Ellipse', + value: 'ellipse' + }, + { + name: 'Circle', + value: 'circle' + } +] + +export const sidebarTriggerList = [ + { + name: 'Node style', + value: 'nodeStyle', + icon: 'iconzhuti' + }, + { + name: 'Base style', + value: 'baseStyle', + icon: 'iconyangshi' + }, + { + name: 'Theme', + value: 'theme', + icon: 'iconjingzi' + }, + { + name: 'Structure', + value: 'structure', + icon: 'iconjiegou' + }, + { + name: 'Outline', + value: 'outline', + icon: 'iconfuhao-dagangshu' + }, + { + name: 'Setting', + value: 'setting', + icon: 'iconshezhi' + } +] + +export const downTypeList = [ + { + name: '思绪 file', + type: 'smm', + icon: 'iconwenjian', + desc: + 'SimpleMindMap private format, can be used for re import, and the client can directly edit it' + }, + { + name: 'Image', + type: 'png', + icon: 'iconPNG', + desc: 'Common image formats, suitable for viewing and sharing' + }, + { + name: 'SVG', + type: 'svg', + icon: 'iconSVG', + desc: 'Scalable Vector Graphics' + }, + { + name: 'PDF', + type: 'pdf', + icon: 'iconpdf', + desc: 'Suitable for viewing, browsing, and printing' + }, + { + name: 'Markdown', + type: 'md', + icon: 'iconmarkdown', + desc: 'MD text format, easy for other software to open' + }, + { + name: 'XMind', + type: 'xmind', + icon: 'iconxmind', + desc: 'XMind software file' + }, + { + name: 'Txt', + type: 'txt', + icon: 'iconTXT', + desc: 'Plain text file' + }, + { + name: 'JSON', + type: 'json', + icon: 'iconjson', + desc: 'Popular data exchange format that can be used for re importing' + } +] + +export const linearGradientDirList = [ + { + name: 'Left to right', + value: '1', + start: [0, 0], + end: [1, 0] + }, + { + name: 'Right to left', + value: '2', + start: [1, 0], + end: [0, 0] + }, + { + name: 'Top to bottom', + value: '3', + start: [0, 0], + end: [0, 1] + }, + { + name: 'Bottom to top', + value: '4', + start: [0, 1], + end: [0, 0] + }, + { + name: 'Left top to right bottom', + value: '5', + start: [0, 0], + end: [1, 1] + }, + { + name: 'Left bottom to right top', + value: '6', + start: [0, 1], + end: [1, 0] + }, + { + name: 'Right top to left bottom', + value: '7', + start: [1, 0], + end: [0, 1] + }, + { + name: 'Right bottom to left top', + value: '8', + start: [1, 1], + end: [0, 0] + } +] + +export const alignList = [ + { + name: 'Align left', + value: 'left' + }, + { + name: 'Align center', + value: 'center' + }, + { + name: 'Align right', + value: 'right' + } +] + +export const layoutGroupList = [ + { + name: 'Logical structure', + list: ['logicalStructure', 'logicalStructureLeft'] + }, + { + name: 'Mind map', + list: ['mindMap'] + }, + { + name: 'Organization structure', + list: ['organizationStructure'] + }, + { + name: 'Catalog organization', + list: ['catalogOrganization'] + }, + { + name: 'Timeline', + list: [ + 'timeline', + 'timeline2', + 'verticalTimeline' + ] + }, + { + name: 'Fishbone', + list: ['fishbone'] + } +] + +export const iconNameMap = { + back: 'Back', + forward: 'Forward', + painter: 'Format painter', + image: 'Insert image', + icon: 'Insert icon', + link: 'Insert hyperlink', + note: 'Insert note', + tag: 'Insert tag', + summary: 'Insert summary', + associativeLine: 'Add connector line', + formula: 'Insert math formula', + outerFrame: 'Add border frame', + ai: 'AI generate' +} diff --git a/src/src/config/icon.js b/src/src/config/icon.js new file mode 100644 index 0000000..679bf5d --- /dev/null +++ b/src/src/config/icon.js @@ -0,0 +1,191 @@ +const iconList = [ + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAHjUExURUxpcf///////////v///////////////////////f/////98//////////////////////////////////////////////////////poP/haf/////////////1yf/65f/mgv/////lif/87v/xrv/////////ha//10//////////////xt//srf/53v/uv//////////////////9+P/89P/nkv/9+P/sn//////ia//bff/TVP/hef/YY//////2zf/64//lc//1wf/RXf/mk//////87f/wjv/////kef/rjP/FOf/qhf/wm//31//IRf///P/////53f/xjP/VVf/xjP/98P/////iZv/gaP/aXf/STf/ZWv/UUP/dY//YWf/bXv/PR//eZP/NQ//VU//ORf/CLP/WVP/HN//dYv/aXP/IOf/cYP/XVv/VUv/JO//cYf/DL//ha//EMf/fZ//FM//MQP/LP//XV//RS//jbv/hav+/Jv/KPf/ibP/AKf/UUf/RSv/fZv/GNf+9Iv/mdf/kcf/QSf/TTv/pev/nd//qff/XWP/oeP/eZv/lc//sgf/QSP/wiP/rf//tg//lcv/YWv/LPv/RTP/MQv/vhf/KPv/GNv/xiv/hZP/bWXLIdi8AAABYdFJOUwBTx+bw/gL79t7pzQ82ghziYq9bCUMGfCPB8WiLcb/ExCvVy8jTltzAvjFMwsHCvxY7qMP008LYzM34zPLf5qLO3c3I18ye5vG2693v7NvU4PqR1fz6+bAfoaxJAAAKpUlEQVR42u2ciVsTyRLACQkk4U4EOYIBEsAgN4gIAuqirq7uuuf7GhEF5PBCDkUu5RBWEBC5PEGff+orOozVnZ6z5YXve29/X31Wdc/UdCXTVQ3NjDH/8H9CUrXP5/GUJh1+JMnFdhImruhS9aGGcqSIcMTa4g8rlKwSItBQcDixeFxEBafvMGI5RjTIjX4sKUSTlGjHYiM6eKIbS6qD6ODKimowJUSX2qjWF8KSEKyoCCYQliPRiyXdThB3659fgD9b3QSxpx9KJuX968s+l/MOI6NSXUwsW1tftr6AbAFBZg6nRimYGuYeXd5iuMzc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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAHIUExURUxpcf/////////28//+/v/////////+/v/////////////////////////////////////y6//6+P////9zYv+Off/MsP////+ue/+9nf////+2iP/Zwf/////h3P////////////////////+sef+1qP+Eb/+ZiP/q5f+idf+icv////9SQP9LO//AuP9nVf+lkf+Tav+Xaf+rfv////9kSv////////////////////+teP93U/9VQP+BWv9KOf/d1f////9+V//Lxf95WP9oT/9rTP////9fRv/////m2P/Py//Uzv/NxP+lc/////9vTv9fRv9sTf9aQ/9XQf9eRf9yUP92Uv9VQP90Uf9nSv94U/+IXv9cRP9kSf9hR/+dbf+GXP+DW/+fb/+KX/+NYv+jcf96VP9rTP+LYP9PPP9jSP9iR/9pS/9UP/9SPv+Zav98Vf9uTv+SZf+aa/9wT/+QZP9oSv+AWP99Vv9NO/+mdP9YQv93Uv+TZv9/V/+UZ/+WaP9qTP+CWv+BWf+Xaf+PY/9LOv+rd/95U/9QPf91Uf+pdv9mSf9IOP9KOf+lc/+odf+gb/9dRP+VaP+ndf+hcP9HN4T4UUwAAABPdFJOUwAJl+/8t+b3/kjAGqLxhi0D5PXSxMDB3t2/OMjFedzJjk8NYOvEwsDh1OJZ3uXLycDS8s0S4SLXJa4R+Orw5PjWcfTQ1tj0Z/ds0dPSzfX63bq2AAAJg0lEQVR42u3bh1sUyRIA8F42zOa8LEjOIFFABMQDz3S5JCkGzBEQI8/w9M7TU0596pn/3Ve2MtW9PTtJwvu+x8/66Jqaqd12pmeB3Q+2adOmTZv+Vw3WVUXDmXzMpwV2hP3RqlCE2RQJVUX9NTsCmi+Wz4SjVXWD7FtEGqIBUAT88QSzkIj7jTqjDRHmiqc9HIRi8vEtrKgt8TwUEwy3e5yflJIYmMtX1TMD9VV5MBcriTicig+sxeIRpTEeA2s+B9PxxDWwR5MfNVJiuzFu82Jt2QH2xRqosSEG9u3Ywqwla4PgSHiAcQNhcCRYm7RcLWFwStvN0G4NnApHLC5RAFyIejxRcCFgeqlCGihSlaUVZWWN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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAJ8UExURUxpcf/////////////+/v////////////////////////+Off/////////////////////g2//59//////////////19P/////////////7+/////////////+ufP/Cn/+1qP/////////Nsv////////////+2if9vYf+Yif////////////////////////+tef+ref/YwP/Zy/+AWf9LO//i1v9nVf+Db/9uUf////+0mv////////////94aP+ijf+tfv/28v+icv////9VQP9RP//Nx//y6v9KOf9lSv/////17v+odf////////////+8tf9+V/9VQ/+AX//r5v/u6/+Sav9rTP/p5P+VaP+Zbf+uef/EvP/Bu/9TPv+Ob/91Uf+aa/+pf//Ep/////9rTP9nSv9kSf9pS/90Uf94U/9VQP9cRP92Uv9XQf+XaP9gRv9ZQv9wT/9fRv+FXP9eRf+TZv+CWv9UP/9sTf9SPv9QPf+dbf9yUP+Zav96VP9hR/9mSf+fb/9NO/+mc/+UZ/9uTv9aQ/93Uv+QZP9bQ/9xT/+NYv9vTv+kcv+AWP98Vf+EW/+icf9PPP+HXv9zUP9jSP9LOv+KYP+IXv+pdv9iR/9dRf9JOP+aa/99Vv+PY/+MYf+odf9YQf+hcP+RZf+seP9iSP+LYP9+V/9/V/+DWv+JX/+OYv9HN/+cbP9dRP+BWf+ebv+dbv9yT/98Vv+slv+Xd//p4v/Kuf/39P/BsP/8+/+znf/w7P/Ux//az//+/v+ghP+UgP+5pf+jjf/h2P+wjP96Yv+HZ/+Kc/+Tdv+ZcP+FcP9vVf+Pa/+Caf+Wef9zXfJWj4cAAABldFJOUwDlChn8t0n3/vIBwL0hB+qV2/Nfopvw14jD+c4tyNq/xEQpwY7TEMjDwFY1BOFPruzixM3l5dLJwdt4wBKC3cLA0ezjpfDg0OL44mnl9zx7ccr02dDh6M/04PDX+MrM+MXx9cjeYa53QQAAC4FJREFUeNrt24lbFFcSAPDHMMPMMNyXMJwKwyWgYBAkiuKFVzxiNB65s6Wg4C2reES8omuiMR7gATmMGzSJhphoAPHWaO7d/Ye2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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAIZUExURUxpcf/+/v/ipP/YmP/mrf/////Tj//////U1P/////////////////////cnv/////////////////////////V1f/////qtP/////////////////////////Nh/////////////51bP/49/9kS//////////////28/+Tef/Kxf+/tv////////////////+di/1LR//c1//9/P/////////v6v/g3/5aSP1qXv+Uh/94U/+MbP/////ggP+6qf+kJ//Txv9rT//////27v1fVf1/fv/p5P9mSf/Wz//Kvv9/W/+pkf/////Umf/vwv+ln/1VT//jj/91Sf1QSf/gg/+lK//z0P+pNv2npP+0Tv/hgv+7Xv/n5f+tn/////xHR/9rSP94Sf5cSP5mSP1PR/5ZSP5kSP9tSP5oSP92Sf9qSP5eSP1NR/9xSf1SSP5iSP90Sf9wSP5bSP9uSf93Sf5YSP5gSP1UR/xMR/1WSP9zSf5fSPxJR/1XSP96Sf1VSPxKR/1LSP1TR/1QSPxLR//AUfxRR/+6SP/FWP/JXv+zPv++Tv+nLP/Wcv/DVf/Rav9ySf+tNf/OZv1JSP+vN/+xO//aeP+1QP/dff/HW/1ISP/LYf+8S/1gSP/cev/Ub//Ydf1kSP/fgP+lKf/Tbf+jJv+oLv+3Q/+4Rf+rMv1iSP1jSP+qMP/QaP97Sf/MY/1mSP97Sk/w00wAAABfdFJOUwD1wMDA+sD91mqNzwELwRIv6yNWxtZywRirBrm0e8DY5P7C9OJkRcDvwM7IOpyj3b/y2PxMgufe9Mm/08Jf8cTxz9ko6tC/4u3Ty8XAlMTEwtjM7urf38vPw8P4wNXCnQZGzwAACNZJREFUeNrtnIlTU1cUh5NISiFAgNDUQCgQlrBvgqyK4L61WrduM9eKlKogUWgRFZHNsNgKQlsXiK1VUUSQ/oU997683AtvxzSX6fC9l5cZZ8Qv55x732+G+ExbbPE/xb6r1FtmzrS5qxNNuohLjY//b1TyvNEoRGa12r+yPS/muCsl04oAkHelV9nDqpKYhtaSFBNnkiE+Lz0tCUmI9jq3h80l14okpK3/uKl5sbZopIS1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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAHIUExURUxpcf/////////////////////////////////////39P/////9/f/////r4f/////////////////////////j2/////////////////////////++m//17v////////+ufP96UP////////////+Fff9UTv99Tf9uZ//5+P+Da/95Vv+ubf/////////w5/////////+NTf/8+/////+kdv+gmf+JUP/x7f/p5/////////+urP/Kxv9ZUf/U0//h0f+VTf99Xf+Ujv+RXP+8tv+JVf+yh/9nVf+qo/+TYf+HTf9RS/9dWv+aTf/Yxf9lTP/TvP+iT/////////9STP+fTf9eTP/Evf+qXP+1cP////+BTf99Tf96Tf9jTP+HTf9bTP9dTP9vTP9xTP9gTP+FTf+CTf94TP9pTP91Tf9ZTP9/Tf9zTP9sTP9mTP9UTP+ETf97TP92TP93TP9YTP9SS/+KTf9uTP+DTf9nTP9rTP+QTf9+Tf9WTP+MTf9PS/9fTP9iTP9XTP+ITf+YTf9oTP9NS/9yTP+VTf+TTf+STf9+TP9QTP+NTf+bTf+cTf+PTf+UTf+gTf+hTf+eTf9oTf+DTFctR9QAAABbdFJOUwA40MPtHhj78ffwUf1j3j4m5YBDAtoSm8pKWXTB6i/cwOSKBWrA5PHG9sTVxNYB5Aq58vqrwcDi6eOSscTO29XU+My/zcfWv9XCyfn3zvvN78ntoqfw/ffKzsK5XEUEAAAJtklEQVR42u2c+V/TShDApbS0pZS2QKW0XOU+XjnkvkEORUHf8+m7FgVUUBAFRU4FERAQRFAE/t03pIbZ7aZJk5bwi9/PfNzJZGd3HLubzSbxyi9+oTv5cb685vRmu+PqZUeSZqu2kp+YW2z5lxlKQQ5hcNkrLisWUzzh8DgvJxabkUhgTL2MWDLMRBKzV/9YHFYSBrND71gSjCQsRpPOwdwnMrToG0sqkSVD1wkmQCjcmf/9l+mmLYE0HYPxEiT53x8C/2YRRMcRVWHAbjvv/fjJvU60GvSbiW3Ya1YwlqMfR0c/7iWi3aZbMFRifjs+Pjo+OgOK36jUXEJikv86pvgrWf/UeOjE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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAHXUExURUxpcf///////////////////////////v////////////////////////////////H882zZhP///////////////////////7ruxPb99////////////////+/87+f66IThk/z//P///////////+v77dv23/r++v///////////////////3Xeh4/jn/n9+XbbjmXXf////////////////////13VeMX1w9P02GLWe9T5z////////////2TZeaLosYLre4Tqfnbhf+P74YPrev///////////////////6/rvfP89Xbje4bphMvzzlvUeKnzn5rrnI7rjP///////2HXeKDylNr52JjyiZ/pqLT1qWbaeJDyfWjbef///3TjeXTjearpuIXserDtt8vx1KzvrY7ye////3Piet/35L31trfxt3HgfHrmev///27fePn++f///1zUeFrTeF/WeF7VeF3VeGbbeGPYeGTZeHbkeWHXeHPieWDXeG3eeXTjeWrceFrTd2vdeW7feX/peojuelnSd3nleV3Vd4HqemjbeIPrenrmeYXsenDgeXLheYDpenvmeX7oeo7xe3zneYfteorveonueozweovweozwe4vwe0b7susAAABydFJOUwAUdd7vMfr9/cwECQIq/tfqzQ4lBvVWtMbxT8ca5OXew/qRhcHj1vdm6LyWH8rA9cXU6zfSq0XxxdHeyqWLSOjA6dvV1/NsnmJ62sPt5NDK6r/AxzuC9cPQyr+/+OHvPPrywvrBzr/2PevawcHe+H326XTB9nsAAAi4SURBVHja7Zr3V1NLFIUDSAlNEZCqIiBWEBQLYkVRmg0Uxd57eWtyk6D0oNyAIGAwqPjHvjMtd2YoaWZY7627E39Al1kf+5yZfe4Bhy1btmzZsmXLli1b/1eVt12s3tjhPPzhUPY6k2RvKUMhpSRnrSfLkY1I0tYt64ZSUImWaV/B+rAkVaMVtHddSpW6FVGpNOvgzZZCtIpOaj9FVWhV5ZbqZdlchNbQwSSdLPnKiS651bxT/LpSI8upDRLK9r5fCwsLfeetv0nbr40lOUNiOfZiAcMsvGjWb03WCQkl/drS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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAABmUExURUxpcfJkZP/////4+P////JmZvJkZP/5+f////////////////FWVv/+/v////NnZ/////////////////////vHx/vFxfzf3/////////JZWf////////aRkf////aQkP////FWVqlNL4sAAAAgdFJOUwDN2PUUzc721BZl/vX3A8vBsCvijs3M3FBA4O0ev4u/WuzFeQAAA3FJREFUeNrt3FtvozAQhuG2gYYAIZzahpwK//9Pbq8yOIN2on09irbKXCYd66kDRkj+/PKsZ/2yqoa+7rbHrMlP8Qc/5U123Hb1ZajuoeTdeK2mjUtpGxm7y01O+zbOq+iriFPeF8Hgb8a/ut+ON1UnsSxJfTv2dv+3v8+LUVW2iWPZZHrsIrcstoZbRGNZbA23iMa2aA23WBptsTXcYmv2YjE00KI16p5qg3v6a1ceztslDbdsz4dy9xV80t6sR8Fa91lOP/W+0hpuWb1PP1V+BqtfFV4wymJoiEVr8mBiOmUxNMSiNd18agZlMTTMojXDrOWiLIaGWbSmn/XUch+JZVnDLaKRe6qeNckls5smQ4MtUju5aGZdsqSUk6XBFqlSlppZ2/H66WEyNdQidbh+e5z1Sdt5sjXQInWWQWeNjcxXeq+GW1K5OprlBXj9ep+GW17Xy0vwaSQabhmDl6KGaLilCbrbAmiwpWjD/n4EGmKRh4FUVQMNtNSVesXKgAZZsmRhEKABFmMYoIEWruGWf9eoobDFQ6PbgYVruIVrHCxAAywOGmBx0ACLgwZY4muAJb6GWriGWvw13MI13MI1wOKq4RauARZXDbdwDbA4aIDFQeNskUru06zvfj/y1wAL0qRLmiVLCixIgy1cwy3+Gm7hGm7hGm7hGmrx13AL13AL1wCLq4ZbOAY8qP0s/PHILY/TbEwL/6X4vPC54fPCNf4WruEWruEWruGvK0Djb0lToIltWa+BJrZlHIEmugVoHCxA42ABGgcL0DhYuIZbgMbTwjXcYmtSoAEWoMEWf422vNsWoIltyTKgiW1JEqzhFhkYaKJbgMbBAjQOFqBxsCCNbVndZ0EaJwvXcAvWOFi4hlucNAmwxNZUNbAwTaG2U/bAgufmEva3BbAwjd6C2xAL1zRB7hNYoEZv286ZhWvy5a3+zGJr7K3+0viNLLbGDkHoeAi3aI0dD9HBGdvCNTo4Y0SKsEVrrEiRDltZFqixw1a9dHyUhiWapvxYfiAMo9IYFqLRlnFQ0UXRGBao0ZauUqFO0RgWptGWMVdx10BjWIhGW7LKDgJTi2jsILAdkeYW0dgRaTs8Lhaq4VF2sXAND/mLhWv48Qdi4Rp+MIRYuEZb/oPjOx5/sMnjj3wxOcPF/zCcfqhenvWs31V/AGNvge0RW7yuAAAAAElFTkSuQmCC', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADPUExURUxpcf9eXv9dXf9cXP9cXP9mZv////////////////9sbP////92dv/g4P+Cgv////////+5uf/////////ExP////////9iYv/6+v/U1P+srP/////z8//////////r6/////////////////////////////////////+kpP9dXf/X1//Nzf////+Wlv/Dw/////////////////////////////////9cXP+Xl/+IiP9lZf9xcf+/v//29v/Q0P+Skv+urv/m5v/b2//u7uMCeNAAAAA3dFJOUwDl7f750uwD+sTL/sXbwRrUxngJymjn1/jTwoTt8UDm4DBytphuSCKrwPDVz1K/yqU8X93yOKyG2OuRAAAFUElEQVR42tWcaXcaOwyGM/uwZiAFEkhbdkjSpG3SxGLP9v9/0+3lQK2ZMxDDO4zJ8x3Oe8ayJEuyT/bHG/R73WEnEzRd33ebQaYz7Pb6A+8kZbzH8jDwRSx+MCw/pqao1e78ER/wp9NuHV7J764rFHG7vw+pZNB4EDvx0BgcyE7uM2IPMvfJ289ZpSn2pFk5S1ZKuyoAqu3k5HhlV4C45YQW61sgEiD4doJz+kts4rxQustnnZph2rZp1Jxs/q5UOBeb+HWKrlDvq4ilcJU3LIrBMvJXBRHL154HfZbY3XxZzxu0FSNfv4zd58DH6bsxa1PK2qSAnS3FrJjb33eJGjkR5aZ4TcpcF29ElFzDS2iJfmRpR7I/ElmqVlVE+OLQHjhfRIRqa2fnEt1FFzXak9pFdFft6HJu/cgGKlq0N1YxsrX82120VHJhq6ubBGHWI39YUddSFiG+OwTjfBchysrfRYT4aVICmD9FiIqiveQEww9bC2I5fmilbpX2ka+yRPhS+Qp7qhXa0wWDEsQohHZ460O/Ww05F5MSxQy5nOoHvtjLhHyuTQljh/xxZnucaghGyabEsUuC0diaM+R2+S74t8n1txiMy+3FpoNgc7txT5UMpmDSgTALKmbT4/7FIHWs6dQidQzub3obFol5GN8hZSazuRDz2YSUcXzmbeIXip9JiqTM+F0seR+TMkV+gokNAzw2WqTKdC5WzKfq68qjZkxY8AJmMCYps5A/W5AyJjObwNuWw+QcUmYqGFNSxsltyW3OmIupkzpjwRiTOnXmbKI1ijbLd01SZyQYI1LHZHlxO/JhqnwnpSGG76jq2aZM88JKR4x1sSEH9ViNrEbpiKEaq7TxDXXPYjWlJYZY/L5nYliEdNIT47B4yeq77GxP6YkhVhUYxOV32TTFZONyvgdZf6E0xdCNrKX/6wcwH5OqGO5r1n2GrqyRXacr5lpW2rorMTIslShdMVSSAWp1hmTmm7IYbsKtSIy8tNMWY19GomWH5Q4pi+GZRGcZl2SPL5++mLzsJP4fnx7FP4z0xRjy14+hfLNA6YuhQij7HIo1VzrEXIk1w79iAmkyuBjEaIK/9utLk8HFIEbjeyx9OLd0iLHOWRrRZ/aLi4EsuM9KDyUdYnh46rGQfadHzB0L3E9sM+FioO30xCJTVo+YrIxO7GDg6BHjyCMC83k1PWJqzOs1mc/DxUBer8lyTlOPGJNlnjIa2HrE2DIeHJWYo1qmozJgdGs/C8YzuLUxpxetdoJODw0H9C61vBMYDtBASWNeecUC5RBNIYhmYsWMCEwhgORqzWi+7ByMiAhMrpC0c83k+eXleUJLoLQTTMhxeEIOHlVw+FEFO8Th8EMceLzF4cdb8OCPww/+YEkEh5dEwGIRDi8WYWU0HF5GAwuMOLzACJReGaPF6+tCRgOo9Oq5UHiaLsSSxRQKTG4C5XqyXsWKV4ugcj3eyKAX+eMXghoZeItn4rNpjgnU4sGbX9EmO9784m1B6HQAtwWjDVPky0ANU7yVPJnLn84nQCsZaLLDuynaZAfGDzhvYsUbETB+gAxm8JErsWQ2IQIGM5CRFc549vY2k8YLjKxAwzxRgGEefMwpCjbmhA+AccABMHw0joONxuFDgxxsaBAfp+SA45T4oCkHHzTVP4J77MPJ+se29Q+0H/2ov/5LEPqvhxz7xRn9V4r0X7b6jNfQ9F/Q0391Uf+lTv3XXT/zRWD9V6T1Xx7Xf61e/4MD+p9iSPmRCviRCv3Pd+h/2ET/ky/6H8M53meC9D+gpP9pqU/+6Bb6HNkTf47sCXyO7D9QH8Q4CI6JZgAAAABJRU5ErkJggg==', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADnUExURUxpcf/////oyv/PlP///v////+1Wf////+jNP+oP/////+jM/+lNv/////////8+P/Yp//////u2f/etf/////////////05v+jM/////+uTP////////////////////////////////////////+8av/37f+jNP+rRf/////cs//48P////+mOf/EfP/////s1P/iwP////////+sRv+sRv////////+jM//////////06P/Zqv+5Y//dtP/mxv/Kiv/arf+rRf/Ff/+wUf/Sm//w3v/Ac//s1P+lN/+oPf/Mjf/ivjrTDK0AAAA4dFJOUwDs1ML6xMMD7dIa/OTUqfvGeNzKhOBA5vfnyPFoCTBymG46Iki/7PDN3cruX9m/UtnPtPLMy7m4s4t7vQAABbVJREFUeNrdnHlT4koQwBMJJDHcC7uIyqHorrte69kdiKLIoe73/zyv6u3D9KQSnCNhqPf7lypopu+ew5DHPhz0e+X7fKlpWpbZLOXvy73+4NA21ox9UCuXLIzFKpVrB2uTqNO9usZPuL7qdozMOeiZyInZOzAy5LBxgkKcNA4zspPTPEqQP03ffvb3mihJc28/XVG6O6jATjc9ceyaiYqYtZSU9bWEKVD6aqizXcYkKpfV88Kte1Z0Wi2neObeFs6rlxVMorytqqH+LsZSz7WLHsTgFdu5Osay27eVliXWm49zBQdW4hRyx7F+rrA4AzNGN9W2Bxx47WqMxsyBrIoaPkbZKnwHbr4XtjCK37BTUtHvHyDIj9+pqKqzgxG+uCCB+wUj7HSEg8tuVEEuSOJGlbUrGHIuLGT4VQAFCr+QwbowBNjzkeLnHFDCyUW+cM/gpoYM31xQxv2GDDXudUGGnw6kgPMTGfY47cVn9HsEKXFkMZq64PIji0dF6qqyOHyqw/h0vQgpUqwzHt75NO7uMMHFgVRxtpjo90kstvNMzG1ByrSYeJxfnacaSKh6kDpeFQmNlTWDT9fFgwzw6Nr4gxUGY1J7aUEmtKjdmNtcBlN3ICOcOo/Z9Gl8KUJmFGm86ScoiUQYy4UMcS0SbeIVRXuSI8iUI9rBxKYBmhshY2jWjEkLdokYjAMZ4xCzKdmrahjfhcxx/RW1zT4JMTlYAzkSbKIzii6pdx1YAw6pi7uRhSHJugBroUDS935SpbkFa2IroQa1yYxM1HqD+Xj6NJqOJ8GzoA2TSRt1qFOSq0GA1/nDkHjhYhqAACR/nxohebmFmQwxymwutTR5Mt8lvb2AfhYYx4J/dchU4DCuvuOfM8wrGI815p5RxNV8JxKu9O5jIg/iDnXysR8gEWMmuIqReKxZ7jP0cEmFdy71UsGVTDhnW+HX9Iy/mGE/wOvSM1xNhTPmVMME9V8PiR+0eQ0GKdbj0+hx6Msoqo0fdCI58tjjXJghFWX6dxWCmcTSeMeRbHklXDuM6a8GHyI+ClsNrSSu/s1L18K+RKPdPMGq/4j607XNOrYDXDz7Cb85wpAhcOFQ56b1Zl0ixgRJH1jAR52pPsvCJvOQ9P8DJLzxGg3tWUrCjr1IsowXJLyKOnfJMGwLlxSBD+LYo0RhKsBHMVSsTcqHigd8EKd5T1TTEPjwKqSMGOCSS+Dj7TEkAMoTr2tTLnHJwOhzJCaZ7DkGEE1PfZKyz0GNtwUSXoCTc5K4y2r9EtUeEh4l+qeycYdLbtR0NENKALzc4JI70hi4oEAwRMqDTI+QJzHvDOSZW0gZvgE3ZyTqNUnMk2bis7IQ6xWIek1SczogyzvKywIOqTzD9W1J68hHykKs526F+SAFYZ4Z2/WnryAtjLqaRoyKiE8Lq0ndgF+oI82IisQNWN21p2qyUNdWD3ozJVnYoHePS27lzJfYbgAS3OKSe+VEGSTkAJlEqVxCTGgLRZEoIWhxpWi/PpuQJIorWnYqClMBKWjZSQtyHcLQgpxtVSR4Hy6ZgQy0VWGbOA3QJo5tbzVA21u28dcAafyjI5G1Q0ciUsMiSjAOCYAiPiySGaMldrQjJZO5Sh4wqgsjN2Cko9f0hJEcvdpkKL1mYehQOnFcry6M9LiebmSsVxi6kaGyxaMuDLvFo7T5pS4Mu/mluC2oLgzdFlTbMFUXhm6YKm4lqwtDt5JT2WSfPIRMUtlk13/8YEMPZug/srKhh3n0H3Pa0ANg+o/GbeihQf3HKTf+oKn+I7j6Dydv/rFt/Qfa9R/13/xLEPqvh+i/OLP5V4r0X7bSfw1t8y/o6b+6qP9S5+Zfd9V/EVj/FWn9l8fXe62e91q9/gcHMn6K4SZ8iuEm26cY9D9Sof/5Dv0Pm+h/8kX/Yzj6nwnS/4DS/+RpKf2Pbik/R3YXPkd2p/oc2T/p6OzocF/w9gAAAABJRU5ErkJggg==', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAFZUExURUxpcf/////AUP/////////////89P/FWP/////EVv/////////////////////////////////////////////////TWv/bev/gnv///////////////f/QUP/VYP/xy//9+v////////+9Pf/ghP/////////////////pqP/w0//////tvv/SUf/SVP/////APv/67f/Ug//////89v/////////JYv/ak//////DRf/////FVP/MeP/qsf/////BUv/56P/9+f/fq//78P/////RUP/Zav/AUP/44//ikP/puP/FXf/////FVv/z1v/Ocf/Zbf+0Vf/z2/+pPf/cnf+qQP/RUP/////AUP/acf+pPf/APf+/VP/FWv/XZ//mn//NUP/IUP/GUP/SZ//EUP/QUP/CUP+3Pf+xPf/ikf/Zb//UW/+tPf/Wa//fhv/PZP/JXv/dfHDacqUAAABXdFJOUwD9+bcR+fD2yvbmApoLBT54JReoLvbXwMKCUx38/8zQ+mmw/slY8dHEwtM3y+zfiu3qwtr0b5HFwOvYvs6/x6Hk5ffF7V/5xvHgv8bZR+zZx/HJ3vG94rcNazsAAAa6SURBVHja7dzpVxNJEADwDpPEbO47HCEhCYRgghLuW0FEFBDQdbvIJnLJA1RY3f//w7Ier3rCdLrTc/CF31ffM+V0dVV3T4/ELPfLoDbq9/h9xeCIm9wnd7TiAuRZmgmRexKKlqGdfyZM7sNLPxiZ6ieOCweBpy9AnBWvAJ/mdjZzp6ATX8jJMapAZ0UHR+oZiDx1bh6B2K5T9cUPjGwtkx7fHE9n8sAadWig+oCx+oT+lq4Bo+DMrE7hL66/oqxMlqnFjsyoAhNLmurlmGgcqcRL+HuvaLsM/uEzYr8Y/uO36V2YxuWk7aV31oPzCHMXpQEVY8RGgcICoDw18hqQZ9a+LpUcBVaGGnkDrAWb0jgQ9YBOjhrJgF7CjoczUIE2aWokB238EWK1qh/kgnkF7bIzVvdGD7RbS5+enZ9fHP5wcXFxfn52enIymFuDO56FbWhHKLuao/Tk/PCu87Pc2Dq00SzsDU9Bb33sV4k5uTg08vaNF/R8lqVxEPRqTLU7NQ5nq9cFOqMhW8aoru9Ig6eHhpb3QEezJG9GQGdsnKJOY9Wz4gVWkJhXTQFjw6jSDZ4dGnr+GFhR87XOD4zXmC1SD2cbkPkVTmgUGPlxyoGzXG8eGKmquX5UBMbqJuUa5ESzkgXkNzXBZ4DRS5F84swNAUoQdbEUoFUqwIlm35q0CVQAPd6kIqfivFlwq+8D0BrmbtfPZhvQLFHjZtaY3idUhnEWbzH1Jhsz3x5zVMrghXH1Y2qxplbuPEwPoAKC6rcCqGqyV2+MU1knh4aYgdJMbqmxT6sm8Q5T+5KmFg55io4aR4K0OTT0wUzlC5VxXcfMpH+Oj48/q1SbrTpu7dwmTqd6dbHc+ldlfk/iXzijftYwhA/m5viHzyo5vIU9arTbeW04rT9jMN0/mhfKKRw12qsdHf/UUOpRy8prPmyRe/qMwQfDNyiqNZXu2pLL6Kzh+KcjxVqDZdgVV9sRZLH4fmUejFIKY+EbUWoFbMH7cowTW8C4Q+XVFhKjRqP0BUdJ5ExQanxEXih7Zy7hMFHU5XzawSIcJtKq2AoGKWrgg1FKmp4hlUpT4Bwifm00vlJkYnL3q6zx3lAOtSKsUvYSghNN8xkcJNJ8grWvagbvqyz3cLP/xNJgllXmNi6sxi0N5jm+/SbSsMxsUjUngmD8RFYYF1bU0mC28HREvmfjRtLaYHqwBD8E8xDMQzAPwTwE8xDMQzAPwdgZTBzPXO0KxqVwbLVmSTAI17MBIimGrwEtDmYafgt1v9XeoxyK+1s8f40TSbu41bY4GLzpE+v+3KpGVV0Idv4RIqnAHrtauvOvdX8M0ad8CIHOBMcQBSInIDqEUN/fznd5LTYSXGDf7ag6EZy+LgTFWZMsCm8ymXlBOAcMLSnIFhewspvU2qR5DixXH+ELFQFhAbZynLygUwxxY/EBwsublj6ax7JX3xOAcGZb+2g+QJuE4K0OylELo8EMFl/xGUhBOy8vf9Vfcm+tQ5vUgOD6vnIzEF9j2QbEvcQccwGqjw3/7+DIAp/0DoZvjdUBuWIdM2a1YbvVjlnDTOvhhgOGmenNX4NDreGIGnBXfRF8qXPQcMQBzqsId3GXbzgkz31jOYOXDb41HHHTy72OEMVgWt+/NOz3qYXBRPlr8Far9c3ucG6+t1o1HCZuAnt7Wre+f7IvnptvH29/ocfLTeABYMbpl4/2aP2EowQD/DfZsNNywA5zibrTraahyZbt9pkbn32kXRIY7yd33j7i+UPWI5636T1gJHnrPLG5v2WtgJQE97slscy1bDDzwCe6X/kUpMyXZIN5ASL8rWVAAxmrzUvJYPIgQQvwP6gV2yhJRvPnOohNuVU+NUbLzWZJJm/egVglrvQRNppv3ipdWZEywTDpJOIDkXqp+UOpdHl5eXXr+tpwlKZBwBchIv2aBzrbb95Rury67q7KeLR+IiPU3xfUfO0wRO9EE7EBsfH8hemb8rXRgn39IWJGgs0anssrg4yZJZaLMEVzuWkMM/udrvdYj0lt72Kzg9vhesfUmCKxwS6gtYlmJ4sbgKp2f44M7xc7xbKma8q2iHkATc81eebWAZXjxB5RYM0bD9VELzjydX2gCKyNzMTdUCanBYcvisRHkPXJRX2yTG6AzlKY2Cfuhzb13rnlxYnSxOLyXG+ds0CwS7IM8hZixF6RBZDlTxK7DfhAzlLcqf8GR2w2TBxR8IBIaoQ4JaZBZ4kB4qDdCvAtRYjDIkWP8QAlquQeuAtaGfTKxZchcl/C1ZlZbcqfcpX9U9psIRkgZvwHj84D2vhDRzQAAAAASUVORK5CYII=', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAGAUExURUxpcf////////z//v////////////////////////P8+v///////ynGmjrMo/////////z//ff9/P///////////////////////////yrHnP///////////0TRq03Trtz378706ojlzTXUq////////////13buS/InaPq1zHPpTvUrf///////////////////////////1jUsoXhyLzu4DLNo7Tu3k/bt////8bx5eL58tf17azr2mvYuf///////////3Dcvu77+CvHm5vo04/lz////zXVrETWsDjVq+r69izKnv///3HhxXrhx2bdvv///yy6lTPSqPj+/P///1vrw3b21inFmS3KnynGmjXUqzHPpTLRpy/NozPSqDDOoyrHmyzJnjTTqjTSqS3LoDbVrDDOpCvInDLQpivInS7MoSjFmSzJnSnGmSrHnCW1jy7LoUjetkLasU/iulTlvzzXrm7y0XP11FjpwTjRpizFnCrAmGLrySi7lGfvzdPUVLgAAABVdFJOUwCzzPgQ61T++QLxmCD30Kg9/PYV8S3T5QU07roKkcrF3tbA+cZsXMLcxe3ZYUSCG8F238LAz+DLyNjS49vIvyVnoL/t6MPBivLO5On6TL+/wGTd9ND/kGkyAAAL60lEQVR42u2b+VdTORvHy1K6SAuybwIKyq7sCgIq4u6M+nqCpaUtba9wW7rILojjv/4+T5Kb5LadGVuaes4cv0k605/8nO+zJOTeOn7rt/7Dap95Mu10tzk7e+82tP5Sku5rs0SRu6ah6xeReBqGSYGct38JzlQHKaqlhqqj3Kshf6um+uqy3Gkj/6DZ5iqidD0h/yzXh6qxtA6Tf9XdKrE0zpKf0I2qsDzqJD+lF9XwJZ/FO/Zg4uXL1w9uPSR2zejP3Vpi08rIUGgXFNoNhR7ctGfxHd0w1+yuvAcGIOE8uyNe2+7QrpdlkqhafU0pTs/Pzr4fU6bXNnM6+rRujG4iVTfC7Ah9/4Q6O8ZYDY1Vq6Tq1aJueQVOhNCYT1zfT0MgG80f+mBuqOnyCjioNYefLJ0dhUKJoVV1E2/Vdo5yKSwTtIKQBmG4vh4izX0iVaMLZppI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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAEgUExURUxpcfv9/7zj/////////3XG/////////7zj//7//97y/4DM/////////3rI//j8/////////7ji/9bv/4nP/////////8Pm/////////47Q/////////3PF/////5XU/////////////3PF/////+j2//////X7/////////////////6/e/////////4DK/3bH/////////4PM/////////6nc//H5/8zq/////////////////9rx/////////////0+3/129/1S6/3jI/9Pu/2rD/77k/2nC/5/X/+Dy/3PF/////0+3//D5/37K/7fh/6PZ/4jO/5rV//n8/3fH/8zq/+P0/6/e/9jv/2nC/1e7/4/Q/5XT/8Hl/169//3f43IAAABLdFJOUwD5xVv34hXow/3Xv/IK1fSHDsPRxbntx2LTwicC+r/BRUuX8DngGu+sNLPgwHYizdqRysqf5cDqyoJ9pFLTxwdu78/cwdXEv8bQ7qO8DtYAAAVZSURBVHja7dvpVuJKEADgRgjcMICAgKAojKKiuO/rqHP3UyUQFsX9/d/iztEknbYTEjV0e+7J93+0prrK7qQrJBAIBAKBQCAQ+GLK69WLuXr+R6kRc9Eo/cjX5y6q62UyCslqejuC7xbZTleTxFeLa7MR/LDI7NqibzkJ51X8JDUf9iM/0XQCfZFIRz+7PlsR9E1k6zOrlaGh+BVOhnxQOIa+i4XJR0zP4kjMTpN3KzrV7UF84nDyt+HGJg8n4gdOlVx8bzvvIk+N7+dS8+DZfCq3H1eRt5t81xKV8K2l7M48fMD8TnYJ3yq9Y6lqBWSph7kZ+LCZ3KGKrEKNePQ9goxQVoFPUrIhZES+eyxdlc3KqgI+UFbf/FhPZRxGxsQm+GRzAhlhD2ukMmU7BT6aYkpZdV2pGlMvZwr4Sjlj6qbm0tNMH+3PgM9m9pmeGtrh5yWkQjkYgVwIqdI5cTaH1PgGjMTGOFJz3hppKQUjklry0lLrCUteUjAyKUtuEuvE3gqaQhswQhshNK0QW6dI5WCkckidEhvJBppWYcRW0dRIEl4aTfEZGLGZOJrShBON0EZSYOQU2lKR6LDEVECAypDUZBJ0kUCIOG3vDGEdo0FNgRApFQ3HhFGOoSELgmTRECuzpxiaGAUEUWhq2JNNHQ1jIMwYGupM+dK+3gRhNml3ZwhVRMMECDSBhqLtFjkFAk3ZbZflBOpC8yDQfAh1CdpPy2iYBKEm0bBMDGvMKklZpzViyKNBAaEUNOSJYQ91CyDYAur2iC7DbwXit4QMV78VEKzCVXAYDTvg7EHrPoCD1qPWbYGDTld77IO9He6Z5ci9fltPTfyl2e7bhXmr4i83XbAxePmHveuOSwUfvX2ODDlmpYm6Jv9D22i45kJt3aKup4Gd0NtnyxPUHTgluoemZouLhboGVv8GTapt4g5Qd2LsTG6dfYMWt8B4QCsNGE9o0Ws59zbdnWZdTr8aMh7B6hatmuwi9dDqadhJeJa82nY5P9yi889sqUMiHSCjOewUse0xmCYybsDiEVkDsLhGVstDMHmXZeoN+Q9qyGrzKaU6HpapzhWw98x0P5cZvoB3aWu71Azfvy1kdbmup5peWnvL5Y/eABka1/ZUrw8WHWRcu//Rc98O+k1ulaguVzJO66R2XLYDbxtlV0VT7wGcf+FNHxitJlIDl43S6xFC65mxdLm8XdNYuArt0Gja3o4QSdX1cbKjF7Ht5qs1X+Ns9+22+x7SLd3D4Yo0PBw7O1q7rbXA3uOgPej2wVZfa7cHHc/HTrLylQ7kx1/gUeVrPsSVC6gbl/94S06kP/jb3mCcyX8lElXlvyyi6mj4W/prNFKV/YKR0UDDmPRXr2QNTRJfSvP3GGeSX9fLv8hgZQpoGJd4xcNXzZnsyy+S3JN/LUiF5V+Yyr9KthctyL9kp04ljh/wTuQPZlBJZmRFkTuyQhb3kPr2DDKGeajlhCWYq3uQNOZEB8BoMFdXdzIGwKgiE8zV/Z3E0TgStQTz4hlkDA3yweie7ySNU/LB0MUSPmjKB0PTI3wElw+Gun++uwNxw8l8MLz7+/vNf8dYPo9tew/m8o8FMQPt7sFcTh2IGfV3D+b3/XExH0G4B/NzTNDnIe7B/POn4A9n+GBo1Yr5pMg9mMvKEsr52EpFXdas2hBSYj9D2zNz+/OlaifRTkHMB3oraAhV/voWRzsrVSJG0TX1u9NElGgEhykcRYlAaXTWuEgSoTIxdPDjtExEq9kulFqvERnCKl+1c+tEkmoBGbHjKJFncVdFU6l4TuSaPiq9XtjtVslXkFyv1RZJIBAI/H/8B2xJJCgm92AgAAAAAElFTkSuQmCC', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACRCAMAAAAmVqBJAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURUxpcf/+/v/////////+/v/////q3//ZxP///////////////v/t4//////////j0//////7+v/y7P/////////bx//////k1v/////18P/8+v/////////39P/////////////dyv/////////////////////////////gz//////////cyP/m2v////////uhkv/dzP+Cb/FzXv/////j1f+PfPOGdP7Qv//j1P////+Bbf/ZxPBsV//cyv7Htv/IuPZ0X//h0f/i1P/ezP/gzv/bx/zl4vakl/STg/729PrOxvi3rfBvW/SZi/F6Z/OId/F0YR531hwAAAA5dFJOUwDO9brwELL4/fvq1qwD5vcIx6/bseeOsOG2wFv/vE9uN8R4RKQMFWQnui6B178diK/43tKX4L+27cUv1KkAAAXNSURBVHja7ZxrVxpJEIYDYgQGiFzlUoiAF7xrNNkzx97ZZLh4i9nd//9nNuoyL9Ld00MGqvMhz9fknDzpqq6q7rF995vfWCL/i3jsd3adFKVTzm7nzPKKbFcyBBKtTXsuOw7NUd+2pLJXS5PM7r6VZHFISarF77KeIA3pA/YYwUWmwyxzTWH0WF36aQqFc1NtlimcLOOe6hEBJ9etnhyW6jRLha/w4h+mVM513bH3g1zWShJvU0DyvfuM/2xTbRLIcnWGNQrIua/4o2edBoEDpnqH5lh0A7xn2pAp88i0KOA1SDORKnNv7wr+9+4rsDnEqq2xyKRoSsmd5SVtkMSZPQaXIwo4deWl4Y3TAUYpiCCH0UFrDDK7NKUND8SpxJo0zmyRkeO0hbrH0CTTypTB7qaA1RfhHbSCoUrGQ4saMOZvwlXKIIP7K5epzecvGHqoNDztaU1d8rC3G4zTZwGNSS1T4is0+xTwSS2Tw4Fu5aM4TSm4apktvqrXwyxjlEnwzQ8NjQxapbNqmSyagUami0bKVn/pk0bmhK05HUtTnlT0qugXK5Ypo/7qZC4x67GdmJAywHuBAlZ7lEwgBB9kF/9VBjNGfhmXL+saahTQdLUymSUNNPmd82Y5SRF4r5dJLkVm/bxAEXGGq5XZ7KXICNJ3pTJnSM7FFgaM52XW5qnsXve2z8yltUDRSZ66Zhk9Tq2fD3VJUkQw4+nDZCZ1vqePUYEWoO0aZcxkO3lN7iZoARqod6p24BUoGuUdpUyHopNBjDRJ40ROvb6q4mbn/lJKyUtlTSB3dXFqUlQyLeVcgD8/vfh4o6ZIlEDh1dvkSI/5O0OdEMfPN1pKJaxKqI1DkUkO9Lc/dayKzJdwD9x7VtsUmWJeF6X055sYMmD46fS9klyp1JxrOj3twH9jlInP5LCdJpB52x1QZC5YZIToOgSONafnjxwy4gfVImQKb7IGk9kNg8xQPLOR0NyKEquML17oYgkq9mTG4pUGak3eukyXAgbWZEbif7CjWtZkvKkMbrjO7cvIl0r8MpOpjHyPwy8jppzYl/EDmSrmll9JpmBLZqSQydqS8RQ5k7Ivc2g/ZyZCrjNNWzIiQLrWZ5fxIdPArGdJZgwZ6bsUu8wIMtIXO3YZDzJZ6/MMNtMGzit7dmSGIqArFWBumbFQlJkEt4ycvznrp4MJZKTvquwyAuCmomNHxhcgYftEORIAJ/wjOzIeXDZwvF23IyNAVxqtmGV8oS0z/DIjoS8zsszXUGLLTIS+zMgyf4byV+zGpC0z/DJjoS0z/DKe0JYZfhkxQ5UC9thlECV5mrEhMxHKMlNkl8Fekg9N7DKoePKhiVcGUQJF3C7yyiB9AT5x7XDLYGHkAWI/isz3R//28e7f2DJo2JoBwizzzy298HAXVwYLox4gzDL3DzTlG2RiLYxuZxtl/n4g8B0y8RdG3tlGmS9E4PYJMnG3ktyzWyaZpwzNcg+ZeEECWexsk8w9veFbXBlPAKlnm2Tu6A2PkIkVJHAo3UdzyfhCIidddDKFycdOUmyma6PM08MSExguqjbZ0csEFWVpW3sIF+UA3H+3UNFLo+jFjhG+GqBNsrWDsVCyNbuZmBrl0BNqGtLR1jhCfIk1QiBEMs6b/OUYrrAs+pJHRwwyyJbwKKXyDDKIkIJqSkqZFcr4ngijRAGtVcpARc9JUnqfu3QZswpaAX4GQiazNJkRcsWQvdpnajhQXRlkYiwKhgcpfXU/jfbTMj4WJYSNNoHMIPxhTvunZIZjT0RiyyECx6YX+38sKuOPvYmIxMZWkWapbyplBhRQuAqT+fCGy8vLjWhUu1u5+Z+iTPe1r2FgE7I2TVoinUi/WaF9ccUgU9M/fygQM5W84QkrIzW4yOSLxEiyZXiqWSc2nCPjw/0U8VA/QIj0NnUWlc5mtEe1xZXH53wn+quvg8g7PLMgheLucWuw6HOrMkWi/46FQa+SqGesyPwHVLbnDs6uI5UAAAAASUVORK5CYII=', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAGzUExURUxpcf/////////nof/////osv///////////v/78P/GNv/////vw//////////ul//////UUv/HWf/BG/////////////+0KP/////////////////////9+P+5AP/////////ERv+6Bv/XZP/YfP+6BP////////+8Pf/WAv+/AP////+1LP+2MP/gi//zxv+5Bf/////////35P/vuv/y0P/QRf/////////////hqv/////dff/UDP/QE//////33P/hRf/OOP/KCP////+zKP/7wv/SAP/RAP/AAP/PAP/TAP/VAP+/AP/QAP/KAP/OAP+8AP/NAP/UAP/MAP+9AP++AP/BAP+3AP+7AP/CAP/LAP+6AP/EAP+5AP/HAP/DAP/GAP/FAP+4AP/JAP/WAP/OOP/HK/+6E//EJf/CI//LMv/FKP+6G//NN//AHv/MNP+9Gv/ILf+3Dv/JL/+4EP+xBf+8GP+0Cf++G//BIP+7Ff+1C/+2AP/cSv/0pf/6vv/eW//NC//wmf/VJP/uj//YO//ofP/kcP/GCf/rgP/3sv+2H//jZ//KHv/PKf/CB08sDQMAAABDdFJOUwDu4MgI0BpA/PLG+NH+y8guxsDO12kD9Kh4vhS1+PafYcLewsD+5SfL5/SH39jD2+xXkOzU485LOU3IIs/6z0jjv/LPZMfuAAAKXklEQVR42u2b+V/TyBvHoRymIF2WlkO5L7kUccFjvfYa630rAh54sN6oeHw9t+VGZMH9k79P0jafzDyZNG3a33w7L5JM5nnm/ZqZhKTFkqzUDrVEdhkiOMauSMtQbUn+NA+FRGEJDTXnp1K+o1QUntId5Xm49MVEcYj15ezyW6koFqW/5eiyzxDFw9iXk0tttSgm1bW5XEYhUVxCOVxU7aLYtPufpBpRbGp8T1SLAMbw8YGrf/vi3N/nqGjqzg0cHzYEaPHpUinA3gE5MUEb3/uQs3z2ClDpT6YeEWPHzjHQqXSMrZ5jY0hd709mpx0QHtClvXruKhW2n42BsMiw058M7jF/XCWoI9Y5ocqg3hHD4v/AvcbfTQaLdwAJNZ1xvIUGsIibsy/e+qYIVm8q0dmrZ6mg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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAIEUExURUxpcf////////////////////76+GwnFv////////+KZP///3Y2Jv+HX/////////+HX4hQQv////////////////////78+v+miP////////////////329GsmFf////////////+aeP+IYf/bz//////////Brf////+NZv///3EwH////3s9Lv+HX////28sG/////+Oaf///////+vi34xWSGsmFWsmFWwpGP///////////////24qGf////////////+7pP/EpaJ3bP////+IYP+tkv///49aTv///////6yFe5VTQ//Itf/h1//s5sqxrJdnW/+TcODRzP/Pvv///////////7eVjMSoof/o4f///+7n5YJIOf/y7Pjy79XBvP/l3Kd+dLuHev+ff//v6rKOhdfGwbybk9C7tebb2f+1nOjc2dzLx/Lr6v/Vxv/lz/HCs/+HX//c1P///2smFf/x1//Huv/Asf/q0f/Pw41PQIdIOfvXzoJBMf+7mf+Rav/Yzv/mzf/u1P+ohMKPgv/w1v/ax6NmV/+Zc/+LZP/KvXk3J3EuHf/NwG4pGP/iyf+ge//MrpdaS8aXi+W7sqhwY//StP/ZvP/fwvO1p9Cil+7Hvuusnfm7rb+Acv+yj//Vw+Kikv/Cs9uwptaroK96bvXQx9qairSBc7VzY4Pmm1QAAACEdFJOUwD7AuH2/fbt3JTcYM/y8hD9wtTrZ4sF+8CEoj8j8fjvxszF5dCPOMKq1m/XLcr4z9x30heb5MH89OTmCrMz4UZLHMD+v1LqvzzAWLzA/cTV4Mu/y9nIfsEMw8jbT+fF6e7R2MD9w+TC08XP37/g1uvL48f//////////////////////l7r9LIAAAmBSURBVHjaxdz5XxNHHwfwCSQhBAiQQBLOAOG+LwUBEVBBAQEFxT4e9X5atcfzmv1OOCqHiJRTQbyvWqut7T/5hGN3stmDnd3Fvn/SH/p6fZz5zsx3ZqFIL29xWkbmqMPjCbisLTV9menlWefRv8F7JD3PChI2d2Z5Nvq6iuM9oKym7uvl8SY4YC/5Cd5/PwoVm7b/cYrdQO0VJwbtp9YiGzDI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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAJzUExURUxpcf///////////////////////////////////////////////2Oa/////////////6DC//////r8/2smFf///////////////2Ka/////////3Cj/////////////////////////////////3IwIGKa/422/83f/////////////////7rS///////////k3//////p5GSb/4Ov/8nd/7XQ///9/Ovh3msmFWKa/2ac/5S6/////2yh/////8DX/3an/28rGv/////6+f/b0q6Hfv////fz8+3z/3k6Kmie/6B0aYBFN//Rxv///////////////2wnFtbk///08v/g2P////////78+//y7//v7JtrX9zp/6vJ/////////4pTRubx/8Pd/KZ8cf/////////c1P/Sx/nz8P////D2/8OmnsuzrPT4//D2/+ry//X5/+jw///c1JzL/////9vKxv/d1f///9fFwOHT0N7u/8+4spFcT6zK8pvF///c05u////Sx6XQ/7eWjf/d1Yiz///JvvfIwP/Pw6rR/8mwqv/TyJHA//D2/7rP9//c1GKa/////2smFZrK/77V///Huv/RxrXQ/5bG/3Wn/3it///a0mif///Tyf7XzqZsX462/5pdTp3K/vLKw+z1/4hIOeO0qHEtHH+y/6fK9m6k/67O/9SkmX49La93apu+/6PK+o7A/5jJ/2uj/5FURXYyIvfHvv7Owr2GeNqupOfIy//LvtbI1qrJ/2Wc/6LO/4a4/8aTh+vCuZ9kVoGu/8DJ5fvIvcvK36HE/9rp/8GNgMXc+uW8st7N1/jSyc6bj+AhvzQAAACQdFJOUwDuiAkE/hP8//jzAQ3tI+vSwHL4+a+9GcL+3prNQ44dqEfkaV3W+MDOpJ/WO/62V8AqweXCysTj4/Ly3r/F0m7IyOPO68DBfPLmzNm/xvdReJJB69PSy2Ex883Jv9jCPkvC28HByoHx0OQ26sbK7+jk8OH43IPV1YDQ2s3Nwfvn6L/qysPc2+TixcrK2fv1/ZmAfOQAAAmNSURBVHjaxdz5WxRHGgfwmrPfHgaG+5L7PpRDEAU5BEQjeEC8T7yv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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAMAUExURUxpcf////z9+vn8+P///////////////////////////////////////////////////////////////7/osP////////////////////////D67Jrobp/pdajqg////+z45////////////////////+D11v////////b79ND0wv///////////8ftuP///////2jBSP/////////oqGTAQ//z1HvJX//deNLvx5vnb7XrmP///8fvtP///9j4zf///////////////////////////3DEUcfqu+T03tvy0dnz0v///4rQcf////T772TAQ////2XARP////3FU+r55P/ijPvPaf/44tvw9/777/+yIdvx0////8zqzf/99qHYjP/bh/+1JvzsvP////+0JP+8Oq7enPT23//PX8rwvJbTf7ntnOD32////8fvuMjwuJqTfv/deUonGffFSd/y/s7uw//ffP/ff+3nppvncP///+X36//NWPrvx/D37M/Zwt3y4l5EM1w8Mdju8fDWhP/eeriqpHlgVf/eeur49u/5/ejkjK2lmNrjwbTumv/GTNju8qDbi4WAZH52XLrJqs/RxKSwi/bmptXu7Zjhcv777c3xvv39/P///5rnbnnaWGS/Q//deP/FSf+yIN3609X0ysbut/D5/+34/+Hz/0kmGHfYVnjaV3bVVGXBRP/GSnrWV3/ZW2nGSGzKS3LSUW/OTmfDRtr40JHiZ4fdYInfaO/5/+35+YLcYcLvsNz60v7JUP+1Jef27Py8NJjmbdP1x5jjgfvNV//YbXPGVZXlarLopZ3ncrDqmE4tH//BP+bih+Hjmv/RYej3+G/FUN3z6LvqqqbrgcbwtmpWQv/ERs3r3+LrtfLfevreeJ/Ylujz4bvwn+7TZ7fivNb00/63KsfvyOn3/63tinvKXsrwvJ+hhMvgvJDhdOTuxuPMZ4XNcaXnjpPWeuHnperGUeb1/+PWfJ/pdtvestrn0uby0tvq37rSp4uQbLDKmuY+auQAAACedFJOUwAQ9/b67AT8/gINj9aUSiQI57Upw9rCWjNt8+f21MXv5Gk4ULh71C507/zIHWHL0uHc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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAG8UExURUxpcf9iGf/l4f/////////////////////v7P/l4////////////////////f/69v////////////////////xxZf////////////////+bYP////+MM//wwP/////ii//v7f/bbPx0av/UU//qqv/////////RR//XXv/Go//////////////QRP/QRP/////////////TTf/////UwP////2clv/ff//78f+ugf/00f/77P/RRf/55v+aUf/v2f/RRP2qpf/////Itv+PR/9zLP/g1/yPhv/QRP+QPP/Clf/r6v+udP/Or/9mHf+bM/+EOP+KM//////QRP/UYvxwZP9dFv1wWP1wVfxwaf9xRf9xSP5xTf1wYvxwaP9xR/1wU/9xRPxwXv5xUP5wSf1wW/xwZvxwXPxwa/9xQ/5wTPxwYPxwYvxvZf9xSv1wV/9sIP5wTv1wXv5xUv1wUv9wL/1wWv5xT/+aM/1wXf5wUf5xVPxwW/1wUPxwWf5xVv7PYv1wYPxvYf7EYv/EX//IW//RYP9wQf/PYf+1SP+yUPxwWv1wS//EWP9pHv+FMP93J/+CLv9xI/+mS7+gn90AAABRdFJOUwD+6Or++t0b5ulh8EcD9/YPCL4kbPmHrZ1VzijwzXO+5sHvzsUVNuDH0KYslv73tdfJ14/U0dnA79jV6erkxtzx2Xva0+bp2/vYwvC/5fb92c7NfiIAAAmdSURBVHjazZyJX9tGFsfFWsYbjA0YDLhcyxmugAlHkjb31bv98Fw7d7hNAafhWtiQkG6yR3abbGi6//A+SSu/0YwsPRMQ/X7m85nRk37jr8djFZMajUWkur15dLRpsLkxVa9xiaTGmwdHE02NVdW92lEx1BgCgcrhPv9MLDVYCYSeaIgcgUldwxgoTFbFfEJpsCGfvo91qU6DK+mUh8r1ELjSVP8xKr2DUJLEUIlQqhJKEW6MHX5ZouCBPuy2LfsS4EWi9pAuqTh4E22IyUvZrIM36cO9VFVh8CVd7dgs7VHwJdp3GBcdOIzWi5udQyhS/s0lDjzC49Y2aBkFJmN15d5eJsHB+Z5z/d3d/efazoNCCO86teNhULjU04mh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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAH1UExURUxpcTMzM////////////////////6+vr////////////////////zQ0NDw8PPT09DU1Nf///////////zMzM/j4+DMzM////zc3N/////////////////////////////////////////////////////////////////////////////////f395WVlf///////////8LCwkJCQv///////////////////////1BQUKKioomJif///0NDQ87Ozu7u7tnZ2eLi4snJydDQ0Ds7O1VVVf///9vb2/z8/Onp6UdHR////0hISHBwcP///zg4OPHx8WhoaDY2Nl9fX+Pj41RUVH9/f1NTU+zs7P///9bW1mVlZTg4OF9fX76+vm5ubv///7q6ultbW5ubm4mJibGxsZubm319fXR0dFZWVqioqHd3d9vb2zo6OpWVlYyMjLOzs+Pj46qqqpOTk////2lpaf///56envn5+f///zMzM//ORP///8GeP3FiOEdCNDU0M8+pQJ2DPDg2M/XGQ/rKQz88NDs5M+a7QlpQNk1GNbGTPcumP/DCQlRLNUM/NP3MQ4l0Ovz8/GFWN+y/QmhbN+G2QduyQdStQHppOcWhP5R8O4JuOaKHPLqZPqyOPTQzM8CePqeLPI54OnZlOHNjOWObQFQAAAB7dFJOUwD47xv+FAXITvoJ4gLs2vToOKqN/Pny8+IkzOgtuPbFdijl2WE+aA+yVkPce+jOv28g1NcwUYCXnEjR0cxczdzx6eDV5tDP0Nf68rigxsyUwuLE3bbryMC53YbOysrNvrjUzsLCvdOzzMKowLO2u6Ohv/Kqt6PNn6TfyC8an18AAAeVSURBVHja7ZpnVxRJFIaBGUZnyCAMSRHBACgqKsGEijlizjnnvLtaVQIiIgomxJzX3d+5R4/H+w5VPXcoppoP6/Nx6Om5p6l+ut7bN+U3v/k/U7KgMb8qGg6m1c1umlY5lpUEJlepGDIKyseolJYZYaVT0ZLiP3NnKA8q5vtcSmhyVHkSbgz5uljWqLisCfh4C2Uohim+/avKyxRLtNafWvLSVAJEfbk26VNUQkzxY90Mu6XDF6+cu9Te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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAMAUExURUxpcf/////////////////////////////+/v/////////////////////////////29PdvVP/////////////////////////w7f////////////3Mxfumnv////////////+kdf/v6f/8/P/Cpf/////////SvPFaTv7l4Py7tP3CvP/////////////////////////////////////59//7+v////FWSv/Is/////yJfP6afv////////////////+uf//28f+yk//5+PyxpP////+0ef+Ua//s4f+tdP////qilPBRRf7X0f9vY/95cfaDdv+jiP////////////+6iv/u5v+Xcf1jWfNxZ//YyPJjVvNaTP2JZP9qXv/////////h1P/Bl//j3f+Xbf+bbP+WdPiRifl4Xvp/XPqHbft6XP////+wcv/Qrv+OaP+Xav/x8f+ocf+Saf+kbvRiTfhwV/d9aP7e2f9zTPVnV/+KZv+tcv+QaP+LZf9jW/+dbP+PZ/FSQ/hoSv/6+P////+AZP97Yv+BZP+Wav94Yf93Yf96Yv9xX/90YP9rXv+aa/9yYP9+Y/+cbP9wX/9mXP+Taf+DZf+JZv+Raf99Y/+NZ/9nXf+OaP+Za/+fbf+HZv+QaP9tXv+FZf+LZ/+EZf9iW/9sXv9vX/9zYP+IZv95Yv92Yf+MZ/9kXP+hbf9pXf+kbv+KZ/+PaP9xS/91Yf+GZv+Saf9lXPBUSf+nb/91YP9uX/9qXf9/Y/BSR/9fWv98Yv+GZf+dbP+qcP9hW/+Vav+Xav+DZP+rcP9uXv+jbv+ucf+KZvJWSvFVSf9gW/JYS/+lbvl3WPNaTPReTfZrVPp6W/huVvl0WP+scPNcTfVjUPZpU/RgT/VkUfZnUvhxV/yAXfRhSfdrTvJZRPNcR/FTQfBTSP90T/VmS/hyUfhbUf5/YP93VPJVQ/t9XfhsVf2CYP6GYvBPQP1dV/+wcv55X/x0W/98Wv+xcvpnVvxtWf95V/ljU+r3mj0AAACGdFJOUwAFASv+/Qn1+0mr8bpDE+zw6HeB4xsvZ+eJbt7MwdQ5ztPj+sDAIMXY3cbJtX1YU5wW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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAMAUExURUxpcf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////dkv+/Jf/xvv+BWv+JWP/vt//qpv/usv+EWv+eF//pof/wuf+MWP/vuf+aFv+8JP/AJv+bFv+dF/+2If/sq/+kGv/qpf/yv/+QAP/rqP/pov+qHP/ppP/po//wvP+DWv/rqv/qp/+PV//wuv/BJv+WAP/srf/tsf9/W//srv+5I//vtv+HWf9+W/+sHf/srP+4Iv+yIP+9JP+uHv/sqv+NAP+KWP+ZFf+mG/+FWv+6I/99W/+KAP/utv+HAP+TAP+GWf94AP+AW//tr/+hGf98XP+YFf/CJv+fGP90AP+NV//utf+gGP+zIP+vHv97AP/qpP+ZAP99AP+iGf/qqP+xH//us//sr/+1If+oG/+cAP9xAP+NWP+RVv+AWv+QVv+lG/+BAP+EAP+AAP+DAP+KWf/kn/+nHP/im/+5K/95XP+fAP/fl/+OV//48/+lGv/v5f+bZ/+iAP+sTv+VAP+nff/rrf+VX/+yNP/9/P+1YP/Zg//cj/+gcv+vWP/mo/+pAP/Ziv+5Nv/Nav+ZJ//CYf/Scf9+Vv/hxv/Uev+uKP/Be/+SV/+GRP/Lef+nAP+lAP+4Rv++TP+qPf+iQP+6Zf+2U/+RLf+CT/+rSP+rM/+yP//j2P/QhP/Hbf/EiP+9of/Qov+LWP/pq/+cNP++WP+bHv/Xxv/7+f/mz//Llv+YIf9/AP/XsP/Abv+jKv+xkf/wvf+RJP/Tqf+hIf/Ltf+YGf+4bv/r2P+Zef+MZv/17//Yuf9/D/+NOf/y6f+PXP/Hqf/LYf+Ua//Kr//dvf+tjP+GF/+5k//dl//oqP+hGP+zEf/Dsv+bCf+yF/+qCIIRSdkAAAAudFJOUwBPECkB9QUZ/vvORT563J85CuBxI2KJaeqkXS3uwK/VjMiouJo05byCWZeQk44pVEvm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', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAB1UExURUxpcd7z/////2G/8obU/XzP/ev3/v///////9Ts+5DV+obT//3+/////////////3nJ9/////j8//////////////3+/////////////2bA81y78bnk+33P/////1y78ZrY933Q/3nN/nDI+mbB9nfN/WO/9DEiPr4AAAAedFJOUwC0duG/4MIlk7W+yeABoUi79sxgFurYCjiAzPeo3ri31NoAAAH3SURBVHja7djbjpswFIXhgUyBpBgw5xy6aDqdvv8jVqlMekNsomobK13/NRef7C2k7TfG2HKqTZcbPEPaJunwMN1npfJFSQs46xovHHXUWFM/yluGBCvTjbilxvqENarAM5WimBhP1bWCllbjuTJBTIZnS+WmV+NeVO2m5XaH3sfRlJjrqsnSeY+5XAxTYK6a7CXy91TDlEyOTlr8X5PDdJhc3d2xFEa7b2kukp5ghbmTE7P3h/n6ack75vq4H8QQQwwxxBBDzP+KaccmXmgDTHqsYcknps00EAim7IBQMDEQDKZBOJhRh4MZOoSDibEJxv0s1ScP6gUw9umtLfvrqfaBKTC3d+zR8hilYarPdsy5Fse0WP3gUYljRpj05EwcU8KUuzHf/GE+LX1Mt774w1wtEUMMMcQQ8w8YlZZLy2uxAWbMOljyiRkTAGFg1BEIBTMUCAajCoSDOSIczIiAMHVAmBJ/03XyoNwPpsC9/c6yEuUeMINeuaPtanlMibnLZO/Ui2MamLrz5OgijolhSiZXlTgmgyn6sPTrz9R4xFwt/SSGGGKIIYYYYoghhhhiXhXTFqZ+K0w/C9q3FHNbYe6lxBBDzKtjItPlYOn91uHdVnXL/cUlMi1ivm8UMcQQQwwxxBBDzEthto4YYoghxiNGpcGkfgN3nEq/gvk4xwAAAABJRU5ErkJggg==', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAFrUExURUxpcfX6/vz+/1m8/////////1y9//D5/////////////////////////////////3/L/1m8/6Xb/7jdYP///////////////////////2TA/////8zr//f8/1q9/////////////////////7veY+LxvbndYMTidv///////7bi/////5XU/////1q9/////9fv/8jp/9jspP////j77v////X66bji/8vmiv///+j12f////n88v///7reYP3/+/r981m8/////7ndX7bY9GSn1l208Njv/9vq9ZjE4/7//+n0/P3/+rzb9fj8/+Xy/NHn+M7l+PD4/rna9cHf99Tr/PT65uPxv9/v+8fj+b3faGKq3Vu39l++9tzt+sTid8rlhWCu5ZLT/2vE/3u03Ge+7HfHzaXWgZTRndLpmd3usPr98obMtJzTkG3D3rDab+732dbroI6/4ZHB4qPX+qvP6G6s2KXL58rg8Y8rhXUAAABBdFJOUwD//vv88eHrFPl1k4jiEL7C9sH8Olx8A8Qb0iLP9OjVrmxh6+DH8MWcCsXdvyvsTdbNwajoL+PGwFDTzewo6vnNawH5mAAABPBJREFUeNrt3Plb2kgYwPEICSWgIOJdFLzrfbe77e72mXeIdqlYjSAeeGtdr957/PnrijAhJM6EXPtoPn/B95m8w+SHDJw5Ha2hVGdyQBxIdqZCix2ci1pTAigJ862cS9reQK3OnzkXdEVBWyro/LIIoGfA6cVph4f0udTifk070PQ7t6N5oBF/5ZwRaQK6Nx2cXToiQWIelF7OjQwOx4cHR+YWQKkxqBCxKO15KJUUQc/LkTgui48sgC4xmQo950xZbEzCQ4aGsdLwEDwo2bhY/6LMw8PmsEp8CCjm61ueYFiEhw3hGvHXQCGGg3Xs3wGg+OU3XHL5ZbNwgEsG3wLNgOGjvV8Emp/wnZ1NuLVyiEvmgErsN7aVG4FqIX6/LnBnkywNXaORrU5aqAuDN6GkvDRDwFLDMWsDBoO4ZAVKLnDJCLBoY55dEdR6nqm9xqqVKY/w8LNaPaAmttZ19vS8ag7EULW96/M4vvcV7nzBZecfUY1YoPlVdVFTxPjA9EzEUI3rOFYo3M3vASZu9pCG2ESP4bHpEoGYnUI19s5xtcPLwgWu8vkT0jI1C4TYxdG9AKLFj2rdYB30Gn8LEC8YDiRe0YI0fMQsPu8hTYoann5MhaAi4UcazjGTP5AmfwIqQhxNJ5ndXqThDLOJnyFNvWSKO6lnNXlKE0jLJ8zoGmmbIM8pSDsgybRPIerIsD8nYors1n7mvTSLzMXcIB2zZD8xj0wz0nRmdmVQM/PQkKOgGykc5+XVezuYTWG1TM4fI4VuciRQYgQoC6CKk2UgvmI2V6CwfIIqAlAmUGLIZvKTlgZQ2GRbmguo0nC2hO75yXaixEAFqshDlQJmcHAF1dak3SIqgQrjMcegUtiht2yC2ndJWjIfkwO1q8vDh3p2DgsrUCMrSVLRdEwetKzoA01rtzG7pmOWwRLvpFvF/1PMkhfjxXgxXowX48U86pjM/vaGSnZ7P+NKjC+X1rKdcSNmLa0t70JMZkMnJutCjJzWs+p8zKpey0bGhZnJ6cRsuzHAss7CyG7EwHuttcnJLv0CZ+QPag3eceDFeDFezOONaXhPJ2cciZFzaRYb+04clBtpRnkHXyHoZLtjfGl2W869dtLlnXshp/tg+8ysM7dkV22PWc2xL4ztMeDLs+Rk12WHjoMMnXdQejFejBfzWGLk/TW1rQaXYvKUl0wnY7Yox6KjMVmdmJwLMQ1pPb4nGkN/TE9+gCGv2bLv2o/eutq+7B0HXowX48V4MV7M041ZB0v8Y0nMD7DE35bEnMhgAfkvS2LQMVjgu2Q8hoeyGKn54QOTfH9KlZgYlPH1fENePH1nciedSiVF6jfk9K/rJen02+91+1ZOkXaNfV0f1bx3sCRZY6n63kGUEhOGsgRS2JWscIT+k4CyMPNFQV8vUjiyrKXXx3xlMMLrXLUqHplbnd2jovq6FR/hmIdGDCAbBETqyBB9UDETQ5aLzUBFn6HLgmPIcmPGrguGgRiLWbwuY0CEObqgAMRMwNJ5mQFCCBr+CwqxpRdZpLdFBIV2jsXoOCj5Es3dgZjJxxPobk74QGl8lGMyKYDthEmO0TQPNuOnOWYhsFmIMyDEg4140sJkWgDbCNOcQZPjYJPxSc6w0XYBbCC0j9rzBx505v+8g+jqi/JgGT7a18WZEmkLR5sE3mSG0BQNt0U4in8BHboVqzVO878AAAAASUVORK5CYII=', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAELUExURUxpcSnCS////8LuzCC/Q////xW8OhO8N////////zbGVhK7N////////////////////////////0PKYarnt/j9+Zriq9Lz2f///+P35////xK7N4bcmf///////////////////////////////7bqwf///////+v57lLNbf///////xS8OP///87w1Rm9PmbUfh2+QP///6fltf///////+368HvZkP///////5bhpf///xK7Nxq+Pr/tyfj9+fr++1LObZbip+778DfGV0vMZ1bPccnw0vT99inCSiPBRqXms2jVgCDAQxa9O0DJXtLz2fz//YLblonenOX46XHXh97241vQda7pu0zu198AAABBdFJOUwDL39TSxOTuBOzF/PLURTz4AXjCyvjG3BvmCffCaHK2mCKrMG7Pgebsv6VS6efZ2b/ViMoYX+7AMW/F///////+EpDIPQAABmZJREFUeNrlXGlTGksUFWRXkCWCEQQEYjTGJTFGzR2EMCAgKohE/f+/5PneC9U7PT3dZKYq56NQeKrvvecuvay4R2Y31ajWKuFkMJ5Ox4PJcKVWbaR2Myt/GLGNbC2ZBi7SyVp2I/aHiGTq5co6SLBeKdeXv0Qb1Tg4RLy6sUwmu3tBUEJwb3dJfnIeBhcIn5v3n+2dILhEcGfbLJXyR9DAx7I5OrFsHDQRzxoyVioJBpBMGaDy7ROIsHmcP00EQieRaLEYjZyEAonT/PEmiPDpm66FGgJ9K1wkImsWB2uRxEVBoIQNLVttcaN5v5T4bC3E50RpnxvnWxreEufYJh9YsxxgLZDnWCyecmuir8BgNRe1HCOaWwUGX2OGTPQhYCki8MGIqepHQOFdyHKB0DugcFRXzs7rtIG+WC7xhTbWumI2P6Qqp+85SwO571T9dajCZQdIlKKWFqIlILHjnEsWCLwPWdoIvQcCWZfrcha1DCB65mptDgFH+8BajOawO+71xt1hU/LFgzbgOHQUR2mnJrp9mY76Nvqu3R9NX26dmirtIKbqREwXIqL1uOlMgItJ50a0RpECEeF1qe4eEeIicJfeaAALMBj1BI6zSqifRItjYUJzi1zrPM1AitkT115FQo/Di/MUkRt/8NLzsDMARxh0hrxk/oPImgtrBmJdOFzuOy1wjFbnnsOGWJvUAoeJ4/7CsdGdDUqw7ziWwv0mvuXIYQqs73b7oIx+l/XighO3aeD6wsb0rxa4QOsXG+G43jQEfQCmMO0Q4y2v4BKvjOeE2pja8HsGvCc5YEz0DK7xzJjqAO9gZJF0xqicDRqwGQ08WxxRsSTmMLTz3rRAC60b2okxt0nGFtYwITqiH0ETj3SMhxbVNtuYxJTodXkEbTzSa1PCxIaeUZSxepcyUq8FBtDqUYbC6uIytTDY/CVHxZENRmBTMZXD5jfbokpzldKXZzCEZ0pvVgU1aAybkVH90SsYwyvVT2GTNjygzrFcTeUAMAgqM2D5+xwjExaFdbcFBtHqisI7jM13sd6eJN8Ho+hbBLCpAJoX76E/Bki1A8MgtS+APtibc8kEBaF0b4Nh2PeCgApm5p2SSGM6YBwdkdbMu6gqmpER4jvU9d7Zdac/oHx4SMgwmrRVf1sJpaW8yYWZvVhveHhqL1iaPEpQ/9vpUuC+twPQwfW8cRoTvzO4FbjwJZUj94nm5EmPS1MgnE9E47JPZcuKoHaYaXJBmBDWE1QSlf/yEqrDE0TloMdF7HxELZFAlXmMDGxi7j3S4yLWzhExSyeDO4v6NmLmMdDmInCaAfFpgag+azDHBVFr6nIRawRRgV7AHLU3Mkm+y3TMcWk+UyrMd5rkm+ShqRnR0U60uCwUzwnR66K5WgYrHzbXcMUzx+Un01zc4kqDMsIu1kgeWxhezHFhM9yLheEYay2v+IlpukQuMOWnpyssZZ+yKmOeC6s0p1jirvGDqW+Ki7T6TGCxXeGnbHuJXMDmJ+7KSpjbFzRNcmHR5PYIYUzzTvAiDwRoT65n2lwAL/dOMNULcjWvK5pePvzL9FWTC3S5qhdcQTUnXv+O+W3PcJ6G21pcYIzXwajyXEHZoIgXM5KG8KatwYUsaYooH0jIMFqF2Ei5qJNRMdPYIthIuSibScGB2w8WyUbKRdWBpaHNkkFspFwUQ1tF9MYWzUbKRU30VNLB1GLYSLkopQOVRDnosmykXFQSpVIJ0Wf+c0/ORaGEkBRXUp1V4CItrhqKZSdio85FXnYqFuSIjToXeUGu2KogNupc5K2KWhOH2KhzkTdxiu0tYqPORd7eKjb+iI06F3njrzoSQWzUuchHIurDIrf5SD4sUh2jITaqXORjNPUBI2KjykU+YFQfvSI2Slzko9e6xlAasVHgIhlKa4zrJ2MLjcBlkI/rNTcyHkd345/TiaGNDD9t8fhq88tX24J+2jD161ay95vsPj1+4P3BDJ8eWfH+MI9Pjzl5fwDMn0fjvD806P/jlN4fNPX+CK7fDyd7f2zb+wPtvj/q7/0lCO+vh/j94oz3V4q8v2zl+2to3l/QM391UffqoveXOv1/3dX7i8DeX5H2/vK4z6/Ve//ggPdPMfj+kQrvn+/w/mET/z/54v/HcPz/TBCLjNoDSpmlPy116expqcvM3/PoFvsc2RX9HNmV1nNk/wByvbW7x20JqAAAAABJRU5ErkJggg==', + + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAMAAACZHrEMAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADMUExURUxpcf9eXv////////////+IiP////96ev/9/f////9paf/7+//+/v////////+pqf/u7v9xcf+8vP+xsf/////////////////e3v9jY//29v////////////////////////////+amv+Tk/9+fv/q6v/MzP/k5P/9/f/Z2f/////////////////////////////////7+/////+iov////9ubv/m5v/////////y8v/////////////n5//////////w8P9cXP///wR8DtYAAABCdFJOUwD7BPgq0vLc6uju3O4Bw8TK5MDCGt/sP8L01PxnhF0x0XfJzNnHv8TlwXJuSCKsnKRU4Q3GyOjGudfPtJU4xpCwvqylB4sAAAdgSURBVHja5Vxpc+I4ELVh7IAd2+GwBwIYMIeHcEPIsTnL/f//09bsbkpHpLSxNOOa2vdtaojrlfr1oVZLRnF469XyefPgj8KoWo3Ckf+weV6u1p7xm1F5GW9GVRCiOtqMXyq/iYg3vHmyAYH9dDP89Uv0fRtBTkTb77+SyXoQwlkIB+tfpJPYhwLw44p+Kv0QCiLs66VzvKmDAuo3R32rMo5AEdG4osmBHkEDHnW4VnsHMlTd2TyYWNOGY5pOY2pNgvnMrYIMu7aqhZaS+OYubhtmJoDZuF24kki4VLJVW+jNtU5wl32Ju6BTE/q5wuKsIoFtZomZ5YCZzAQWi1ZFTTSAT7huOVluOK1r+IRBRZOJ/ppkZ2LylxZTDevA4crKCsC6Ag714dnBxeYNZGUFYfHGss8MOXtOfJetTAGtS84J9udw6feAQcfJlOB0gEGvn5/LGBj8sDJlWD+AwTj3unDCdTINcDgh93PqhbFRr5lpQpP97j6XH1XPMFF3mjTni06aLubzZnJhnmGqag6fGjI+7Tbk8d5q3h+ARe8wa07lbBou4+FDNO7WmeDiyFbkNr0ECWqvt12ZcJiQU28j+chnpCv5qJXayLapI7Ful5Gx/3WeYnLjvbhgCVzIATcQ//U9kzW/rBmYdTFFH2sdICcOLeEHmLVZfSGYiNaLyEYTF86AOxFZitZN1M4lGNcReMMVnIn7O4GK3TyyWdLxReDTgQ1nwxZk2AYdb5YSI9lUwBB4wwIKIf1sbqtHsRUbagcEohxwIaqxbX83WPbjuD8e7E62WDnTz5kBCHbCNEA7UpblYBO9802YdrwNBYSTjActvu8C9T5SgnGyHGzsb+J88lYHDr3gk4gp2TxWvqxhGMHI2dS/SbxyPwICsdmtr2qbY0TVdVlWjA3B6oSx6VDm5nsUN1S962TqbLyYM1bAG4pKtDfcylJ/SiKDChvjuGV1w6u4RX2lIqs0r7NMDxtjbzN65z38WlKDVkJavdrYrBkhu12phkN6aWJ5iFlcKLA5+kwslgeb2CDwpQsTQE2FTWUDFFrSpfGp5aT29lxOs0GNjUezsbkcTnUF1qL6biJYSQU2XF1yz1VHgprPC2WulAAosznSKp7IHCr0SIoUW9V0QQObtU15lMnHGj5dkuhUdfjf6mCzl2rYIRvG7X9WImlpxi7MAfSwoWLxgV2aGUlQ/9ppSH6acG4Netgc67IclZD/GHI5ssbSdkEXm5hSDbv4NS5bPklqBwtAFxvvJIuqpJJ4+icQ2JIlTEEfm5WsWiJSsH/mpxfyOyZAdm3QyIYEG5vJl3fkj1+YetPlORdhg7v3LStMpvokyWPBWUmNjbR6e5XsxjZkAXnK5iVoZfNGPpHRuIUPjAzDI0GwIfElW5ENH82mTF1Awr9nrMk/TPGmL/pW18EmFO8UzCpVRqwk+iVNnXdDC5utJOm4VLNmKfnNgQqNWtjEJD9J0tPSeIYPzJkoQycNLWzaZNfC6GEOH3g2NuL4OyXy9Qw9bIgfMH8dUL79IK7CEr5WVmdD8lMirj0fqJ9YYmfaGZrY7Ig7iWPIiYp5U7ElB4YmNgOxOqdU1AvFMW9BaVwTmzEhI456oUFqTkdcZ/QNTWz64iTokOhqkABoitNkbGhiE4v3uSZJAbnJqLPBycjMtODNpM6GmKkjMZNMwHOq5tHEZkk0IxFwHtdWZZPftX086Olhgwc9H08HJ0MTGx9NB7JEeUESpaGHjWcTQUgSpayEMMlZQ1sDG7bu7MpKCLy4ig0tbG7w4kpadpLfbA0tbN5J/0paduIFeWhoYRPhBbl0qzJl6k51NkS+YMm2KtJNXEY+9WYoseFxaco2cfLt7SvV2tfKJpVub+Ubf0IZ9oYGNvjGP19LZGRoYYO3ROTNog4Qp9PIJpU2i3K20U6eMhu8jZa7wRgbqmzwBmPu1mv9qMoGb73mb0pvDUU2eFMabdcT7BXZ4O16/CCDiH2txAY/yECPeCZAMDoqscGOeHIcfr0yoy7KbK7kh185jgXvbCDYeIps7AZyLIgcmLaAZqO4NgFyYIoeJadAwVfSzQI5SsYP2bsuUBip+FSGHbLj4wdTdohAId7g4wf4YEbSAxpbhcyADmbgIysBMKjHhXM4PrKCD/M0gcWpcH2DD/PgY048GxjtC9bF+JgTPgAW9IBD/U2yg7ERNugAGD4al9jwCeE2bvO3Gt8j7HwKH43DhwanLohgn3aD8c+hweVg5xPCCBtkaBAfp+ymUAiLDBmnLDZo2ioyaBpgg6ZFR3DvXuFMXDWKjuDqH05Oig4nlz+2Xf5Au/qofwcb9U8LjPorXIJ4rYEEl2mgegkCvx7CY9qcHXq8Tu6blqlwPUTp4ox5kTTn80WadhbzZjLtKl+cKf9KUfmXrf7Ea2jlX9Ar/+pi+Zc6y7/u+idfBC7/inT5l8fLv1Zf/oMD5T/F8Mc/UlH+8x3lP2xS/pMv5T+GU/4zQfrhnfeAkvf/eFqq/Ee38OfITh/PkZ2UnyP7G4kg3fhsBMqsAAAAAElFTkSuQmCC' +] + +const weekdayList = [ + 'data:image/png;base64,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', + 'data:image/png;base64,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', + 'data:image/png;base64,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', + 'data:image/png;base64,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', + 'data:image/png;base64,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', + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOAAAADgCAYAAAFtKlp3AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAA4KADAAQAAAABAAAA4AAAAACiWSQ0AABAAElEQVR4Ae19B4AkRdl27e2FvZwjl+GOHM0CCpgwZ38VBRMGlE8UERVRFEQElSASP0SiIIgIfiqSswFQAQl3cDnfXtjbvc3hf5636q2unumZ6Ql7u3s3tdtdVW8OVZ27x5gCpaen52UsBxUgEzToTsLyt3y0NbmQYOzJxNWgZMK0n5Z+kDJoTUYW7ZvFpy/VtsUkr5XGLP7ev7StlNpn7S0Gcjj6zSHSLD7NmPZtxnRiOfCaGCqx88I3jOlw9AffFCPR6IQKxas/11+xbl33S9O6errN5zZ1WGUQcuHEqaazu8t0d3ebrq4uQzzrbtSdrAE/e8hET/8/nT2C/8Whf+wYVFM7hNqpVEJK1wlY27pk6QazZFqPwR9BXdshwC7s+8XhSdcdwE1nE+jtIrTAf+nht4syygdscyyHd2+/ch4Ju7udwkDAf1583itUvNbkefbpF7IMVPzxD7yZ+ljGxxSKMlrsLFfvTFezGTJ4iCgUj9QzUjoP0fTebe3ssHCHF1VuNTjsaHi0PqVrsFlTjzyaOnPwvvMkV6pAakSCtFz22n+BedczixA3Y+YunC25JU1miSlUYTBPLJw9Yzez27TpfpAo3tfqIWoq3WPv+aKIg0lpMhVmhLRbGDjyerBw5Ent+tr2+BgdjSQ/lZMv2zsqj3k4qctaWFsz2PQMAnMNmKG0e5AV0l1LgRAmoXTCiXdKvIEOTwUdXUxJVGIK9+44UjAL5+wdUZTZWrT8+ZiEWEhjmF7qpFJ479/uN+854QOylGtHKoUXXvsLc/kPLjEfefuH8iqlUYVKQYUbN28UGdMnTzOfePfHzR2X3Cb9RcsWx7w+58pzBV5IaUGFkydM9oJCYQvnLvDKCf/W8d8UOjVIOgmr2ChNwGcJoXAKDZXn4kuCF/SQTB/86v9L4vUeJiJzAFMp7Ojo8Pk6cM8DvKgkL5NgngEN2QFjMyTbIZ2kvTHxVWYqD0MLy20nKsy14S1W2ZqNq7JYYqMUB4FbEdxxi1dg740ybvT4LIY0ABrc0LTVk+4+a2E9OpMIyDqI0jx66jIbOG5qWTB7Lx4RykFUqHADYHaWl6kkB/tCKF/sFZIIoZiGam0OhpLBPDxMxQwDCp4rhIJAX/A8JKdmMGcdI+SytBja2LQA43Yys3jLE84VLEW0jmgTz0NwvhAV72FMieLznCsoia8LnIdodERhqOzX9d/y5wzH1+PchicyOLc4f9JMf7iYeU7Bc46zh2K8OdqvtrfLwRbPOS49/C9q01YojR95X7vp2zgiw1EZjzNR63kCazlaIybAw1CBY3jHD/MdP+UEh/njqHkQmF6hJshhniN+6Im/x4RQaIinMB6HsqYxoXHLX1oJKKYZjc4oHDSPE3b95tNkpPAExBd3MtPQ3QmhFG2g1OLlRAV9HqMKozvL4nlI7eBaZ5yX5BvclsrpVFd3V423GJYdesgrzTFPPQH0IHPQvq+0oVSPxPLAY8CPXbvVbK7fIh7PWTjLKhRLvC5p+I23eEAvxBMK6zGvPvBgO4CgoEtwsjXynnqP0Zg4dYIZP3mcgeFY7NF4XJXtRfMQAlWpDReUg5GBlBy5WgcK4XnxkJdUvIcTu+aKV7WDak1PLU6XqcyfW8BiWg24jFYIEzyNFG8cXowGH/PqDKTHYfEK92o/UuB6KBASldpu3L7NrK1fHWOPQhoD914nlUIeiXH5/T1/KNuSggr1sO/2X95qrr7tmpwK1aicBA7hc5iPUA/ftSatGnLoIa83p34OF4RSloIKz/jK6V44ZarSow97qznh41+M4dLoLBjSQ/Y5WJSoIvXsL4/8tWhlNKigQlUQWq8wNSLEFWoXVHjeN88RT0IlqkhhVHLbRb8tpEvw2GDbbZAej/bGxFeZ3OsX9DCV2TmI6rfyUDdeqPAEgubOmL+UtXrKdrmlA9fcMkvsmCZUNrh2sBk1YnQmfar+1sYtMbowpDGFpAqVxrhK7KgysjOHopAdHTxs90ZRXV4hlfSWUlVGHTGFBKQpBQxrgYIRaeQk0VRadqppCKVfp2ItSYYFsOFKV0odyElqZsqenkQUwnJmkMaFhFntZRc8ZNo3vMF0teHY2C37X9GJQVFwh5clKxNQouxwaKrILAdzOXbDhh/Ale21coyIY8DjG5B8cazd1l2tUl84cZo7uMWxIkJEenuwG/X1+jUjyANb4u2BL+jRP3v4HCuzOy77pA6eb1BOjzlo7OHLP7vvt0CYXUJHfbTBdChIHwnJb6r/IVxoHiQG8hAYFlE4/+QWkWZPnIMx6AuWNLI4+sy+pZIAWGmOHsrZzym7Z6iT22Oe3PLAnCcefgD9bvPDV/563ZQRM3gxRAp096iT3kFgYs7JeSnuI1hDbZSpm/3NDdgRdODoXYcmI+0yKKckmjUITeLXUQBxNnvImtCh39iA+2TjcAkpQXZPzXih0yzCFOE/7R/HinNXHnEPJNgCeeKkbGTQfkwRrP9cf9kGq1AzYWsV/MyiF22U9fSzoxHnvrzh12KefPZp5xR5nOEug8ofyY4cY+ZIv3zpqpyyX35hqZMdBY6y8hXdir4uJNpglk0RI8Bs5weV24X9V+1/gDlmNS6N6Y1FnF/Xd3aaYxpw+22f/YQnpJchTn78aVvl2j7P86z8PfacZ971NAIYyN6AyyHvfLnNzN1ztuPXeZvfOfokGxkYE6P89cZTrUPOILlqETjISKuhZGVmYn0/5FyAwr44kkGfyY9+dDILGTn4w6SwHQ5R9jkPwzlImBRrtIu4E04HMDBkGMWcUeOCs+uy+SFLdDDAOfQ7UwtWOR2kkfxjkbbr00/fJ0z74rzrCyfbCfyhvBL5xaiUq0QHD2v9TIw9PIKNIfq4k3RpJNMk3chkwnea/k7vYOIQLTZ94dl9Eq9eBUjCJcFCecXyZsor28GnnvPPPPmrRJlK+rJftoO8MqVFI/+/Z11uprjb74rTWmm0r/V5p5xj9py30Oj9f4WTvpwsJu7oM68jpN2K3vP4feai6y5W23ydz8DQYaVLgnlhQSNzK5ppZ84dfSCjqOabX3eU4aJFDdUsfOPcUw2f2GCZNmma2W/BPkraa3XZQ/SPD/zJXPHb/81r4A3nXSP4xctf8nQfPvoD5hfXX+L7uRoanFz4QvCKDlEqe3HZIrN56xbzuoNek1M3n8fp7Oo00ydPz0mTBrHDhyiN2nPuwoK26fM/BQkLEPAgv1DRHT3OT6IyqGbQy1Gv8hcvQ9nltNdvKvw0gwxRKsGBsT0ydhozt6QE4/EQw/t6fV1Wb1hptrfgzD+jJG1FQweXgX5OyJPkZIjvL23sDvyjMoFNQwDv9A4SgSS+A9X/BUTSXLV+5YPNrU1vzIT3dZ8PHGFETcq0g/s/hfmGAljD0aWo5rI9wIo8exTarBuZEMZT/XmMAgsQn4gh+1+HQ1GLPYqolI3I9O1YmrFcWSmZKqc3ZauOxBqKj8OSsyQypQRC6HE5BQORUkzpZNDRms+AAPfxYrX0luzEjUymcVDOd1fkicVMXB/278HEe0sh/YkbGTLBqaGaEXSTndv4+/vNC6c0m7aV8QfuC2lNgy8s+82BfTklJmYQjC3gqMvJRcTi0+39A96A4dKD5YCr87KkRpYm+wRk9NJMHVkZZFRAlN+5l763zcitLdx06emwSxdvwGzflKmg6H7psi+B6Y9m6otlEAR84CvL6fq2VSvvbLholl5t/tzWIS57uCfYQ8eQPdwNWod3Wm4eNyXnpXzl16vVjCVh4U2ZHw2fnyh7Oe5e/bzLXkwm/8WH/inTF+2/GZm8Vzv+hBfKpiQ5dw2eJQVuFkQD7a5W0ylmkNkT52wfj9eR1spmzX/Xt/zxvpMo9KQTzhyyB+NhSzy95+Wd8MjRaJvw2VSr15h70PCJC7O1Xim0vrb+29L0RooFAHE46hDthpNBW4x2xnqnrOneuEieFRjr55OtwQrqLzz0VjXX15CnltrhiP4wj3WN6zZ9h/kQo2xNhO1L5tQpZpFOimGolYYtOuqXiN/CMvrsgjeN7Ex7Pv/gW71DIiZYaQYxmaLy9LYHXxQhAJGT8RCjXN9mLMwct6Idprm50dIKDyU4fqmjPrrOcbZckUCgLYHLlt3Wsl3kCbXaQwUouJ3nh6SFiHzZR6qDCpf6P5137UmHaK3UFMI/BxMjZK4wc9zAOIPgpHVDFFgu8rClslyfEkWq4l0/r2wnw0mM8X/n8WO5awvLX9lJdDB0ikSh0Ru3bLbDUeeKDFE7J5/uwNm+xCVySvjVCRpIea7mFjTEN2zFrXDKTZD9VDN5vSVejgjAamPbmsSDkZwOiihnrI8+BE0aN94cu3pVbMNio95jbmrF64/8Ewci40N+IA3u39JLsU1xrEePHWXe/wwOinR++5HRY67exK0oWMhPXvsvMvKtEh0kg5UhEj2/GA/J3FmeuRnXRNQQXN3i/XlcrAIfeRy/tG1fYODln/xLpRItPeF469mcugwb9EA278/z2UigsHAd1dLJs/L7wZBGRASGEieGA0Hw6w9+pXnsX0+YY+S4hSKsmAP32UfoCvGLPBrq5Gmfxu+53x7mv88uNu9ahKFqSYg2cxbMRBd/ItzZI5j8q2QHIYVy7ByhUCvV1qLGvPagQ+z9c1Dq4/pyhCJG5OAXqZafZnl5gXxiF+yzu+DkuidUh0c6ER9bhUtOByV84KdrNEQWaUd9iqdtFqdBsH2siY740bKyHL13ijRWvtA7eRG/6nb8Aa0oKLDKMwedYDonhuqaFjgjHcYaZunFY9JrUJSfDkmbcijC/rEl/45eOvn4KaeIksNBGmul0Awxx9qBphomTXFEjSKHZbNcUd/ROoDQWLFeD1EskV7Xt5XAPZ+DpakSHfRK2OC/SGat7gpY+lQS4omRvvBZZvJZOhsclSO7C9JTCYqlI3/uvtIKQ4pV4hyc1DVPWK0hPYav9xu8fkO1+gQSveiW8PCpJSKi/Vu4AyeX8lgy9MUBbpyoBjX7nt9uVAQDmNjAmn8UgFpL5qcCFB7WiQ7qZwSUMPOav8L7uk5zayFxiPa14ZXUX3WwktHsC1k7fQYTNzKlRPq9X/6g2zpG3PpYSATZ8a2KZJBPQui+K3SB8OvuuCEEpWqTj0slStkOhoa88VVvkKeSfnTSD3kLTuy77e7bK2FnyTIqNkRfse8h5uRPnySG7L9wP/OHX/7ObNm2xYwfU9rnI0r2KIOxYg6GD+WpjiTnwowrXThXQzzbIU7pi6nLHqI6FDkHadD511yUU39ofEiUCx7SlNou20EOxbDc//cH/FujfDYtLMxG3bA6yQrbH3pr9oYkzFjYDuUU0y7bQSqjIVwmT4g/8KCfSgoN+u35N/ruse/r/dv/FZuDtPqqs67wxr//xA/L5w08AI0lK5eYk378jRDU6+2KZDDJyt//4pYscOgct7qfeM/Hs2gqDSg7gx/66kdNe0e7ueWC35hhQ6NbHLfcFZ+boeHh3Lr+jmjIhjSVapftIJ1j+fBJH0tt0ydP/bQ5APvKh5/Mul8Zk9EvdhNhNmLWuU4SvqGxoaBzSbJKgcnxFPZh0XUASMk8U057Rs8vgtz96L1m99nzzYI5e+S05+7H7jFvef2bc+LTIgrZiX108stZaRVk0vFRy6MPz74hmUlXCecyZebq99pWNJfCHQ2vOrijI55WX0tb5v3OZM5UGcyczMmidix05bplqRQmO1hTsy6Tuz85mWQLtvSZj+BfQx90N8HD/nNCp5KEKH7k8FHy8WHt74i6FUOytT32rERMbeaujLsIEsiKjcx9YWtb8/Mr1i3fm7j+XjKdo73qYDhEcXM8KnXDRuw9dcK0xyNI/2wlOQdLh6q1PoMEZGZRifINV6XZ0TUGYPOC2XsnfdaFX0DwiYs5SCNzObmjHShVnw5N5c9ykIiB6mSmc/TFp5IdLUmEiuun9Y25bE7MYOgEspn4DGlI04fte+FY+acllXIAwTqDwz9laQCdfEalUvpLlQM7BqTdpfob44Pza1ImrBDZu2OCe7kzUOwuuIkpNU4IAB4jjY4nSpWTwHcdYHjwsNfKMZDsj4MqqOVIbA4fqKA8EVVWApEk/PaLeQmLfBm50sbtIvJ+hMR+t1Rfi04gksYZUN4dk7W/ecA0PXeE4XsQfLSWxxF8sldqwPa/FCd9g/K/eVOqx+Xw7Ri7xyCheK47XUmVQCSN9xtyn0mn04VcNa42S87dDc+tIVlIFBd+OVrbkkAeFBKHjB50PV4f6gelb+z+HRL5oULeF0wgkhe7oF9IoOK7TGfbs1sfW76hfcWw1p5twyCk5j3b1kyVWcdESdJcLW8ksR3AAVtSN7HxyTF7y6sElEtTrDXWJD57KMVV0UcfLJ3HWyp5+JpNkguLc0095JOSUji+pGHXn6ttK8ru52pGNd43ZGbz0JqhHWOHTGh79dQ3DZk3bq/ZVnjR62uQyE/l4sqZQATrXjAdlYsxhG/vbqi/dfOPJ9kAw2lI5RPqrD0MDMc34I2RzGT5PmddkEC0Nw4aZG6cYL/jSX0iC6Gl0bGHUX0imDinPxOm/AFcZEKe2Eo8/xLwZw+fW5Tdq/FTDefa3Mf897GAA3uM2H/D1w4+l6/6pS21SKQbYRFL4o1PKHLqI8Kk1s2bzups7WkaDHL/1IEwCjta7LCNReDykocmKkwWN6UK1xr4GnkTkUJEjNggYuOBFumiwKpUnZY+0C8AkUaJDs1ae5YgDLSEoli7ZRfhQiv+xzVQ5qKm/0z50sNvg6k95uT9z1+2YPy+c632nGv8gkPP4UjiIyFFVgJB5EIRksXbd268ZNOWQSt5BDpYiSUMjtW2LQ9BSmPf0gkSlLQP9JtWJhCvQJHfCRDTZFZH9giKNACp6bYNAGkJd+TESxurSGYc70il8rqTEpi57w7txtanx91xtfqtBV4/bbIgqc97+qS5VHjFG+8mlBuYXOVhyDgESfSfeItdSwOy4I8t8H1QJo/G+M2YqIPRgHGx1rm2MwU9zDIeabo3DCUo7OPRBd8mzuHxYl0P4b5QgpWpegrql5cArIAYr6TRyorEx2UzkuILCUqxW8JAKbaoPLWdUC/f0eAHa2ruePm6Ra6bq3oqRMQSCMR7QmRmW1/mVbgMFZc0NUYMBIGYLjPAJvqhf/7dJkreeAwSpcmTOp7MluYms62J78pGwVY9tCGu31qVpR+8TDT+bdrYQJHK2Uce3bmofK3/yx8CpW1F2N3e0ox3fO1dWZEN+aw1iaKfvUC/6rtz5TULVzYuWS1G5liBFsG0xScQwB8oMKl+vvHxFwXOQKhBrmZo0PQlE7+9md/3QNEkcdbFZp5LnL7O6uhasC9ZtHQJpdNdX2LyBUP9EUUMT7i304oQPGU6uPA6fkoRfei3teLMiYAi7W7GazxrV6zz8kWik08LQr2im8Cg/PDJz+8WdJOar1ZguA88ToFJ9TPt9+4uh+m8V8qYiGe2trZpEIFHEcPcCNMbWBs7WsxkvPYkJ+9+H4J9nRzA6L4RtZP9o+3ucTeyoHj9aDuQC4agrU7bjPBohbRES98BNYDs+rYyuN3R+tbtZupg+kVbsej+Lofd316DAUl5sjAu0o3kK9KGyiJLXPsZCP45+WS0mu2SbP3eOWnVYZoqxmIVw7t90PC6oRKKk9ZtMFc1NLjNkZt1OrpZc/9ISfg/ZmsdEmbMvgsWCkzTEMlnYPyGTywgjccjaiGeQmmv4tGyA8JJj/BQChyXIUPhMoL8OXyT/ZdrNqSy+50vtYndM+fPCPRDnNfv7HB9YsopfgzAOVqds8hnSESpJVFyHxSCGSAnwR9gBIFcvGyZ2bCZvyZpy3ScFh41rNtMwB7oJUy8P7eHGwRjDtl3f2qMn4A7M5P1S5hEeJJ+sgofvA759QJADO8GH/WvWbnONGzFT/i5MnPoIPO2MYPNJPwu8outXeb3DZiVQZm35xwk0UZC40N0TL7DB2yxZuZn3mNIdHAkKrlLnUD+JiFMsI7DNm9gAKOzGhjiKZx9+6UDmsBRb2n+88JzprWNNyziZfb0GWbSxIlejg0AJdsis0r1u0SITsB62LevkYoe0e90qgCZgRCldibJp65EPGxf9tIK096OLYUzyFY9ZtKUCWb0hDHgw1YBQO9/Dv3OnZxV2gTGh3xOceIRTFFzSejacApWS887LXIcjBjSoGjSOXgO2NM+UiQBDGWBzoqM5Hu9To7DiAmiU/Vz1khSqS2wKUO/YAkjrfvzMDZQvC9OtlLO2WOWs89uvsUniBI5HDwiUyQA5uSwgZ76z16lSvoEQqONA0wVg51xhDtrrJ02cATa4FikxVmYI/dBYp94L98RaBBVgceLbNKLVEXbGjAHFrylsPJJ4KwTDcrPDum8fMGyH3CTV7pWgqW3eJVp0Un6lcIJrmCVOoHWGRpHM+0wx1qc8o4CZ02tiQIFch15giU/ZqDQWTEiU5wnVPFSO/mA85+rLP1ig+UO8ZFNGfpFUGQf1ZDWSgj0ExLYR+2hfDARLXxeF3pqn4dBjPovIiq8Sp9A7yKtpqGo6aCHW4fZlYAQj+LxwmBhnp94leUohY0w4OSMI8CT24oN9Du5qkdolCe0z9FRAGl9l7SWSWrfRoMJimwVjKUlP3EomqgIYmEiP9BvqSu/Tp1Aqo5GEs2FC/xnAFw0pLZeWzx4svCEkVGWqC0QlUMc5Tp+pfX6BUcakpHOtYUDTAIJ8CrX1VYe8I4yrstyx2GWNtJv9Qq/6qcsL19lxGGkr3RJncDDWj6TV3eOZ2zz8uzKyMwv8pcai/BEvlQZVb4+jEA1gX0Y/EqoriawElHsQxnVBPZh8CuhOvVBTCWUFSujrb3NvLTiZbNp6ya8iF+HX8VZYMaNqT6CGsaxXyUw6dtPobFJ7Uu+9wszc1qh22dJnDsHrF8k8KQfn4yPkSwtKaIn/PBE4dt7973MT04+uyQZaZiSvtuT9CGHNLIqSdPnCeQPSyclr1Bwnl/ygjn1p98xk8ZPMr/60RWVjMmAktXnCXwZ+7jMcsSr35gJyurvPX+voj7J9fSLz5jLbrrCrFofPW4ybvQ4864j32E+cnTuB6B/dduvzX9eeCZLPwFfPftkgV/4nZ8l4ncEsM8T+Kr9X5nl5wP/eNA88ewT5obzrvVf0MsiSgF4BB/cOfeq3MHd2rjV8ItD+tWhGVOmm8vO+GVM8oZNG8zSVcmb91zwmIBe7vR5AukfE3XMKcfGXG1q3m54UJNU3nXEO8znP/K5JFQM1tHJRzSyy4jhI0wznhzLLGs2rJUvM/HzUwOlyKVnGosLsfaKbQ7LC30KoFLXQr/189PMcy/FPrmQw6IIfBV+1bfUH9VMe3CSli6yKn+r0LXQQvHURyr6xQwMXT3n6z8Ku7591yN3m+vvvNHwc12Z5bPf/YJ566FvNl855oRMlPS5ifztX25NxA10YL9LYK6Avu2wtxguWjJnxF8fvSeWQP6G7wdO/IiS77R1v0ngOVeeZ15cushcffaVFQl2UvJuv/hWMwhvPIUlcyCEuIHQ7vMEZgZQ+/yG5Zc//kXzmgNebYbXDZdvWy5e9pI587KzEw9A+LvnhUpm8u565K+FWPLir77tGvOaA19t9tm977751C8OYr574fcNz9NKLfst3NecfdKZMfb78BHhC/J8KTlGnNFJuojw2e9+3mwMnmkNWZLoQ3xSu1IHMf0igaGDf7j3TnPV764OQYltzriffONHBT9AfuJZJ5nla1ZkyZg9fZa5+PQLEz8lnyshazeuNV/4/pezZOWizyIMADttAgMfd+pmpRIY36Pv1CHbOZ2rJrCP8trcln0lqBRTwgQ25heQ/9slmxuil1byy6liGYGGxi0VCUSYwEfySRxZN/LJfPj6rRtNU0tTPpIqzkWg0GXJYgIVHoXOAGN0ryVBSlrFha7jJYjeJUANTVvN+k1rC/paN7TukdnT5x2Wj1CvhfoEkrjQBW18fb/+5ZWL/CdF8ikgbsjgoWbujPll3RIqpKO/4xubt5m1G/POi5gLeG0k17d6Q7pZSOAqAmIJJKBQEkHSjZkYbnrJVi0ViEBtbe0zu89cuH8BUbGPwCYlkC+m4+3+/GVt/eoHcC5zRH6qKjZtBFLudtZi5nFX50tWAhWTYiYKKTarG7BZnaJ81Tp9BFLOOBXI70ofox2tcyaQBEjio6her8Rp6qbmbU+urV8zA7zT09DvSjTu4ITxLHYXNATJ4+c7skreBCo1ksFzxFHar9Y7LAJHIXH359OWaiRAyGgsTPZ5+YRVcRWJAB9t4YxjyZs8akuVQDULAr8pYrEC7OsKr9ZlR4Anh0NdbAehTtxcJmkpKoGhACg53yn0FfDHYVkZ0lXbWRG4BhCex4VlBjrJj9BlsfcDAPap+2K5HMvjWJqwLMVyB5ZTsKTaL/eFG7BtQNpdkVjBeX6ichOWtOUnFVFcphAYOyDtLtPtODuCwF9hKbV8JS5tx/Vg8IC0u2IRQgCOLDVrGXw79F7VQLW7YomjIAThnRlJKLeb+sisHEcGmt29csCAIByCIOa9f1hikPmBMh7F9VZhPD7VC8K7cZSJbzNWvlQkgUgYH8q8Fkv06HTlbd1ZJPJbzKcjoblfmyrC07ISiMT9kMYUoa9KGo8AX/TYA8kseR9fUgKRuO9A8Y/ithTZa9/wkln1v9tMxzZ8kre73ow5cKmZfsyRRUrZ8eS9Yzdn5Tgksr1Yh4pKIBI3GgqiT9cWq83Sd5qXvjcIv9IyKPqxD3zxVj7tj3rk/IfNvFMOL010r3LtCLuvRxI/WYwXqROI5H0Rgi8tRngCbY9ZfDp04notPxguHxFHHbb58zuDR/3d7HPhaxL4+wq0I+1uQxJT/3JbqmuhSN6tiFy5yTNIHh6GdMljouQL8Kj5qw3sa92+6TWmdfXivspWlt4da/cwxJuFT0YULAUTCEG8qZv8rnNB8SFBFx/TGBlLFJMmieQsdG2BIaH//frckLvv2n1mdytiP7yQ33k3oRBwNQR8qpCQJPy6lmUrXmz6Z0dzT8Owjp72Ifu0NtTt0dY41v/mgiYu9hsMTCKS6RJ7y5TD19uvhkKDfJdTKnZEpX4nlB39mLkg+L1QkHg8vJRvfbq3yMktEijTirK0Fmo3BCKox7yypr3uoJquouy+eOje67mfGDF4bNvcUQvbDpv59jlDaoakmlHW/miNzWneHOVEInlvgph7IlGFW/fUX798Zc8zcxgV/3FUBIXto5uHmlkdblPJJMmPZriEcfbp/lBr4C+agt+K5B8+Zi5Bd9EWmLZRw1YxLqbT/WwAU6Vw0kWJc23i9WPpjieUf9ywGWbhIPykrgyqdHZ/DR8/V5lhLEYMGt31lf3OWjNrFL6cnr7kvQiQ+IInHOWmNXXy/rTxsg34GAcfbJpDgzU0DJ6LrRmkm0Y3u5AVFxTUmjSPY0LxYwUu4D55HNYU6IRKG5QsbHM0inbipRPp97TA8c+WDLyTr3jy1Op+2duWxm5IT9C/vWtb7Tn/PnEWtZ/9quvqxw2blOYZ20Gwg48SckJllVz7wE1ZlAkAjN0O/iCIS54NbkDHOEq42MgKBGdfsCThRRZ5kRwXkEC8xQYJkcCTnEV0h/rRFjs82o0DK19YAryl4jqwMbRX24l2W+VWMgcJW6H+HvPtf3xi0oX/+vY6QRReHQUZiU/+ZSUQhIdBXsFPAq5rXbrsuk2nDaFuv5nmCGbkpGjt8PxNBTqtm85YYIBTeLAPDCS4YEdB0KBQVY0Md9WqXKhdM2afT5LSUQBHB+U4+WQFnVCUYLcII7dTEdOvQNTPNz417ZuP/T9sl1OV9UlUWQkE0cNJhCFsW2f9ur9uv2IuYbRR9zFqm3deIqJB0U0PRzQThlpHL5OnbSbZtW1AHT86Lh4+mSDMod/RhvqVmHJUEPnR5j5W0WFt9Rdvt8ikIApA8YPN6fX6gW/o2DL4pEfeDyWFC+QcmkkVSyAIDs4kSOj3/KHhZ9MkSbCENnIASx9ta6MACPRO2E0R7WRAkDDdBAUJszjg3WzU2azyfQapB7L55/VLD3DgpFB3oF/tUwKitHj5CkBNtCWhvcXZLWIiARIDr9/pEP2kgQMtXU2DfvzP/0mz28p6gyyWQIi718nPWd2w+TSNgdCIYc4QcVm8tqEXHzRS/qDFzcAwgZkJdTPUskIWBDFRVmpU0xCv31ojJihFTL8IiCQIDQTbP+suZbkWKmDYL8Fuq9/JFhkQR/0ikzWLlS/2o7dk+3MTX9z8n6WCyrMCfex0JDOB4/Pwmicb7l6EzaWYQjoJkKzRVt+dACXSoPTETtS5mcTiYRzlYd/hqcMJzhAvWlLpd/Zp5cyLqkzDI4xt+X0zbJKtRWhnbru9/yov5kDQCZo/ffrkeUqep/5tiPMJRKAK3st7rvO+hRxXLKqXBxA+yBIMS6Fx4Q6c+8iGbbhzIrMucDp2IKMBcnjQbmtslAMkkU+FkON1iRUc2KF+a5mQBnjqj2Bx+7j9D2UKFsRq//YmXv2jbentbm5qCeKDcar6aQQwYgtXzDIW1U/sXctusb+Uyk5yif1Mrk8gaM9KprfQTW1rVuvRGhXKCBPDxCpnBH+TyBnkDCPtViYvM1l60KK1zkatEbBFy/Dzq+BnkZo7K9dO1s/wRAEhT4xfcLoiLagD+Vamg4OsqWk7Om5gaa32aq32ag27+XuDLKJfLLJtgVlElDinn2CWW5ddvqdtpVuHCXx1PpYHGm+YoMEgHZ2X0EYrC5F+ZDBpFy1binU0syQodFgXBsfjgwMcQClONLkBga6ULP3EC7XDh4FBWxPu2FFBsv3PSrKTYNasYiJKt1vk0AEoEv2q0IIitLTSr5CHVyh1mECFJdbNg7bIhVWfRGeYJbbmsZ0URH59vgUfn7OJc3XmjMza1yBwKC34kcjYeZ4mRvWLaqykj0rxoS3cTFKYkFkLLbld+/M08gT8HW0dpoXfHOUAU/tS2t3e2hbEwul3NlGrWBHoAsiXB1bcmXozmjqBXjoakZM0DH/cP7DYeHg8A6O0L7XhZoTMNG6SQM/Zp6M7bPvZKBLll6S9fAvyMpkRylcdDu37sn8U+1y6nH0gsKTOPu6jwmJlWsgL291mVBKX3u6O9k4ZeDY+ufWHerX9z40P5D2YBJ0/XkmdwMxA0TCbMYRJRrj2rRmeHjiWOxtxI5+JkyXcTAaJlISSxpjt1mczfBgmvgu0T5SbSZF+tsAQJMLrZxhJLzgnFPYonrbTQulbKTQXxdL+bgMeVynC7kZ3UYA/oGxj5PSLvGz9Vld8vbZl+YQ4JKs3QyGpE6gM1ij0JF7oITA2OM7lMIiWyIweOUrYN3TikQ/OMAkIayycfeF5ICkR0RMb7U3pocNwtS4mU0QBZsG0J67f4VFJuJx9kkSiyBeRWPsVEiDYHDHC2rCu3W09Utj9qeXY5KIMGTrEmi36xSVnT1y/EGesmrsbazNAmd3SE5gpyZsTOB/SMMAL584X0Nc2bAa5Sxw3SZI89jnrWFshN7cONm1o6swI5UmbZEQyJEFyBSdwaQme+lkyyQQGXCz5QilSRfz0mXxa0pjjX1wJYGG7r9nUaVrdDHSiqEGaSfqVJrPGa+sxLzLx6Ms1aMJTz0A/0xgzMKphunkTCKy05kZ4bqDqhg31H1o9Zv02s64Tm1DZ77mgcAY6znNx3/AOJJBlv4V7yuY5Oo+icqtDA+/1Cwo4Fym1hPoVZnmthQoL99NOsphCPGd/DT4QS/i7nlttVrdhC5LD7u+t6zS/3QJ/UGbNnyk8bOfST1wlSuL9wCTB4rDbFzEQNI0wDRTbYiwhAV4T89oDDzaP/etJEX3yZvvz428b1mMWYCxt7ao1D7YPMivxoJqWiePGm8FDuBnSgGOWFtLv8En6FUZ72NbERfIzfYJ/+Fu4z3zzwrOLYVaP+cISe7nyPeOGmD3rasyWji5z97Zus6wdtrkyauwoUzuYSQeH2C4ttEkg2xTvk2Mpq/JTFcpERS5pvO/nj9ZAKn+swcU2C0VIS+BCYfEkQiH/3/5tkyiAHKupuM85Yyo2X06empaoHzIUH9aiXexw9mXaKbIF6O32/PQIeK8fm8UXn3spbq11ST0X3NjxY82EKeOcPCtDxCgVOyiqRzo5VhX/HXmqZrY1iM4WHVSMki0e4fqo5AACeNavPegQs37jRrN0NfYrGaVu2DCz9+4LsdmyTqpIkuXUnyHDBydgtuPeEnq8CmWtBKjl1hL7KF4E7Fm47x5ma/1Ws2Edjkod3lLh3WgcsMycN0PovXxlBi1/zFnD4vHKXGadehNKPWpTrAXLaBQ3n1rYD2mt0cA74BTMsMnyNAHoMLotdbRJFnpHK7LoPTePqiBsqX6ODlcK6bf2gJgmOX7biWBxWdRcY8ZOHGvGTBiDNix2xnTjAEzk6Si1WGchFTh8EB+VXYk62ukUkCZGqtUxIxlbu7+QYKicgFaCz0AFgZcI2LiAwyZPMuwCE9Lq/krwTn4oTfEx/aEutS+AWX/U2AT9aj9yEB2IOOPAZvXbfm79jl71q0xVW4E69Qzk+La7ahda2KZBlmCoMc5IMZ1Jsw1GweYncEKCEOB5NhFLkspCLfodrVRCalsx/S5JqldrkrOEtKn1Q2aSfpWltdPg9Ig2a43zw+Iru04/A11grHVY0yMUNV6TSbgPMPHyJw2SZxd1LmQKqER+hkxFkyXSr1CnX+0rpF+tpTDHE0lKll8ILy6pfnRyuBaKKbmdOoGigcY4azRwuvmglQLz1tqGbn4kkY6ZGOXXzSvDbv+IjPBePoFCkQMvtpEReBanS/mz9HvCaPNJmyJ221J+K9jhqSZDPvEx/zPwSm+Nq9w6dQLFgGBUSTNwRPF0W42lDxoSD6PtRECA4J2jxHuZLoxxWeyR18p0pkS6iKBMkniZYdvyyzrEqy7Vr/xZsix/Tv2UmcUT6afpvVFSJ5DWWb+jQGhyxDDuqG10pMum4C25O9AhygFCWmlb/phMCCTKyk2QbxEUipKAt9G2WDmQYDNDP7qhfE2+JauAftHee6siEmgd9zFzcYhMy4/XGUZ+UspiWWTkCoTTysEURfmIvUd4/QTFiuXweBUgvBALhIgHnChdRITKd7SECbusAv3Ae/nCGK4sscc73pCiN9pFJJDqnZGodaYwMH7UKl68CGidV8pjo4CAMiD8UzxrCRJ5bZu0ivf6A1iifrHD6Q9pBU7RVj7zlaVf0Dn0k8/Zpzbl1g9BXpZt98Y6dQJpO93SdcwYt/mUuJBKEhNRyIGAZ3VSKM82Qa6bPxtQ4SSOC6Ps8JbcMRGsJVM/4CFVTv2O3x6o2I7nY4NLpn5P4JhZqf4AxIGxI0rq88DJ3fODmQDfEH01shZf0JCr9pIRa7hPJrrqitALH/npnqPVml2LwDknOhaNyrZVn3CKHE9gSQOYYJwsP1vISGkUZwkUYmvCHI/oJ5S0VjpQwuRoiVCMkElfqUP5wpCx6uiy9w0zwEV3Uydwr/YjcgqfPmk33LTlJaZqSRuBtD/hUEhe6k1oIUFVfN9EoJrAvol7xbRWE1ixUPaNoGoC+ybuFdNaTWDFQtk3gqoJ7Ju4V0xrNYEVC2XfCKomsG/iXjGt1QRWLJR9Iyj1lZi+MG/Z6mVm45ZNeL9wq5k3c67Zfdau/VuESTnoVwnsxic9Tr/oDPPMomeTbPWw+bPmmXO/8WMzdAi+oLSLl36TwP+99Vfmjvv+mCodS1YuNR/66kfNgXsdYM78nzNS8eysRP0igVfecpW58/7/KzrG/3nhafOeEz5g7rjktqJ5i2H49e+vNbfdfXuM5dYLb+oXW4A+P4jhg7GlJC+MJpPYwhdId8HS5zPwspuuTAz7sKHDzKmf+4bZd8G+eMmzzmzYvNFwxj361GPmqef+FeP5yjEnCE0MuIt0+jyBf3n4rqxQv/vId5rjP/zZGHzKhMnmLa9/kyxEHHPKcaZxe6O56LTzzdzd5sRod6VOnycwKdiZyUuiueG8a0wrNpt1mJ27cumXCUybkLTJ4372khsvN4889ahpbsGHe1x59QGvMp9637Fm5rTdFJRVf/Xsk83SVUsT4F/HQcww8+kPHGsO2uvALPyOAvTLBD696BlzQMGfU08XouNP/6JZv2lDIvE/nv6n4cJy/bm/NmNGZT8WkpQ80q9ev4aV2d6Mr1j0Yenzo1BeXcks373g++aBfzyUCS66z6PTXMnLFPaJb37KbG3kF6UGVunzBJ72xW8lRuznv75AzvE+c9rnzb2P35dIkw94+oVn5EMn4o499dOJ8P4M7PMETho/yYwfm/u7NvVb6s2F110syeSM+sqZX8Wnu/jOev5y5lfPMKNGjMwiKnT5rYNfZhpARR5bpb145jF66DHBgXyPwVXiscL/9/VjTEsrf0IofTntC98yrzkw7yfezF8e/qu55DeXmZvPvzHrXJEDIrN86v3Hmg+85X0xcG9cickXTypfOGfvmA2ZHTyMLLnr8xmoht388xvM9044Tbup6h9dfo758pn/k5f26MPfKpfaeDEgs3zk6A9lgsyqdauyYP0Z0G8SyCC9cr9XSLD/96zLzZGvOSJV3FauXWWuvOVXqWgzifZdsE8myDS19O1RZZZBBQD98jSCV12+dtz/yEL7125ca2648ybz0BMPJ7pz5/1/xJWbzyTilq9ZYc696qeGid4ZS7+agbkCPH3ydPONz3xNZif3UUnliWezvz9z3Lc/a04866SdNnmMw4BIYJgwHmAcvPdBIUjaPPkPC49WtzRsCUE7ZbtfbkILRfrDR3/Q/Ov5f8fIlq1aHuuvWJv9ISEeuO2z+95m3JhxZsLYCWbj5g3mb//5R4xvoHX6RQJ5+sDTiEu//wuz29Tc1yU1uM8veUGbvp44LvrE5pP/fcrDtcHHMC749s+0KzUHwUBPYJ9vQu/BVRYmj+VLPzjRXH/njdLOt7ruDzdkoRfM3cPDnn85O8G8aJ1ZeHBUalm1fnWprBXl69MEfueC081FuMoSlt/++Va56vLjK87FBeMoSLymeelNlwsupNf2O97wdm2aPebs7tvayNxHEp7rZrLyaD1yePYVnW///Lvmvy89J/ckla4v6j7dhJ590pk5E/L4v/9muKQpmQE+ZJ+Ds9huves2UzuoVt62fRAXytNe5Kag/fBUQGbhZp9J/CaeGjjskNdnondYv08TSC9/f/Et5v1f+XBZDl/3k6tj/Lmud97851tidGk7e80v6qcc0oqtCF2fbkLpAWcFnyqbMcV/Broox64792ozeHD2OPzJyWcXJScfMY9eedG9P5Y+T6AG5bIzLja//vFVZo/Z2fsvpQnrT7zn45L4saPGhmDf3nv3vXDU+VPfz2yc9sVvmx+c+L1McM7+r350hVkwd0FOfF8h+s3diKQA8FbS4uUvm+bWZjNp3EQza/osnL/lvvWUJENhfJKNM2n/hfuZwbXZM1bpdlRdqbsRfe9Jnohxs1WpTVfSgU0e1QMG1W82oQMmYv3M0GoC+1lCijWnIgnkY3vV0jcRqEgCW/nTNNXSJxGoSAKbB9hd7D6JdC8prUgCO/ijVtWSOgKbG/DbE3lLTWNetDEeX5EEUllLW3FPlBUwcKdG12/dmNe/QTU1yY+SR1z2sXD0K5bAleuWReKrrZwRaGr2kycnzfBhI7LvRsepl2i3YgmkwDUbV6ncap0QAT56myZGkydMKfS+3J0qPnUC64bWPaJMuWqOroamrbnQuzx88YrsG81JQcFbT/OS4AHsD9oOE3iNApPq2dPnpbrptX7TWrN6Q6EtQJKGnReGH3Q0ha59eu9ratb5do4Grun6fWB4MXsm6PNGfvGK55uxFRiRQ24WePpkfMl3RPYrW1mEOymAm8xla5aYYo7Sd5+1sB632PLeu0ICfd58gzEs9H4ERlL9yysX5RWeKxfYBJthWALduUgHNJwvx7ThwkYnf3a9yIK0bF0we+9xBdi+hRj+RGkyE3gPEG9SZFL98qpFz3R1de2fhKvCyosAXmjhNclwt5YlMJx9RGYSH53FkQHYfebC/SGketKXEZdyu7OnzXkeMjLzkSl2eSYgxoDEcN4XfNZuwey98OPu1VKpCOCL/w/UDRuR/30yqyzr4ZzYJpQ02A8OQZXq2hgOi1tAX02mDW5J66kTpj0+dvT416Vgfh4TLOt1qtgMpBAQ8RXVwk/Xgogzsba29hnyVUvxEcAR54aUyWNespJHjVkzUM3AzOIONSde6Vjz6HTJqkUjijnFCPl3tfaIulEPzpw6641F+P1OJPBPSfQ5E4QE8nkZzsZiSveKtUsfw/3Bw4ph2hVokYC10yfNWDNqxJhXFOnvY+A9NBdPzgSSAUnkc3SLcjFX4b0egY1I3pR8WrL2gSExmBejf1QIq7Z3WASaCiWPluSdgWpqdSZqJHZYvQzJm5dGW94ZqALcTOTpRd5PkSh9tS4rAuelTR61pJqBoTmYjTeg//EQVm1XLALTkbyCdyNCbalmYMgABcegPxRLwSs2IV+1nTcCX0dcWYpKHiUWnUAyQVEHlhlocrN6L2HVUnQEeJ79CWYN5fyiuR1DSQlUZVDcieXNtACwWViuUVy1TowA77cex3ih1GLh7qisUvQ+sCxtO5gZ+2u+G/1eLG/F8hYs3GqUUviUGG+13Y3l9wh8QylCdnaearx39gwX8A8DYDcsF2DZjqW3SysUXI5lfgGzdlo0fK/Ge6fNbkrHMAgmYrkVS1+Xv8CA6SnNHrBk8LEa7wGbvQoajoHwdizcC/W30gmDPlpBV/uFKPhUjXe/yEQfG4GB8B4sbVj6e+mCgZ/s43CVrR4+VONddhRzC+i3F2GQeF4rfy2Wo7DwgS0+TTcbS7+1GbZVS99HgHc7ebWSLxH9Dct9rHHhrA11vyt9Ppgx0fiazPuwcG/BK5W1WKqlGoHeikAXBPOK9nVYeEU7+h203tKYR+4On4CYcLxQcTKWL2LhbYJqqUagryPAXwm5HMtPMSF36BMKO2QCYtK9Cc79EkvWSxmA7bjStupZs+Y3raaj4ZXG8EY4jlb44Lk8fB62HWzwyP+YmZ/tNiMXZn/6d8dZPXA1Ddx48xnoL2Myck/Zq6XXJiAm3UGw/LdYFvSqB4WE9+DjQ8svfMp0bOX5JAomV3cw+fxExJEJ3umwk5JHKRkTsnbEU2avc/c0g+qqe22GMVfZ+eLNZ9o/gsn471wulwOv6ATEpOOjUdzT8fCy78vGOx42W/95uBgS7uUyJxf7+H6EqQknHWGcqDpZ3aQcc9BDZt7X39D3zvVDC3b+eF+GqHPPyEFRkVKRCYiJxw+I3I7lyIpYVQkhq6582LSsONzv1TiR/OGmm1R+T+gml0xMtIUOE1B5Mids3bTHzd7n88pstWgEdq14PwC334uJuE3dL7Uu62FeTLzBWPitLj4b2X8mX+MzT9jJx0nHycVJ5RZOKu7tuAisE3iFoS2TD7iQJyYDtM0rX2c23PEoiKqFEdj14n0EvG7A2P8j5wBDUGopeQ8Ixd+H0jNKVZyer6d7SdN/Xl7a8t8hm3tWT95uNo3oNt1iN0/Zerh3Ygnab2gdYvZs57YFQE40QWLiyB6N9GjLISlrMoY07Cs+Ayc8lv/lIUPNH8dOtPxWg23DMjmVFLtoJiwEQGCCI7+9mSmqhU5AQseWpeDaCqOPVmaElRZIiJOS0RYpeMnB6nY0IGRfitrJvrZVs5BwBX7+KU/IzzYFAffBumnmFbWjLKSX4o0PSpmruqlRtFIzVYt9tgNra2p6Jg+d0TxzxB4bD5z4uo6Dphy6e42pKWsnI7ILr34A3WcUJsumQOiLK0jGNHDwhHRqcZzpqNe0vrzsn9v+Mnpr7aoJPd3dPCuTSGvYORj48gxrhUkmnHjC3rF9sNmNOzZmSCebn3CciIRjkT2g6/NwlNrksFQnpOPXc8FgYm7ELzTdON6GILLEDngIl6IDV/AUheJpA/uFTjJhZ4IjBbGj1pr8aCf7b1Pp5Tta0en4SaG6pKYiUekaiicTisoSWguy/Ipzhn62bobZfdAwsbe34r0aPpzH7SL+rB+RfQD5ojYTENjdM7tur83vm//pxoXj95/riSvbWA9xB2EiFvVSYFG7Tzh0ApTwIktFy983/2nRS92PLeg0nTXQMdcMwkCWQa+DyqpjQO3gY/BR3LhxlXRt0JkpQrHoXkv2coRjsZQYKzrRHEwOS11b6cK9o8Aog3KDDasYICPZG2XtQJdF8GQLB49FRWvLL3xuz6U4srMIv1OjMIFjxUhx8FmaGtPtdMXwtDswU2QEguzgJcBtSCg0KNY22gFgwOcP1wmMxY2xcvEkrqx4Uy/2Z97/yADaDQzWkf9iq7MdsahZ3vL8xAuePWUi/R9SM6zniKnvXfz+PT6zMHCv3Ca3xmuhlxdpLkkrLPUEhOBrIPTYtIIL0W3vatj01y1XDdtmNvDYRQKhIbXBs4OAY4CLBBkNST6Fk1j6lkvWXoBLvBC7AaATkIy6R2ObA0QHidTK6/j0sDXcWwqdnYBRommh2mcNEZxzQOnEJOsQvZAJ4xrCH8LII+zOTx18Qu9WXq7njmQqTtS5wLnKU1urZcqBUf4hObA/Uw9QgfnWfokHNmYivLfiDb01g62KwAD1Uf2guYSJB85ZS24NJ6i9p63mrjU3L7xr7c1m2tDZTScdeE7buLqJOJ+oSPkl9L8Gk/C4NNJSTUAIvB/CjkgjsBDNsub/vvxoy03zu3o6J2rQEBNXFIKuCx4RxGuXFAwoCwMtwfUCXIMDInMySZ94DhA3SPxEdPSiRHlBmyXH8QscP79Let1bEeUGrm0JgM1YEQ8dKsYvVDn8B32W/4RJLIK9VahSGZx2omzcYkSAWX4PdYSBJTH7aQh2RNZT77/GVOMYxLBS8aadsER8tg3bFri3PrI103+QZPkPmnVtK0ad+vePjRoyaGjP5/b87pKDprx290hIya1jkdvZmIRHFpJQcAJCEL+Jd0QhQYXwnT3tzbfX/3xQy6Btu/O3zWCcZFEHoY4wBsnCpIEguwEmCthjnwl34fSDIEiC7u38BAMuPJRkKsPJJf3gcFTkhzQBP2Xq/UIxUW0BDQvdgk3ih8jlwCE/kYDD727IEP8JYSzwJz5bdtu2gSCHxwm/9FWn5fcbAapA0fhZmRG/nVTsh/zObmiSVmC/HMbqBoZySSF9x+9oJZY1iF+vxttG1Oc/Nn6cz+J9Pv9JkOx/R3dbzSXPn777pJentX7/1Vd2D6ut4zPK5ZQjEP8/Ic/vyCckOJHJJoMA3nh8ezamOMhDm29e+pvN3x/RPKihjknk4OPgYMJlIMokYoLD4FGHDh7BgIc0WJGfNcFOFqlZZNBxssn5nKvl3AODRiYhYD28QsPaLd16+8HRhPxKwy25yKFM0neJetooholuNHGlzg4VALydNNT6S/ti/quPFCMysPYiS/TfGcDBam1z+lGpfrGHYOp0nrCS+AmM5mueSEEkEfTPKmA+pITxYox6Jd6dVj3XYc7FRcKcKTTKmmftFCNpKDxAm38y5qQPMPnxp2Vj29q6rzz8rhG/eva8pQoro+Y7lJxDOUvOCQjGD4HrCzk50yF6fl9/XvOynn/PExexiiUYMqQvQZSOSNXEEodYW5ityMCI2UX4RLIFecZgInGihZNN9nxu4oWTSwaRTsRMnpDeyZatPY2Cfme/JNL7QlMD20iKEsLoWpb/yu9wpfkvVnnZ1BsVWAmzfKhgv7WDPNZepVVbBUweIEgjtSclYgfEW3TQAK9YzLTx44aCKIdjW0ixpnNhAY2lBVBibTcoMX6gHq+/a953H/8U35RwQkMhRbW/ALs4lxJL4gQEA3e/NyRypAb2dN+yuxFX6AAAH3ZJREFU6cedTYO22F053XDBYKBs0p1vUoV+sm0nnwSGOgNSGQIueERJIaErTc14uJ0TSvdasS20m2S6N/MTL2OSER8OLOkTBn7IbWtvQe2SKXoj/QKn/QLPXnn/Q6ey2s5/0aIrSrbSdfBE0iP9borYeDuwhsfG08q20uJryqN9XEIHvHQ2gLMbBut/a0srYL0b7452vM7HnDv71E7WMqM0fuy6KIn9znC6wyL8WIv9DujpLYlfr29bNeKURz/WCTy2MGWVGxDPxEPaxAkIVadj4QuxJZfbN/0caWkcYoOjQYnESZJdV5LNtguwUtn4IGQSvCCCIPA8Ge2nnnvWdHYgWRwQbrL4w1GBEe4Gi/Y5UT2ME5STLOD3dI4Xk7ELv4L03GI8p8tZ5hIpE86Z6cGaZFeDWor4712KmFzL0aDyfCGG4KgvbXYT4kewJY3oKVz0s4EStgUgjhAh/wLSlkoRHnSWLl5mujragQ7i5TdWLl4+tq5fQry7cSN+9ZI1zhaoy/SfGO+/dYAktDcgtQCB2WlHtiz/CXRla8fGId/722e4tS2ncC6dniQgawLCGD7tf0oScVrYA5tuWrbN1EOOTRcd1PMJyogFj30n2AYq4gkwoHDnQwxyLKKOGdVLK5YZ2ftpgmUPppMpGAw6oXQv52vQ+jbpMTHd+Z4MsIyB1dzaYlauWeMTLMl23vAChtqf5b/32FG4ACT7Lw7Dffjv+BL955gTlVaYpXGCBWHjp1t+wSg6CqGPLfm9vgx+wYB33ZoNpqUFG7sdFO/Wtjazaf0Wb2Ngtm3SHzc24jGyjhIW8z9LQDJgXevKkVc9/ZNlydjU0FOgP+tNmqwJCHH8jmbJb6W39zQ3rKp5eg7NYizoetbkk8FECtLY4Lie5fFBdPHUwecmn70I4DgcbWdnp1mzgQ8joISHjtrW80AdLJxY2tYJSdpMWGZf5QmtMRs21ZuuTndBxjmsLtGzLP91MAPHQv+jCKCNjudnm1j674Cs7UWEiN8KsrSUFeOXjpu8fuPFBgh9Py7LsVg51GcJrRqHxE8Nms31WxyjO4KQOOrRRMberkLxbtjSgPTSeKda7EEbINkwsOlgElu2M8aPOJ7J7/q5qr9vuWfO9s7Gcr4HyznFuRUrSRPwPTGKIjt/23TnZjiO1NqAKDtD5sMmAWLE3BaJoXNBUyrbZfAco2e2cn1wiQbxtuYmVWXWyiFoOCh07xfAwonlDzeVDrXiM/Z6Agd2TfAkTHMrzzllqtAab0fkk4UKhitxDg3UGBvCE9Fa/nAtAi3ANqnLLTI3/NCzsmQt9CEToOgSYi2NYu5leZyltdTKAxjBTm5Lc3RUtroNbb9hCmIYwjSecjhKmowjE8XniPcqkrvCc076IDHjRsT9WbT12drpGKzTJOS/UNORKOaOLk8F2ppbnr9scx6SNKisuZU0AfdLIykXzUazYpoNgaWgk3I4xohwYcBYu6JtRZNA0BJYEKFDGvkThOOXgRu1BwXP3N7b1AhGJNknM9gqCwx91v7wMpiYfm/oBpJMTuKxUCdtQH1fa3CQMGiQJFZc0q2tdECOP3846njVZ5JomxGx7rm9FfuWQLb4Of3XvYEIIIPdW9qJLQKcDktgXWDbBlD02yaJAUXH2UkDIr2OX9DYcMBnLX/euAnN3o33n7dCfqwE9ovNQNJEtOmTbtgIsTF29vt+4DSJUpRFTc/wOehyyr6ZzFEUI8z0qFl8q61mO57KtcUfKtmRJfGR3DI6Lrk2YFhLPJDuIPkcDOxyEIRF5CocjKQZPWIk0yBlRUeHuXYLD4/cJAonncDc1tdvddEPt9achDp5lZfCxYwa87vWwea5Lhs6gke4e7a03SZbzIBPwJLHOuGbCrd+Wfut7QE/+MR/USuKrVCsY/zOfzpPedQvap2tVrXld2YIf0TrbHR61H7SUpDUYrlzw8GHD6+jgVKWtbaZK1bxGeTeifcNmzvN063YALpSR90wjH80QmzO6T9puNi1NR88DiaIlKvGzgY/tlOyZJJl/TRC0gSckMlVTL/TtA1iQHSJ88J9FzgNAOnsgCEPqJlUaVgZmmTKUZnkZVuK46/BA9xzZsyyMKzv2t5szqzfbDr9IY8bHJl7OMG7PaBONs/jku4GGjX+vHmouQ0TUMv0qdPMID48rvYAQTpZApiltxixXygsn/efROK/UpM+KjH/HT9j5fkduaoVmwLbaZXAQMCaE1n6UEGbRKS0rU5Lo23W1n7VOWXqJIvE+s5NW823X16NeGccWpYZ7zPXdZgbNyN3royfNA6/KaQTCM5l+m9BQi2+sY+ehMb5rX6qzLR1a9f2pPmSlp10WXMrGknFiCmBVhIMPhsICuDIkB5jGBW0fZckrmgwBQkCHTxC6xh2mzbNNLc148IID4nwYcj2TnPcui3mqOFDzHGjh5rB3Mtxr0chnGysZc/nYIKnMPRZiYk4hETjppbB5v/a4uGaOG68mToxGoTgsCXmkAM5gTrgc/oPco2VkyaV9Z+jiTaT204emimiQ2InQSamwsUmG3NxzU0+aWfKcPbbiW1VWiXRhOWsnzB5vGlrazcNW+yL4c82t5r3/3eledu44eaL08cg3pReWrx/Xd9pfpdx2DlqzCgzdsIYMcgeHbhISRCco9K28Nz+hwwaoL6p4yOqAjZEA4wpg6P2X/MHDXTeDiQNgx9wbsCrGaEsgYksbLnDwUdEMGAWzJlnRg4faZauWqFizH0tHbJgw2mOGjbIHF1XY6bXUhj3ihmTT2T1mA24yHIP9nR3tddiq+5F+cZu06abKRPwAL24EhGENqtfAdbzMw7ObLYiuAIBCWVZAktpwxRyWX47YSJZnh8gC3UNZzNhKksNEKkEonh+2yXEthw/u9NnTjXDhg01G9bVC478f9naLAvjffTYOvPeccPMbkPJlDve64D6v63d5o4GvJTm1Hi1aHCyj5kwWmJG82hbRGZbOf0nvQiLOKTbD1b0JVbgWFlWXlP/LZEXipE2ouMfPEY4rBaqcltViSoD5UIVmJHF74Mf8dvg28Sw3YVHxRYtXWI2N2yN+VduZ+zoMWberFmw2hlM+53NlK1+a00y295B/sMWWiYPUjtnbdvq556L9rgog8L21RtJjLfZCojsB5fiRAD7Th5krlm+1jQ24YpwrkIerygiElG+G++NGDncTJ4xSS760A7Lnj1+fP5z+e/s9GpKbFx5xD0lclo2HLnRBV96fw/IkHnnkSyXek41ZsMm19ojOD84dDJhqIf8wNssxPkJtjJtcsiz57z5ooOTcPmaVYY3cksp3MLPnDLdjB0zRuyXQSAKQ3+svdYHq8W2Sa1+hvRx+8lRlv+iEjIz4kfdPn4+jlZbZJcwOwsow/Z14oV04SSI8goKyJ4xZ7r40LRtu6lft9m08wkZLU6mys4E274lGjJkiJkwZZwZPmo4rReUjhOJkYVgrXFVk2l7QMEcwS7vv1XSr9YVn4DqnYSSK4kfGwKRDaynkQAxZsBZtFZKolyoHT9FsiksvJDg+C1IqFQlydieMHasGYfJo6W1tdVsamgwLXiSpQNXTNuxsDDxQ4cMNnV1dWYc9nR1w3jRixKgnTZapdH7cKIt0g8CISGLkAtAV+R3cDHQ8QmtOGPxso5WlotiHT9Q4j9qmQwBPym4iHg0pM0O2xJrwQBgYUQIGjh759aiBE3mWBFpAmFL0M5JGxtHDMSoMSPNyNF86MPytLd1mKbGJtPe2mE6O7F08PwbT3sMqTWD8WmPIUOHgH641KEsttUu6z8nnPOP0tHx+Qec2qxGSo+3LaT/rSs/ARERCYwLAMOgQZXgIePh4ZHiNDTc4tlgOwiTQEZXdMDYkQPpDqckws+OEIp2T6MyhmFizZgyRbrCD1rlJ9DD+GoRRjv73gKh9b0s2RwRpLd2QpjjF7nsApHXf8dPeimiG/qcSvLLkyBUgCK2spYO3bb6vf/kxyLF1dIXAx0/ZToSSlA8YZINNCzarSPiSLbVIA6SX8STHP4PGVprxk8cKzIIV/+J9rY5/uy9Vdx+8T9Bv7WM9orFTlq2fI/oJ41yL6tmuWHP8+A4wy2JZQA1wbZtg2RpmBCXXUkGX9YVkAuyyBGIpZdAyyAVKkeLirr4Rz4K1SRpLSAnjVl0fWujZREJSo9aky06LQNJAA/4KYc4FOr2g08IFeZoBE9dHCSE2YEqnYBfZBEoPgkhQUIv5iX57/GWL/JfWGVFfWKrOGblJfrv4ucqy0MJojzDf7VR0En+U49dyE8R3n90qEOLxo99sZSylRk1YdIHl62JdDRSE29holSw/XtV+T0gg+O8t8GQNPooECcQFyipJNA2cOEW0NJaeYLVFQV4HWgqv8beJwEAO4u8fpc5myjhE3axWdki2XF+Kx5r/kfE3h+LJ9pRqnPCYE3I8p9gtd9ZqbIj/9UiEFBmPv9DWUJLgApmbflFh9BqiKDN09lGaL7jtPopRYmtOOl7du8/uVAUIc2M/AtBIM/RECzmSz8UocJsrTZ6e0L/KaSfl4rvAekvg2Lzg2j44gIHBIPFrSALB1k8QZ5BaMglnBTI4PJPAMFWUPoRn2+5PRX7miDhJ8DtBaxE4gm0hU2rQhRKx/M7Qr8XFIuU0/GD2Zqby3+qd/6HilWvE+f3FNK3Bsb8V7hFWa6wnem/ukOa0H/0Qza2pU8THcL7b7VE9if4Tx7xP3TfC1JcHv+dAaremuDWTjYHg4fbhrNsYFWV3wMi8ho4Zk+DFI+R26sJrW37sAUDUpPuR4EnYhIpkUvAD8URT9RWKwL2OH+o01lM2khW3HrFCV4GssVbvyP//WT3cYgsIC+XcI8v2ExbRDRWrKnAFWubBXr/Cvmvshgz0eP42absHPwgVrUMCugsv9UrTIKnCIGxwbbn8xYSGvEDX9B/K0nWdkVbXM5FfpB/YCKdAUs/blZ8D6ipYiB8W0LmgsPk8c8lJ9YOeRxeYmdj7ng04IF0pdUaTCo/k1/2vEIX8IeWOnDI7ynBpwMmwosHTg39QtMNZM9nQdamTP/BwD+WqOXszxBgdSb5L+xkco0c/kNDsv8BvxMR+Ue7bCHM+x9BYy01gbTk00UmJ5E6eR2h0lGD6pG2CmLHFbHJxS/yFVzKqLUyDIC68ntARMPHwQVRg691GBcJahzg+W3AgZQBbYkIQw7iNI6fekN5WfwiB1RiSCTPsYtMsd45EMoSGuVXhqAvLG4lbosOK0ibckiZMbC8DiGCYOCdetSuJXqo1E4+JSXE8wsu7Ls2iUN+6g8EeH5c76e2/P6DRu0nsci1NnJqW3MhwYJoAIhIZvm0FqBbeR+tMKtfcV6Q6lU5ThXovD3UYQ0Ixff7duX3gBr8jHAQLCgfVBs8blFZokBKN4NbKCyCGAgSeVzJFrEAvycmn+OnDMIlcRbuFNgqsJMAsY88ojkisXsUIRCMZ0NDxFtS4ROIJ6Asmp/Lf8foK1KLASn994yuYfllbcVY/zV+MWutqlCC9T/DJ8jJ8l+ZnA7bJZ/9C9XQFuX3+ScQxVW2Iz1CsNh/CyFI7Q/i6pgGRFXxCcjxZINpt4iMEe/7+MKAaT9ok0LSK2wSWQmyBBz0ghdwwE8elRW0CZOtLZWCR2lIKnDi7bj3OFUgYCF0BIFcilN+tlnUN5rGUpT/oPe2sS0CWFtpNIOFNGxK38dHUJ5f6CxI+Gm9sGMl9w1ZYxE4Guqd6rcKLN4TqjxRbDvK71BWP4CiC0CPl4aFa4yEh7SBPG2TX2QI3kpXMu8/wSF/2LYsA25d8QloA4rIMJwZAZJAalQZKtcmnBxkCfllMAMoZJIdIbCTh00ykC2QKbLcxLZWuMFrKYXHThLLz7a3A00ZLI6fLJmyRRr9skg74dQOShdbrOac/hPt+KUCn4DAG/JbOwkDlVUotnp21av+O37dSFgrxGKlRM2NDzdiFBnpFVvRT+c/D/doE9ZQojGiPGlbw3U2klIKcR5PCPlZ4S/uv4XG/BcQjSatjYDqJWqgloqfAx7e+tmSYzF90m5m9MjokbGSBVUZqxHIEYHG7dvM2vrVObA7HlzxPeCOd6GqsRqBgRuB6gQcuLmrWr4TRKA6AXeCJFZdGLgRqE7AgZu7quU7QQSqE3AnSGLVhYEbgeoEHLi5q1q+E0SgOgF3giRWXRi4EahOwIGbu6rlO0EEqhNwJ0hi1YWBG4HqBBy4uatavhNEoOKPou0EMUl0YePmjebRpx4zi1e8bJasXGLWblxnuv3PVCeymNraWjNr2kxz6CGvN4e/4jB8CKqsn91IVlKFDugIVCdgjvQ9v+QFc8mNl+N7ostzUBQG8zf0lq1eLssNd/7GM0yeMNl89oOfMq8/+HUeVm3smhGoTsCMvF98wyXmr4+W9/XjDJFZXe5Nz7nyPIEPrh1sTvj4F82bX3dUFt1AA9xx/x/NvY/fX9Dsn37zHDNk8JCCdLsCQXUCuiy/sORFc+rPvmNfl9mBme/Eb81fdN3Fshz+ysPMSceeOGAH5+atm/GbHEsLRm9neI2ooJMpCaoXYRCop577l/nmT79d1uQbNnSYmThugpz3pYx9FtnDTzxifvPHm7PgVcDOG4HqHhC5vei6X6bO8Nvf8Dbzqfcda4bXDU/NQ8LVG9aYO+//P3P3Y/fI5/BD5hGQderxp5iD9z4oBFfbu0AEdvkJuASHTJsbNhdMNSfcb356HX6Ms7SDht2mzDBf/H/Hy8LJ+IOLz5SfUTv9hNPw2xXjC+qvEuycEdjlJ+CqdatSZfYdbzi65MmXqYCT8YofXpoJ7pU+f6Foc8MW09DUYIYNGSqTftSIUUXvwXvFuKpQs8tPwOmT092be+q5f5vj3vfJfjlktrc0mxv/eJPhOeTWxtJ+D3G/hfua9x71HvOaA15VlI/nXHmueexffyuK50Nf/WiM/tTPfUPulcaAu0hnl5+Ac3ebkyrVvLr3udO/aM75+o/MpPH4Zdx+UG6/5w/mmj9cb3i/sdzy7KL/Gi4svJh0zsln4+e37S9IlSu7yp87Arv8BOT9qE9/4Dhz9W3X5I6Sw2zYtMF85rTjpTdt0jRz9OFvNa876LVm+uRpBXkrSbBp6yZz4llfM03NTZUU62Vtwu2E47Gxee2Brzbf+YL9xWOPrDYqGoFdfgIymu9/83vNS3jEjIdwacu6+nXm17+/VpZMnmmTppoD9tzfLgv3x4+DjsskKbnf2tZqLr/5yl6bfKFhf/vPP8yZl55tTv/Sd0JwtV3BCNgPLAYCcZMUH18svSxa/nzJzH39WULeD+SAq8QhXa4gHLjnAeZDb/uAOXCvA3KRpIZzT3jR9b80/8L5aVjGjBpj3nPUu8whuK0xd7e58iu0xHOPyau+N/3pt/5wM+TL1T7rqz+QjUkSno/scY/JwqMIPuVTqHwVDxvwvqmWvebtucMO68v9LOHCOXur2SXV+CZrbM7FOpS4K09AjSgftr7g2l/IM5wK662aFz9O+/y3zMgR/Enn0sv6+vUyuXhInKZ0dXeZr59zCp5cWVaQ/P1veZ/59PuPLUjHI4Lb7r69IN2tF96EnwIfWpCuNwj62wSsHoImZHn+rPnmotPO9xhu5W+96zbzxLNPlvW0jBcYNHjh42Pf+KSZOXU3c8F3flbywJyKw14uaUvtoFrzwbe+3/z0V5GfuXjX4c2PaumdCFQnYIq47j1/r8TzoHXY6zyz6Fnz7OJnzdMvPotDsU0ppCWTrFq/2nz4pI+Zc0/5sdlz7sJkohTQ9bhQxL0h7/3xAQMedvJeYHs7ls4O1G2mBeeR27Y3msXLFqeQaD8dn4qwSlR0BKoTsOiQRQy82MLlLa9/UwR0LR7iPfavx80f7r3TLEo70HH6/YOLzzLX/uRXhm9JFCrNrc3m2j/cYP7y8F0F300sJKuK75sIFM5y39g14LXyEI8v4XJhuffx+8yFeOuhUOEe6477/mg+gPOuXIUXOr5x3rfMFuzlqmVgR6A6AXdQ/t6E9/14KHjpTVcU1MiXeHOVB//5kPnZ1RfkQlfhAywC1QmYkLC/PPxXc/A+B1X8SZDdpu2WoC0blOsGOx/iTjv5XnvQa/Dg9+fzPuj9r+f/bb7/ix9mG1CF7LAIVCegC/Wy1cvwlvpPzRoMci1jR481Pzjxe2b+zHkKKqu+9S+3peKfNX1WIt0zuNCTpnzpo583b8fD49XS/yOwS09AHhJehkPCe3B+llQaGhvMSWefLKiJ4yaaY997jDw0XMw9rDZcdfzjA38y19x+XZKKRNjbDn1LIpwXXdKU0bgRn6bwAe6+KH9+6C7z3je9uy9U9zudu/QEfP7lF8z9/3gwVVJ4i+H8ay6SJZOhblid4dMn25u3m+0t2zPRRfV58SXX19Neud8hiY++ZSq45MZLTdLTJd093fLmwu/++nvzMh69q3SZN3NuKpFX/e5qw0XLN/E2xGH4ctyuWHbpCcjHwX7/i1vMLzFg73rk7pLzz+czuZRb+LoTb47nKrOnz5bJuWbD2lwkAm/ChkAfGs9LWGHkvnvsW2GJO7+40l7v3sni8uWPf8ncfvGt5qPv+Ijh7YMdXXbHkzc3//yGvJNPbbrsjF+aBXP20G6/qvma1pc+9oV+ZVN/N2aX3gOGyeGnJj7+ro/KwvO2X932a9krFvr4biijmDa/A8PXoN522FuLYRPan516ruFh5PV33ljyg+PvPvKd8kD4WZf+uGj9+RjefvjbcOV1Aq7Wnl+Ro4J8unYGXHUCJmSRT+p/6aNfkEXRvAXAe3BPPPOk2bil3mxr2pbqudBxo8eZ+bPmmd1nz5ePLu23oDKHaTxU5dLZ2Wlu/vMt5incUuDnNVpaW9RkX3Pjwg8+vfeod5uD9j7Qw3kbojcK36r/7fk3ytM5jNlSXGFetW612LcBDxH01katN3zpbZnVtyF6O8JV+f0qAv3tbYjqOWC/Gh5VY3a1CFQn4K6W8aq//SoC1QnYr9JRNWZXi0C/moDtne27Wvyr/u7gCPS3MdavJmBbBW5m7+B8VtUNsAj0tzGWNAHL+igTvjlTMn9TSyNe2WkbYCmtmjtQIsCxxTFWasHY7i6V1/Fl8SdNwPzPORWwALNvfQGSvOh19WWpzyu7ity1I1Du2MLY3lBmBLM+rpM0AaP3cUrQNqR28IoS2DxLa3uLWbku9wupnrDaqEagiAhwTHFslVPKHdvQnTW3kibgo+UYOXbkuLKPIVvamvFJwJerT0yUk4gqr0SAT91wLHFMlVsqMLaz5lbSBLyjHEMnjJt0OI6Vyz6O5NWql1a+iC+NbSzHnCrvLhwBjh2OoUpc+eSY5tguM5xZcyvrUTQqwMd5eRiZ/Fp2Cguamrc9uWbj6lekIE1NMn7MBDNp3BSDQKTmqRLuehHgh93rt24wW7bZr3VXKgIzJu/25KgRY8oZ0ysxdmdn2pM4muHEsSC8JpO4mP7ajaseaGxuPKIYnjS0tfhc38Sxk8zYUeOqkzFNwHYBGk66hqatZlNDPd4O6ay4x6NHjH5g+uSZR5Qp+DhMwGszZSROQBLBKX6ApKxH91etX/lgc2vTGzOVVrLPJ/1HDR+NT7uPMiPrRlXsRzQraWNVVuUiwHO67a1N+PpAk9xS6O03K0bUjXpw5tRZ5Y7hZzH59k+KQr4JOBMMy7EknScmyUqE1W/d+NDmhvo3JCKrwGoE+nEEJoyd9NCkcZPLHbvdcHEOJuCqJFdzTkASYy94DKrrkxiLgeEr0RuWrFrcBXnpfo62GOFV2moEKhwBTJa182cuqMXXESrxC6WfgLwbcpmYdwKSCZPmS6guySWgGHhD45bH129e97pieKq01QjsyAhMnTDt8bGjx1dqjJ6AyXdpPvsLTkAyYxJ+DdXP8wkqAteztn71g3gx8ogieKqk1Qj0agRGjxzzAH6fkud6qeZECmO+jslX8KenUivDJDwSSu9LoTg1SWtb8/Mr168YVz00TR2yKmEFI8BDzVlTZ2+tGzaivF/dzLbpKMi+PxucDUk9AcmKicIfQ+fV0YnsV7B042LNI1u21R+AK8rjKii3KqoagVgEcBt56/gxk57GxRX+ak5ZFxhjgm2Hv0+3HyZf1jOfCbQCKmoCqhBMxHPRPkX7la5x0aZ+w6a1zza2NO2FWc9JXy3VCJQWAUyG0cNHvTBl4vT9cFFlUmlCUnGdi4l3airKgKikCUh+d9j4GJpz2d8RBa+TLG3a3riqpa2lq72zbQR+y31it+kZaXrMSGzZRsGmkv3ZEfZXdVQmAhjoSLVpwtna9kGmZnttbe2moYOHNQ8fNrx21MjRM4cOGTavMppSSVkGqtfDppIevyx7wCISr4QBPN4dhaVaqhHYVSLQBEePxMR7ohyHyz4GpgFYRsOIV2GpPjldTjaqvAMhAhzjr+KYL3fy0dmyJ6BGzE1E3ricgeVxhVfragR2kgjwdGsGxvmUSkw8jUnFJqAKhHFrsfCYmIe378TCK0PVUo3AQIwAx+47OZZRDsVS0nlePscrPgFDZTD4T1gmYeFkPArL8yG+2q5GoB9GgGOU9/FYOHb/1Js2ln0RphTjcOFmGPg+g4WXbeeUIqPKU41AhSKwHHJ+guVXmGxlf82hWJv6ZAImGYlJybcv+PD3J7GU9RpUkvwqrBoBRIAPkfDlghsw2RLfTtjRUeo3EzCf45icvLCzF5Y93bIQ9WQsvPqqC2+DDAh/YGe1lBeBHrDzNgC/MagLr04uwvKiW17AJMv6CBJw/ar8f2Xr7zm93xB8AAAAAElFTkSuQmCC', + 'data:image/png;base64,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' +] + +const avatarList = [ + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '' +] + +const starList = [ + '', + '', + '', + '', + '', + '', + '', + '' +] + +const flagList = [ + '', + '', + '', + '', + '', + '', + '', + '' +] + +const weatherList = [ + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '' +] + +export default [ + { + name: '多彩标记图标', + type: 'sign2', + list: iconList.map((item, index) => { + return { + name: String(index + 1), + icon: item + } + }) + }, + { + name: '星期', + type: 'weekday', + list: weekdayList.map((item, index) => { + return { + name: String(index + 1), + icon: item + } + }) + }, + { + name: '头像', + type: 'avatar', + list: avatarList.map((item, index) => { + return { + name: String(index + 1), + icon: item + } + }) + }, + { + name: '五角星', + type: 'star', + list: starList.map((item, index) => { + return { + name: String(index + 1), + icon: item + } + }) + }, + { + name: '旗帜', + type: 'flag', + list: flagList.map((item, index) => { + return { + name: String(index + 1), + icon: item + } + }) + }, + { + name: '天气', + type: 'weather', + list: weatherList.map((item, index) => { + return { + name: String(index + 1), + icon: item + } + }) + } +] diff --git a/src/src/config/icons.js b/src/src/config/icons.js new file mode 100644 index 0000000..1caadce --- /dev/null +++ b/src/src/config/icons.js @@ -0,0 +1,5 @@ +export const obFileHyperlinkIcon = '' + +export const hyperlinkIcon = '' + +export const imgFail = `data:image/png;base64,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` diff --git a/src/src/config/image.js b/src/src/config/image.js new file mode 100644 index 0000000..4801e80 --- /dev/null +++ b/src/src/config/image.js @@ -0,0 +1,1327 @@ +import business_ from '../assets/svg/business/-.svg' +import business__1 from '../assets/svg/business/-_1.svg' +import business__10 from '../assets/svg/business/-_10.svg' +import business__11 from '../assets/svg/business/-_11.svg' +import business__12 from '../assets/svg/business/-_12.svg' +import business__13 from '../assets/svg/business/-_13.svg' +import business__14 from '../assets/svg/business/-_14.svg' +import business__15 from '../assets/svg/business/-_15.svg' +import business__16 from '../assets/svg/business/-_16.svg' +import business__17 from '../assets/svg/business/-_17.svg' +import business__18 from '../assets/svg/business/-_18.svg' +import business__2 from '../assets/svg/business/-_2.svg' +import business__3 from '../assets/svg/business/-_3.svg' +import business__4 from '../assets/svg/business/-_4.svg' +import business__5 from '../assets/svg/business/-_5.svg' +import business__6 from '../assets/svg/business/-_6.svg' +import business__7 from '../assets/svg/business/-_7.svg' +import business__8 from '../assets/svg/business/-_8.svg' +import business__9 from '../assets/svg/business/-_9.svg' +import business_OAxitong from '../assets/svg/business/OAxitong.svg' +import business_changyongziyuan from '../assets/svg/business/changyongziyuan.svg' +import business_chuchashenpi from '../assets/svg/business/chuchashenpi.svg' +import business_fanwendengji from '../assets/svg/business/fanwendengji.svg' +import business_feizhengshiwendengji from '../assets/svg/business/feizhengshiwendengji.svg' +import business_gongwenjiaohuan from '../assets/svg/business/gongwenjiaohuan.svg' +import business_gongzuohuibao from '../assets/svg/business/gongzuohuibao.svg' +import business_gudingzichan from '../assets/svg/business/gudingzichan.svg' +import business_huiyiguanli from '../assets/svg/business/huiyiguanli.svg' +import business_huiyiyuding from '../assets/svg/business/huiyiyuding.svg' +import business_kaoqinguanli from '../assets/svg/business/kaoqinguanli.svg' +import business_qingxiujiashenqing from '../assets/svg/business/qingxiujiashenqing.svg' +import business_sannianjihua from '../assets/svg/business/sannianjihua.svg' +import business_tongzhifabu from '../assets/svg/business/tongzhifabu.svg' +import business_xiangmuguanli from '../assets/svg/business/xiangmuguanli.svg' +import business_xinxitougao from '../assets/svg/business/xinxitougao.svg' +import business_zhishichanquan from '../assets/svg/business/zhishichanquan.svg' +import business_zhongxindongtaifabu from '../assets/svg/business/zhongxindongtaifabu.svg' +import business_zongheshenpi from '../assets/svg/business/zongheshenpi.svg' +import education_DNA from '../assets/svg/education/DNA.svg' +import education_a1shilibiao from '../assets/svg/education/a-1-shilibiao.svg' +import education_a10yiliaoxiang from '../assets/svg/education/a-10-yiliaoxiang.svg' +import education_a11yiyongweishengzhi from '../assets/svg/education/a-11-yiyongweishengzhi.svg' +import education_a12huxi from '../assets/svg/education/a-12-huxi.svg' +import education_a13xiguan from '../assets/svg/education/a-13-xiguan.svg' +import education_a14zhutingqi from '../assets/svg/education/a-14-zhutingqi.svg' +import education_a15bingdu from '../assets/svg/education/a-15-bingdu.svg' +import education_a16yiyuan from '../assets/svg/education/a-16-yiyuan.svg' +import education_a17zhusheqi from '../assets/svg/education/a-17-zhusheqi.svg' +import education_a18xiguan from '../assets/svg/education/a-18-xiguan.svg' +import education_a19guaizhang from '../assets/svg/education/a-19guaizhang.svg' +import education_a2kouzhao from '../assets/svg/education/a-2-kouzhao.svg' +import education_a20shuye from '../assets/svg/education/a-20-shuye.svg' +import education_a3chuangkoutie from '../assets/svg/education/a-3-chuangkoutie.svg' +import education_a4lunyi from '../assets/svg/education/a-4-lunyi.svg' +import education_a5mianqian from '../assets/svg/education/a-5-mianqian.svg' +import education_a6jiancebi from '../assets/svg/education/a-6-jiancebi.svg' +import education_a7xinzang from '../assets/svg/education/a-7-xinzang.svg' +import education_a8DNA from '../assets/svg/education/a-8-DNA.svg' +import education_a9tizhongcheng from '../assets/svg/education/a-9-tizhongcheng.svg' +import education_abitong1 from '../assets/svg/education/a-bitong1.svg' +import education_ashu2 from '../assets/svg/education/a-shu2.svg' +import education_ashu4 from '../assets/svg/education/a-shu4.svg' +import education_ashu5 from '../assets/svg/education/a-shu5.svg' +import education_ashuben2 from '../assets/svg/education/a-shuben2.svg' +import education_ashuben3 from '../assets/svg/education/a-shuben3.svg' +import education_ashuben4 from '../assets/svg/education/a-shuben4.svg' +import education_axueshimao1 from '../assets/svg/education/a-xueshimao1.svg' +import education_baichui from '../assets/svg/education/baichui.svg' +import education_bijiben from '../assets/svg/education/bijiben.svg' +import education_bitong from '../assets/svg/education/bitong.svg' +import education_chizi from '../assets/svg/education/chizi.svg' +import education_chongdian from '../assets/svg/education/chongdian.svg' +import education_citie from '../assets/svg/education/citie.svg' +import education_daima from '../assets/svg/education/daima.svg' +import education_deng from '../assets/svg/education/deng.svg' +import education_dianliushiyan from '../assets/svg/education/dianliushiyan.svg' +import education_diqiu from '../assets/svg/education/diqiu.svg' +import education_diqiuyi from '../assets/svg/education/diqiuyi.svg' +import education_fanyi from '../assets/svg/education/fanyi.svg' +import education_gongwenbao from '../assets/svg/education/gongwenbao.svg' +import education_heiban from '../assets/svg/education/heiban.svg' +import education_huiyi from '../assets/svg/education/huiyi.svg' +import education_jiangbei from '../assets/svg/education/jiangbei.svg' +import education_jiaoxuelou from '../assets/svg/education/jiaoxuelou.svg' +import education_jinpai from '../assets/svg/education/jinpai.svg' +import education_jisuan from '../assets/svg/education/jisuan.svg' +import education_jisuanqi from '../assets/svg/education/jisuanqi.svg' +import education_naozhong from '../assets/svg/education/naozhong.svg' +import education_qianbi from '../assets/svg/education/qianbi.svg' +import education_sepan from '../assets/svg/education/sepan.svg' +import education_shiyan from '../assets/svg/education/shiyan.svg' +import education_shouji from '../assets/svg/education/shouji.svg' +import education_shuben from '../assets/svg/education/shuben.svg' +import education_shuxie from '../assets/svg/education/shuxie.svg' +import education_sousuo from '../assets/svg/education/sousuo.svg' +import education_suanpan from '../assets/svg/education/suanpan.svg' +import education_tianping from '../assets/svg/education/tianping.svg' +import education_tingzhenqi from '../assets/svg/education/tingzhenqi.svg' +import education_tiyu from '../assets/svg/education/tiyu.svg' +import education_wenjian from '../assets/svg/education/wenjian.svg' +import education_xianweijing from '../assets/svg/education/xianweijing.svg' +import education_xiaoheiban from '../assets/svg/education/xiaoheiban.svg' +import education_xiezizhuo from '../assets/svg/education/xiezizhuo.svg' +import education_xueshimao from '../assets/svg/education/xueshimao.svg' +import education_yuanpan from '../assets/svg/education/yuanpan.svg' +import festival_celianggongju from '../assets/svg/festival/celianggongju.svg' +import festival_chunjie from '../assets/svg/festival/chunjie.svg' +import festival_duanwujie from '../assets/svg/festival/duanwujie.svg' +import festival_ertongjie from '../assets/svg/festival/ertongjie.svg' +import festival_fuqinjie from '../assets/svg/festival/fuqinjie.svg' +import festival_ganenjie from '../assets/svg/festival/ganenjie.svg' +import festival_gongju from '../assets/svg/festival/gongju.svg' +import festival_hushijie from '../assets/svg/festival/hushijie.svg' +import festival_jiaoshijie from '../assets/svg/festival/jiaoshijie.svg' +import festival_laodongjie from '../assets/svg/festival/laodongjie.svg' +import festival_muqinjie from '../assets/svg/festival/muqinjie.svg' +import festival_nvshengjie from '../assets/svg/festival/nvshengjie.svg' +import festival_qingrenjie from '../assets/svg/festival/qingrenjie.svg' +import festival_qixi from '../assets/svg/festival/qixi.svg' +import festival_shengdanjie from '../assets/svg/festival/shengdanjie.svg' +import festival_shuang from '../assets/svg/festival/shuang.svg' +import festival_yuandan from '../assets/svg/festival/yuandan.svg' +import festival_yuanxiaojie from '../assets/svg/festival/yuanxiaojie.svg' +import festival_zhongqiujie from '../assets/svg/festival/zhongqiujie.svg' +import festival_zhongyangjie from '../assets/svg/festival/zhongyangjie.svg' +import food_binggan from '../assets/svg/food/binggan.svg' +import food_binggun from '../assets/svg/food/binggun.svg' +import food_bingqilin from '../assets/svg/food/bingqilin.svg' +import food_boluo from '../assets/svg/food/boluo.svg' +import food_caomei from '../assets/svg/food/caomei.svg' +import food_celianggongju from '../assets/svg/food/celianggongju.svg' +import food_chengzi from '../assets/svg/food/chengzi.svg' +import food_dangao from '../assets/svg/food/dangao.svg' +import food_fanqiejiang from '../assets/svg/food/fanqiejiang.svg' +import food_gongju from '../assets/svg/food/gongju.svg' +import food_hanbao from '../assets/svg/food/hanbao.svg' +import food_jiandan from '../assets/svg/food/jiandan.svg' +import food_kafeibei from '../assets/svg/food/kafeibei.svg' +import food_lajiao from '../assets/svg/food/lajiao.svg' +import food_naixi from '../assets/svg/food/naixi.svg' +import food_niunai from '../assets/svg/food/niunai.svg' +import food_pingguo from '../assets/svg/food/pingguo.svg' +import food_pisa from '../assets/svg/food/pisa.svg' +import food_putao from '../assets/svg/food/putao.svg' +import food_quqi from '../assets/svg/food/quqi.svg' +import food_regou from '../assets/svg/food/regou.svg' +import food_shutiao from '../assets/svg/food/shutiao.svg' +import food_sudaqishui from '../assets/svg/food/sudaqishui.svg' +import food_taozi from '../assets/svg/food/taozi.svg' +import food_tiantianquan from '../assets/svg/food/tiantianquan.svg' +import food_xiangjiao from '../assets/svg/food/xiangjiao.svg' +import food_xigua from '../assets/svg/food/xigua.svg' +import food_xilanhua from '../assets/svg/food/xilanhua.svg' +import food_yingtao from '../assets/svg/food/yingtao.svg' +import food_yumi from '../assets/svg/food/yumi.svg' +import medicine_a1shilibiao from '../assets/svg/medicine/a-1-shilibiao.svg' +import medicine_a10yiliaoxiang from '../assets/svg/medicine/a-10-yiliaoxiang.svg' +import medicine_a11yiyongweishengzhi from '../assets/svg/medicine/a-11-yiyongweishengzhi.svg' +import medicine_a12huxi from '../assets/svg/medicine/a-12-huxi.svg' +import medicine_a13xiguan from '../assets/svg/medicine/a-13-xiguan.svg' +import medicine_a14zhutingqi from '../assets/svg/medicine/a-14-zhutingqi.svg' +import medicine_a15bingdu from '../assets/svg/medicine/a-15-bingdu.svg' +import medicine_a16yiyuan from '../assets/svg/medicine/a-16-yiyuan.svg' +import medicine_a17zhusheqi from '../assets/svg/medicine/a-17-zhusheqi.svg' +import medicine_a18xiguan from '../assets/svg/medicine/a-18-xiguan.svg' +import medicine_a19guaizhang from '../assets/svg/medicine/a-19guaizhang.svg' +import medicine_a2kouzhao from '../assets/svg/medicine/a-2-kouzhao.svg' +import medicine_a20shuye from '../assets/svg/medicine/a-20-shuye.svg' +import medicine_a3chuangkoutie from '../assets/svg/medicine/a-3-chuangkoutie.svg' +import medicine_a4lunyi from '../assets/svg/medicine/a-4-lunyi.svg' +import medicine_a5mianqian from '../assets/svg/medicine/a-5-mianqian.svg' +import medicine_a6jiancebi from '../assets/svg/medicine/a-6-jiancebi.svg' +import medicine_a7xinzang from '../assets/svg/medicine/a-7-xinzang.svg' +import medicine_a8DNA from '../assets/svg/medicine/a-8-DNA.svg' +import medicine_a9tizhongcheng from '../assets/svg/medicine/a-9-tizhongcheng.svg' +import tools_gaizhui from '../assets/svg/tools/gaizhui.svg' +import tools_ziyuan from '../assets/svg/tools/ziyuan.svg' +import tools_ziyuan_1 from '../assets/svg/tools/ziyuan_1.svg' +import tools_ziyuan_10 from '../assets/svg/tools/ziyuan_10.svg' +import tools_ziyuan_11 from '../assets/svg/tools/ziyuan_11.svg' +import tools_ziyuan_12 from '../assets/svg/tools/ziyuan_12.svg' +import tools_ziyuan_13 from '../assets/svg/tools/ziyuan_13.svg' +import tools_ziyuan_14 from '../assets/svg/tools/ziyuan_14.svg' +import tools_ziyuan_15 from '../assets/svg/tools/ziyuan_15.svg' +import tools_ziyuan_16 from '../assets/svg/tools/ziyuan_16.svg' +import tools_ziyuan_17 from '../assets/svg/tools/ziyuan_17.svg' +import tools_ziyuan_18 from '../assets/svg/tools/ziyuan_18.svg' +import tools_ziyuan_2 from '../assets/svg/tools/ziyuan_2.svg' +import tools_ziyuan_3 from '../assets/svg/tools/ziyuan_3.svg' +import tools_ziyuan_4 from '../assets/svg/tools/ziyuan_4.svg' +import tools_ziyuan_5 from '../assets/svg/tools/ziyuan_5.svg' +import tools_ziyuan_6 from '../assets/svg/tools/ziyuan_6.svg' +import tools_ziyuan_7 from '../assets/svg/tools/ziyuan_7.svg' +import tools_ziyuan_8 from '../assets/svg/tools/ziyuan_8.svg' +import tools_ziyuan_9 from '../assets/svg/tools/ziyuan_9.svg' +import travel_banshouli from '../assets/svg/travel/banshouli.svg' +import travel_chuhangshijian from '../assets/svg/travel/chuhangshijian.svg' +import travel_ditu from '../assets/svg/travel/ditu.svg' +import travel_fengjing from '../assets/svg/travel/fengjing.svg' +import travel_gonglve from '../assets/svg/travel/gonglve.svg' +import travel_hangli from '../assets/svg/travel/hangli.svg' +import travel_huafei from '../assets/svg/travel/huafei.svg' +import travel_jipiao from '../assets/svg/travel/jipiao.svg' +import travel_jiudian from '../assets/svg/travel/jiudian.svg' +import travel_lvban from '../assets/svg/travel/lvban.svg' +import travel_meishi from '../assets/svg/travel/meishi.svg' +import travel_menpiao from '../assets/svg/travel/menpiao.svg' +import travel_paishe from '../assets/svg/travel/paishe.svg' +import travel_qianzheng from '../assets/svg/travel/qianzheng.svg' +import travel_shangdian from '../assets/svg/travel/shangdian.svg' +import travel_tianqi from '../assets/svg/travel/tianqi.svg' +import travel_youlechangsuo from '../assets/svg/travel/youlechangsuo.svg' +import travel_yuyanfanyi from '../assets/svg/travel/yuyanfanyi.svg' +import travel_zhuyishixiang from '../assets/svg/travel/zhuyishixiang.svg' +import travel_zuche from '../assets/svg/travel/zuche.svg' +export default [ + { + "name": "商务", + "list": [ + { + "url": business_, + "width": 100, + "height": 100 + }, + { + "url": business__1, + "width": 100, + "height": 100 + }, + { + "url": business__10, + "width": 100, + "height": 100 + }, + { + "url": business__11, + "width": 100, + "height": 100 + }, + { + "url": business__12, + "width": 100, + "height": 100 + }, + { + "url": business__13, + "width": 100, + "height": 100 + }, + { + "url": business__14, + "width": 100, + "height": 100 + }, + { + "url": business__15, + "width": 100, + "height": 100 + }, + { + "url": business__16, + "width": 100, + "height": 100 + }, + { + "url": business__17, + "width": 100, + "height": 100 + }, + { + "url": business__18, + "width": 100, + "height": 100 + }, + { + "url": business__2, + "width": 100, + "height": 100 + }, + { + "url": business__3, + "width": 100, + "height": 100 + }, + { + "url": business__4, + "width": 100, + "height": 100 + }, + { + "url": business__5, + "width": 100, + "height": 100 + }, + { + "url": business__6, + "width": 100, + "height": 100 + }, + { + "url": business__7, + "width": 100, + "height": 100 + }, + { + "url": business__8, + "width": 100, + "height": 100 + }, + { + "url": business__9, + "width": 100, + "height": 100 + }, + { + "url": business_OAxitong, + "width": 100, + "height": 100 + }, + { + "url": business_changyongziyuan, + "width": 100, + "height": 100 + }, + { + "url": business_chuchashenpi, + "width": 100, + "height": 100 + }, + { + "url": business_fanwendengji, + "width": 100, + "height": 100 + }, + { + "url": business_feizhengshiwendengji, + "width": 100, + "height": 100 + }, + { + "url": business_gongwenjiaohuan, + "width": 100, + "height": 100 + }, + { + "url": business_gongzuohuibao, + "width": 100, + "height": 100 + }, + { + "url": business_gudingzichan, + "width": 100, + "height": 100 + }, + { + "url": business_huiyiguanli, + "width": 100, + "height": 100 + }, + { + "url": business_huiyiyuding, + "width": 100, + "height": 100 + }, + { + "url": business_kaoqinguanli, + "width": 100, + "height": 100 + }, + { + "url": business_qingxiujiashenqing, + "width": 100, + "height": 100 + }, + { + "url": business_sannianjihua, + "width": 100, + "height": 100 + }, + { + "url": business_tongzhifabu, + "width": 100, + "height": 100 + }, + { + "url": business_xiangmuguanli, + "width": 100, + "height": 100 + }, + { + "url": business_xinxitougao, + "width": 100, + "height": 100 + }, + { + "url": business_zhishichanquan, + "width": 100, + "height": 100 + }, + { + "url": business_zhongxindongtaifabu, + "width": 100, + "height": 100 + }, + { + "url": business_zongheshenpi, + "width": 100, + "height": 100 + } + ] + }, + { + "name": "教育", + "list": [ + { + "url": education_DNA, + "width": 100, + "height": 100 + }, + { + "url": education_a1shilibiao, + "width": 100, + "height": 100 + }, + { + "url": education_a10yiliaoxiang, + "width": 100, + "height": 100 + }, + { + "url": education_a11yiyongweishengzhi, + "width": 100, + "height": 100 + }, + { + "url": education_a12huxi, + "width": 100, + "height": 100 + }, + { + "url": education_a13xiguan, + "width": 100, + "height": 100 + }, + { + "url": education_a14zhutingqi, + "width": 100, + "height": 100 + }, + { + "url": education_a15bingdu, + "width": 100, + "height": 100 + }, + { + "url": education_a16yiyuan, + "width": 100, + "height": 100 + }, + { + "url": education_a17zhusheqi, + "width": 100, + "height": 100 + }, + { + "url": education_a18xiguan, + "width": 100, + "height": 100 + }, + { + "url": education_a19guaizhang, + "width": 100, + "height": 100 + }, + { + "url": education_a2kouzhao, + "width": 100, + "height": 100 + }, + { + "url": education_a20shuye, + "width": 100, + "height": 100 + }, + { + "url": education_a3chuangkoutie, + "width": 100, + "height": 100 + }, + { + "url": education_a4lunyi, + "width": 100, + "height": 100 + }, + { + "url": education_a5mianqian, + "width": 100, + "height": 100 + }, + { + "url": education_a6jiancebi, + "width": 100, + "height": 100 + }, + { + "url": education_a7xinzang, + "width": 100, + "height": 100 + }, + { + "url": education_a8DNA, + "width": 100, + "height": 100 + }, + { + "url": education_a9tizhongcheng, + "width": 100, + "height": 100 + }, + { + "url": education_abitong1, + "width": 100, + "height": 100 + }, + { + "url": education_ashu2, + "width": 100, + "height": 100 + }, + { + "url": education_ashu4, + "width": 100, + "height": 100 + }, + { + "url": education_ashu5, + "width": 100, + "height": 100 + }, + { + "url": education_ashuben2, + "width": 100, + "height": 100 + }, + { + "url": education_ashuben3, + "width": 100, + "height": 100 + }, + { + "url": education_ashuben4, + "width": 100, + "height": 100 + }, + { + "url": education_axueshimao1, + "width": 100, + "height": 100 + }, + { + "url": education_baichui, + "width": 100, + "height": 100 + }, + { + "url": education_bijiben, + "width": 100, + "height": 100 + }, + { + "url": education_bitong, + "width": 100, + "height": 100 + }, + { + "url": education_chizi, + "width": 100, + "height": 100 + }, + { + "url": education_chongdian, + "width": 100, + "height": 100 + }, + { + "url": education_citie, + "width": 100, + "height": 100 + }, + { + "url": education_daima, + "width": 100, + "height": 100 + }, + { + "url": education_deng, + "width": 100, + "height": 100 + }, + { + "url": education_dianliushiyan, + "width": 100, + "height": 100 + }, + { + "url": education_diqiu, + "width": 100, + "height": 100 + }, + { + "url": education_diqiuyi, + "width": 100, + "height": 100 + }, + { + "url": education_fanyi, + "width": 100, + "height": 100 + }, + { + "url": education_gongwenbao, + "width": 100, + "height": 100 + }, + { + "url": education_heiban, + "width": 100, + "height": 100 + }, + { + "url": education_huiyi, + "width": 100, + "height": 100 + }, + { + "url": education_jiangbei, + "width": 100, + "height": 100 + }, + { + "url": education_jiaoxuelou, + "width": 100, + "height": 100 + }, + { + "url": education_jinpai, + "width": 100, + "height": 100 + }, + { + "url": education_jisuan, + "width": 100, + "height": 100 + }, + { + "url": education_jisuanqi, + "width": 100, + "height": 100 + }, + { + "url": education_naozhong, + "width": 100, + "height": 100 + }, + { + "url": education_qianbi, + "width": 100, + "height": 100 + }, + { + "url": education_sepan, + "width": 100, + "height": 100 + }, + { + "url": education_shiyan, + "width": 100, + "height": 100 + }, + { + "url": education_shouji, + "width": 100, + "height": 100 + }, + { + "url": education_shuben, + "width": 100, + "height": 100 + }, + { + "url": education_shuxie, + "width": 100, + "height": 100 + }, + { + "url": education_sousuo, + "width": 100, + "height": 100 + }, + { + "url": education_suanpan, + "width": 100, + "height": 100 + }, + { + "url": education_tianping, + "width": 100, + "height": 100 + }, + { + "url": education_tingzhenqi, + "width": 100, + "height": 100 + }, + { + "url": education_tiyu, + "width": 100, + "height": 100 + }, + { + "url": education_wenjian, + "width": 100, + "height": 100 + }, + { + "url": education_xianweijing, + "width": 100, + "height": 100 + }, + { + "url": education_xiaoheiban, + "width": 100, + "height": 100 + }, + { + "url": education_xiezizhuo, + "width": 100, + "height": 100 + }, + { + "url": education_xueshimao, + "width": 100, + "height": 100 + }, + { + "url": education_yuanpan, + "width": 100, + "height": 100 + } + ] + }, + { + "name": "节日", + "list": [ + { + "url": festival_celianggongju, + "width": 100, + "height": 100 + }, + { + "url": festival_chunjie, + "width": 100, + "height": 100 + }, + { + "url": festival_duanwujie, + "width": 100, + "height": 100 + }, + { + "url": festival_ertongjie, + "width": 100, + "height": 100 + }, + { + "url": festival_fuqinjie, + "width": 100, + "height": 100 + }, + { + "url": festival_ganenjie, + "width": 100, + "height": 100 + }, + { + "url": festival_gongju, + "width": 100, + "height": 100 + }, + { + "url": festival_hushijie, + "width": 100, + "height": 100 + }, + { + "url": festival_jiaoshijie, + "width": 100, + "height": 100 + }, + { + "url": festival_laodongjie, + "width": 100, + "height": 100 + }, + { + "url": festival_muqinjie, + "width": 100, + "height": 100 + }, + { + "url": festival_nvshengjie, + "width": 100, + "height": 100 + }, + { + "url": festival_qingrenjie, + "width": 100, + "height": 100 + }, + { + "url": festival_qixi, + "width": 100, + "height": 100 + }, + { + "url": festival_shengdanjie, + "width": 100, + "height": 100 + }, + { + "url": festival_shuang, + "width": 100, + "height": 100 + }, + { + "url": festival_yuandan, + "width": 100, + "height": 100 + }, + { + "url": festival_yuanxiaojie, + "width": 100, + "height": 100 + }, + { + "url": festival_zhongqiujie, + "width": 100, + "height": 100 + }, + { + "url": festival_zhongyangjie, + "width": 100, + "height": 100 + } + ] + }, + { + "name": "食物", + "list": [ + { + "url": food_binggan, + "width": 100, + "height": 100 + }, + { + "url": food_binggun, + "width": 100, + "height": 100 + }, + { + "url": food_bingqilin, + "width": 100, + "height": 100 + }, + { + "url": food_boluo, + "width": 100, + "height": 100 + }, + { + "url": food_caomei, + "width": 100, + "height": 100 + }, + { + "url": food_celianggongju, + "width": 100, + "height": 100 + }, + { + "url": food_chengzi, + "width": 100, + "height": 100 + }, + { + "url": food_dangao, + "width": 100, + "height": 100 + }, + { + "url": food_fanqiejiang, + "width": 100, + "height": 100 + }, + { + "url": food_gongju, + "width": 100, + "height": 100 + }, + { + "url": food_hanbao, + "width": 100, + "height": 100 + }, + { + "url": food_jiandan, + "width": 100, + "height": 100 + }, + { + "url": food_kafeibei, + "width": 100, + "height": 100 + }, + { + "url": food_lajiao, + "width": 100, + "height": 100 + }, + { + "url": food_naixi, + "width": 100, + "height": 100 + }, + { + "url": food_niunai, + "width": 100, + "height": 100 + }, + { + "url": food_pingguo, + "width": 100, + "height": 100 + }, + { + "url": food_pisa, + "width": 100, + "height": 100 + }, + { + "url": food_putao, + "width": 100, + "height": 100 + }, + { + "url": food_quqi, + "width": 100, + "height": 100 + }, + { + "url": food_regou, + "width": 100, + "height": 100 + }, + { + "url": food_shutiao, + "width": 100, + "height": 100 + }, + { + "url": food_sudaqishui, + "width": 100, + "height": 100 + }, + { + "url": food_taozi, + "width": 100, + "height": 100 + }, + { + "url": food_tiantianquan, + "width": 100, + "height": 100 + }, + { + "url": food_xiangjiao, + "width": 100, + "height": 100 + }, + { + "url": food_xigua, + "width": 100, + "height": 100 + }, + { + "url": food_xilanhua, + "width": 100, + "height": 100 + }, + { + "url": food_yingtao, + "width": 100, + "height": 100 + }, + { + "url": food_yumi, + "width": 100, + "height": 100 + } + ] + }, + { + "name": "医疗", + "list": [ + { + "url": medicine_a1shilibiao, + "width": 100, + "height": 100 + }, + { + "url": medicine_a10yiliaoxiang, + "width": 100, + "height": 100 + }, + { + "url": medicine_a11yiyongweishengzhi, + "width": 100, + "height": 100 + }, + { + "url": medicine_a12huxi, + "width": 100, + "height": 100 + }, + { + "url": medicine_a13xiguan, + "width": 100, + "height": 100 + }, + { + "url": medicine_a14zhutingqi, + "width": 100, + "height": 100 + }, + { + "url": medicine_a15bingdu, + "width": 100, + "height": 100 + }, + { + "url": medicine_a16yiyuan, + "width": 100, + "height": 100 + }, + { + "url": medicine_a17zhusheqi, + "width": 100, + "height": 100 + }, + { + "url": medicine_a18xiguan, + "width": 100, + "height": 100 + }, + { + "url": medicine_a19guaizhang, + "width": 100, + "height": 100 + }, + { + "url": medicine_a2kouzhao, + "width": 100, + "height": 100 + }, + { + "url": medicine_a20shuye, + "width": 100, + "height": 100 + }, + { + "url": medicine_a3chuangkoutie, + "width": 100, + "height": 100 + }, + { + "url": medicine_a4lunyi, + "width": 100, + "height": 100 + }, + { + "url": medicine_a5mianqian, + "width": 100, + "height": 100 + }, + { + "url": medicine_a6jiancebi, + "width": 100, + "height": 100 + }, + { + "url": medicine_a7xinzang, + "width": 100, + "height": 100 + }, + { + "url": medicine_a8DNA, + "width": 100, + "height": 100 + }, + { + "url": medicine_a9tizhongcheng, + "width": 100, + "height": 100 + } + ] + }, + { + "name": "工具", + "list": [ + { + "url": tools_gaizhui, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_1, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_10, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_11, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_12, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_13, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_14, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_15, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_16, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_17, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_18, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_2, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_3, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_4, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_5, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_6, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_7, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_8, + "width": 100, + "height": 100 + }, + { + "url": tools_ziyuan_9, + "width": 100, + "height": 100 + } + ] + }, + { + "name": "旅行", + "list": [ + { + "url": travel_banshouli, + "width": 100, + "height": 100 + }, + { + "url": travel_chuhangshijian, + "width": 100, + "height": 100 + }, + { + "url": travel_ditu, + "width": 100, + "height": 100 + }, + { + "url": travel_fengjing, + "width": 100, + "height": 100 + }, + { + "url": travel_gonglve, + "width": 100, + "height": 100 + }, + { + "url": travel_hangli, + "width": 100, + "height": 100 + }, + { + "url": travel_huafei, + "width": 100, + "height": 100 + }, + { + "url": travel_jipiao, + "width": 100, + "height": 100 + }, + { + "url": travel_jiudian, + "width": 100, + "height": 100 + }, + { + "url": travel_lvban, + "width": 100, + "height": 100 + }, + { + "url": travel_meishi, + "width": 100, + "height": 100 + }, + { + "url": travel_menpiao, + "width": 100, + "height": 100 + }, + { + "url": travel_paishe, + "width": 100, + "height": 100 + }, + { + "url": travel_qianzheng, + "width": 100, + "height": 100 + }, + { + "url": travel_shangdian, + "width": 100, + "height": 100 + }, + { + "url": travel_tianqi, + "width": 100, + "height": 100 + }, + { + "url": travel_youlechangsuo, + "width": 100, + "height": 100 + }, + { + "url": travel_yuyanfanyi, + "width": 100, + "height": 100 + }, + { + "url": travel_zhuyishixiang, + "width": 100, + "height": 100 + }, + { + "url": travel_zuche, + "width": 100, + "height": 100 + } + ] + } +] diff --git a/src/src/config/index.js b/src/src/config/index.js new file mode 100644 index 0000000..760e37e --- /dev/null +++ b/src/src/config/index.js @@ -0,0 +1,223 @@ +import { + fontSizeList, + colorList, + borderWidthList, + borderRadiusList, + lineWidthList, + lineHeightList, + store, + langList, + shapeListMap, + lineStyleMap, + iconNameMap as iconNameMapZh, + fontFamilyList as fontFamilyListZh, + borderDasharrayList as borderDasharrayListZh, + lineStyleList as lineStyleListZh, + rootLineKeepSameInCurveList as rootLineKeepSameInCurveListZh, + rootLineKeepSameInCurveList2 as rootLineKeepSameInCurveList2Zh, + backgroundRepeatList as backgroundRepeatListZh, + backgroundPositionList as backgroundPositionListZh, + shortcutKeyList as shortcutKeyListZh, + shapeList as shapeListZh, + sidebarTriggerList as sidebarTriggerListZh, + backgroundSizeList as backgroundSizeListZh, + downTypeList as downTypeListZh, + linearGradientDirList as linearGradientDirListZh, + alignList as alignListZh, + layoutGroupList as layoutGroupListZh, +} from './zh' +import { + fontFamilyList as fontFamilyListEn, + borderDasharrayList as borderDasharrayListEn, + lineStyleList as lineStyleListEn, + rootLineKeepSameInCurveList as rootLineKeepSameInCurveListEn, + rootLineKeepSameInCurveList2 as rootLineKeepSameInCurveList2En, + backgroundRepeatList as backgroundRepeatListEn, + backgroundPositionList as backgroundPositionListEn, + shortcutKeyList as shortcutKeyListEn, + shapeList as shapeListEn, + sidebarTriggerList as sidebarTriggerListEn, + backgroundSizeList as backgroundSizeListEn, + downTypeList as downTypeListEn, + linearGradientDirList as linearGradientDirListEn, + alignList as alignListEn, + layoutGroupList as layoutGroupListEn, + iconNameMap as iconNameMapEn +} from './en' +import { + fontFamilyList as fontFamilyListZhtw, + borderDasharrayList as borderDasharrayListZhtw, + lineStyleList as lineStyleListZhtw, + rootLineKeepSameInCurveList as rootLineKeepSameInCurveListZhtw, + rootLineKeepSameInCurveList2 as rootLineKeepSameInCurveList2Zhtw, + backgroundRepeatList as backgroundRepeatListZhtw, + backgroundPositionList as backgroundPositionListZhtw, + shortcutKeyList as shortcutKeyListZhtw, + shapeList as shapeListZhtw, + sidebarTriggerList as sidebarTriggerListZhtw, + backgroundSizeList as backgroundSizeListZhtw, + downTypeList as downTypeListZhtw, + linearGradientDirList as linearGradientDirListZhtw, + alignList as alignListZhtw, + layoutGroupList as layoutGroupListZhtw, + iconNameMap as iconNameMapZhtw +} from './zhtw' +import { + fontFamilyList as fontFamilyListVi, + borderDasharrayList as borderDasharrayListVi, + lineStyleList as lineStyleListVi, + rootLineKeepSameInCurveList as rootLineKeepSameInCurveListVi, + rootLineKeepSameInCurveList2 as rootLineKeepSameInCurveList2Vi, + backgroundRepeatList as backgroundRepeatListVi, + backgroundPositionList as backgroundPositionListVi, + shortcutKeyList as shortcutKeyListVi, + shapeList as shapeListVi, + sidebarTriggerList as sidebarTriggerListVi, + backgroundSizeList as backgroundSizeListVi, + downTypeList as downTypeListVi, + linearGradientDirList as linearGradientDirListVi, + alignList as alignListVi, + layoutGroupList as layoutGroupListVi, + iconNameMap as iconNameMapVi +} from './vi' + +const fontFamilyList = { + zh: fontFamilyListZh, + en: fontFamilyListEn, + zhtw: fontFamilyListZhtw, + vi: fontFamilyListVi +} + +const borderDasharrayList = { + zh: borderDasharrayListZh, + en: borderDasharrayListEn, + zhtw: borderDasharrayListZhtw, + vi: borderDasharrayListVi +} + +const lineStyleList = { + zh: lineStyleListZh, + en: lineStyleListEn, + zhtw: lineStyleListZhtw, + vi: lineStyleListVi +} + +const rootLineKeepSameInCurveList = { + zh: rootLineKeepSameInCurveListZh, + en: rootLineKeepSameInCurveListEn, + zhtw: rootLineKeepSameInCurveListZhtw, + vi: rootLineKeepSameInCurveListVi +} + +const rootLineKeepSameInCurveList2 = { + zh: rootLineKeepSameInCurveList2Zh, + en: rootLineKeepSameInCurveList2En, + zhtw: rootLineKeepSameInCurveList2Zhtw, + vi: rootLineKeepSameInCurveList2Vi +} + +const backgroundRepeatList = { + zh: backgroundRepeatListZh, + en: backgroundRepeatListEn, + zhtw: backgroundRepeatListZhtw, + vi: backgroundRepeatListVi +} + +const backgroundPositionList = { + zh: backgroundPositionListZh, + en: backgroundPositionListEn, + zhtw: backgroundPositionListZhtw, + vi: backgroundPositionListVi +} + +const backgroundSizeList = { + zh: backgroundSizeListZh, + en: backgroundSizeListEn, + zhtw: backgroundSizeListZhtw, + vi: backgroundSizeListVi +} + +const shortcutKeyList = { + zh: shortcutKeyListZh, + en: shortcutKeyListEn, + zhtw: shortcutKeyListZhtw, + vi: shortcutKeyListVi +} + +const shapeList = { + zh: shapeListZh, + en: shapeListEn, + zhtw: shapeListZhtw, + vi: shapeListVi +} + +const sidebarTriggerList = { + zh: sidebarTriggerListZh, + en: sidebarTriggerListEn, + zhtw: sidebarTriggerListZhtw, + vi: sidebarTriggerListVi +} + +const downTypeList = { + zh: downTypeListZh, + en: downTypeListEn, + zhtw: downTypeListZhtw, + vi: downTypeListVi +} + +const linearGradientDirList = { + zh: linearGradientDirListZh, + en: linearGradientDirListEn, + zhtw: linearGradientDirListZhtw, + vi: linearGradientDirListVi +} + +const alignList = { + zh: alignListZh, + en: alignListEn, + zhtw: alignListZhtw, + vi: alignListVi +} + +const layoutGroupList = { + zh: layoutGroupListZh, + en: layoutGroupListEn, + zhtw: layoutGroupListZhtw, + vi: layoutGroupListVi +} + +const iconNameMap = { + zh: iconNameMapZh, + en: iconNameMapEn, + zhtw: iconNameMapZhtw, + vi: iconNameMapVi +} + +export { + fontSizeList, + borderWidthList, + borderRadiusList, + lineWidthList, + lineHeightList, + store, + colorList, + langList, + fontFamilyList, + borderDasharrayList, + lineStyleList, + lineStyleMap, + rootLineKeepSameInCurveList, + rootLineKeepSameInCurveList2, + backgroundRepeatList, + backgroundPositionList, + backgroundSizeList, + shortcutKeyList, + shapeList, + shapeListMap, + sidebarTriggerList, + downTypeList, + linearGradientDirList, + alignList, + layoutGroupList, + iconNameMap +} diff --git a/src/src/config/vi.js b/src/src/config/vi.js new file mode 100644 index 0000000..ebc66b5 --- /dev/null +++ b/src/src/config/vi.js @@ -0,0 +1,698 @@ +import { checkIsMac } from '@/utils/index.js' + +export const fontFamilyList = [ + { + name: 'Song Thân', + value: '宋体, SimSun, Songti SC' + }, + { + name: 'Microsoft và Yahoo', + value: '微软雅黑, Microsoft YaHei' + }, + { + name: 'Chữ Khải', + value: '楷体, 楷体_GB2312, SimKai, STKaiti' + }, + { + name: 'Da đen', + value: '黑体, SimHei, Heiti SC' + }, + { + name: 'Lệ Thư', + value: '隶书, SimLi' + }, + { + name: 'Andale Mono', + value: 'andale mono' + }, + { + name: 'Arial', + value: 'arial, helvetica, sans-serif' + }, + { + name: 'arialBlack', + value: 'arial black, avant garde' + }, + { + name: 'Comic Sans Ms', + value: 'comic sans ms' + }, + { + name: 'Impact', + value: 'impact, chicago' + }, + { + name: 'Times New Roman', + value: 'times new roman' + }, + { + name: 'Sans-Serif', + value: 'sans-serif' + }, + { + name: 'serif', + value: 'serif' + } +] + +export const borderDasharrayList = [ + { + name: 'Dòng rắn', + value: 'none' + }, + { + name: 'Đường chấm 1', + value: '5,5' + }, + { + name: 'Đường chấm 2', + value: '10,10' + }, + { + name: 'Đường chấm 3', + value: '20,10,5,5,5,10' + }, + { + name: 'Đường chấm 4', + value: '5,5,1,5' + }, + { + name: 'Đường chấm 5', + value: '15,10,5,10,15' + }, + { + name: 'Đường chấm 6', + value: '1,5' + }, + { + name: 'Đường chấm 7', + value: '6,4' + } +] + +export const lineStyleList = [ + { + name: 'Đường thẳng', + value: 'straight' + }, + { + name: 'Đường cong', + value: 'curve' + }, + { + name: 'Đường cong2', + value: 'curve2' + }, + { + name: 'Trực tiếp', + value: 'direct' + } +] + +export const rootLineKeepSameInCurveList = [ + { + name: 'ngoặc đơn', + value: false + }, + { + name: 'ngoặc nhọn', + value: true + } +] + +export const rootLineKeepSameInCurveList2 = [ + { + name: 'ngoặc đơn', + value: true + }, + { + name: 'ngoặc nhọn', + value: false + } +] + +export const backgroundRepeatList = [ + { + name: 'Không lặp lại', + value: 'no-repeat' + }, + { + name: 'Lặp lại', + value: 'repeat' + }, + { + name: 'Lặp lại hướng ngang', + value: 'repeat-x' + }, + { + name: 'Lặp lại theo chiều dọc', + value: 'repeat-y' + } +] + +export const backgroundPositionList = [ + { + name: 'Mặc định', + value: '0% 0%' + }, + { + name: 'Trái trên', + value: 'left top' + }, + { + name: 'Trái giữa', + value: 'left center' + }, + { + name: 'Trái dưới', + value: 'left bottom' + }, + { + name: 'Phải trên', + value: 'right top' + }, + { + name: 'Phải giữa', + value: 'right center' + }, + { + name: 'Dưới bên phải', + value: 'right bottom' + }, + { + name: 'Giữa trên', + value: 'center top' + }, + { + name: 'Ở giữa', + value: 'center center' + }, + { + name: 'Dưới', + value: 'center bottom' + } +] + +export const backgroundSizeList = [ + { + name: 'Tự động', + value: 'auto' + }, + { + name: 'Ghi đè', + value: 'cover' + }, + { + name: 'Giữ', + value: 'contain' + } +] + +export const store = { + sidebarZIndex: 1 +} +const isMac = checkIsMac() +const ctrl = isMac ? '⌘' : 'Ctrl' +const enter = isMac ? 'Return' : 'Enter' +const macFn = isMac ? 'fn + ' : '' + +export const shortcutKeyList = [ + { + type: 'Obsidian đặc biệt', + list: [ + { + icon: 'iconbaocun', + name: 'Lưu và cập nhật dữ liệu hình ảnh', + value: `${ctrl} + Shfit + S` + }, + { + icon: 'iconxinbiaoqianyedakai', + name: 'Trang nhãn mới Mở siêu kết nối', + value: `${ctrl} + Trái` + } + ] + }, + { + type: 'Hoạt động nút', + list: [ + { + icon: 'icontianjiazijiedian', + name: 'Chèn nút thấp hơn', + value: 'Tab | Insert' + }, + { + icon: 'iconjiedian', + name: 'Chèn nút ngang hàng', + value: enter + }, + { + icon: 'icondodeparent', + name: 'Chèn nút cha', + value: 'Shift + Tab' + }, + { + icon: 'iconshangyi', + name: 'Chuyển nút lên', + value: `${ctrl} + ↑` + }, + { + icon: 'iconxiayi', + name: 'Di chuyển nút xuống', + value: `${ctrl} + ↓` + }, + { + icon: 'icongaikuozonglan', + name: 'Chèn tóm tắt', + value: `${ctrl} + G` + }, + { + icon: 'iconzhankai', + name: 'Mở rộng/thu gọn các nút', + value: '/' + }, + { + icon: 'iconshanchu', + name: 'Xóa nút', + value: 'Delete | Backspace' + }, + { + icon: 'iconshanchu', + name: 'Chỉ xóa nút hiện tại', + value: 'Shift + Backspace' + }, + { + icon: 'iconbianji', + name: 'Sửa nút', + value: macFn + 'F2' + }, + { + icon: 'iconzhengli', + name: 'Name', + value: `${ctrl} + R` + }, + { + icon: 'iconzuoyouduiqi', + name: 'Căn chỉnh một nút cùng cấps', + value: `${ctrl} + E` + }, + { + icon: 'iconsousuo', + name: 'Tìm kiếm và thay thế', + value: `${ctrl} + F` + } + ] + }, + { + type: 'Sửa hành động', + list: [ + { + icon: 'iconhoutui-shi', + name: 'Lùi lại', + value: `${ctrl} + Z` + }, + { + icon: 'iconqianjin1', + name: 'Tiến lên!', + value: `${ctrl} + Y` + }, + { + icon: 'iconhuanhang', + name: 'Dòng mới', + value: `Shift + ${enter}` + }, + { + icon: 'iconcase', + name: 'Mở cỡ', + value: `${ctrl} + Shift + +` + }, + { + icon: 'iconcase', + name: 'Giảm cỡ', + value: `${ctrl} + Shift + -` + }, + { + icon: 'iconzitijiacu', + name: 'Thô', + value: `${ctrl} + B` + }, + { + icon: 'iconzitixieti', + name: 'Nghiêng', + value: `${ctrl} + I` + }, + { + icon: 'iconzitixiahuaxian', + name: 'Thêm dòng xóa', + value: `${ctrl} + U` + }, + { + icon: 'iconshanchuxian', + name: 'Thêm dòng xóa', + value: `${ctrl} + [` + }, + { + icon: 'iconfuzhi', + name: 'Sao chép nút', + value: `${ctrl} + C` + }, + { + icon: 'iconjianqie', + name: 'Cắt nút', + value: `${ctrl} + X` + }, + { + icon: 'iconniantie', + name: 'Dán nút', + value: `${ctrl} + V` + }, + { + icon: 'iconquanxuan', + name: 'Chọn tất cả', + value: `${ctrl} + A` + }, + { + icon: 'iconquanxuan', + name: 'Nhiều lựa chọn', + value: `Phải / ${ctrl} + Trái` + } + ] + }, + { + type: 'Hoạt động Canvas', + list: [ + { + icon: 'iconfangda', + name: 'Phóng to', + value: `${ctrl} + +` + }, + { + icon: 'iconsuoxiao', + name: 'Thu nhỏ', + value: `${ctrl} + -` + }, + { + icon: 'iconfangda', + name: 'Phóng to/Thu nhỏ', + value: `${ctrl} + Cuộn chuột` + }, + { + icon: 'icondingwei', + name: 'Trở lại Root node', + value: `${ctrl} + ${enter}` + }, + { + icon: 'iconquanping1', + name: 'Thích nghi với Canvas', + value: `${ctrl} + Shift + I` + }, + { + icon: 'iconshubiaoyidong', + name: 'Di chuyển Canvas', + value: `Trái / Phải / Phím cách + Trái` + }, + { + icon: 'iconshangxiayidong', + name: 'Di chuyển Canvas lên và xuống', + value: `Cuộn chuột` + }, + { + icon: 'iconzuoyouyidong', + name: 'Di chuyển canvas trái và phải', + value: `Shift + Cuộn chuột` + } + ] + }, + { + type: 'Hoạt động phác thảo', + list: [ + { + icon: 'iconhuanhang', + name: 'Dòng mới', + value: `Shift + ${enter}` + }, + { + icon: 'iconshanchu', + name: 'Xóa nút', + value: 'Delete' + }, + { + icon: 'iconjiedian', + name: 'Chèn nút ngang hàng', + value: enter + }, + { + icon: 'icondodechild', + name: 'Di chuyển một bậc xuống', + value: 'Tab' + }, + { + icon: 'icondodeparent', + name: 'Di chuyển lên một cấp', + value: 'Shift + Tab' + }, + { + icon: 'iconjiedian', + name: 'Tạo nội dung sau con trỏ là nút cùng cấp', + value: `Ctrl + ${enter}` + } + ] + } +] + +export const shapeList = [ + { + name: 'Hình chữ nhật', + value: 'rectangle' + }, + { + name: 'Kim cương', + value: 'diamond' + }, + { + name: 'Tứ giác song song', + value: 'parallelogram' + }, + { + name: 'Hình chữ nhật tròn', + value: 'roundedRectangle' + }, + { + name: 'Hình chữ nhật bát giác', + value: 'octagonalRectangle' + }, + { + name: 'Hình chữ nhật tam giác ngoài', + value: 'outerTriangularRectangle' + }, + { + name: 'Hình chữ nhật tam giác bên trong', + value: 'innerTriangularRectangle' + }, + { + name: 'Hình elip', + value: 'ellipse' + }, + { + name: 'Vòng tròn', + value: 'circle' + } +] + +export const sidebarTriggerList = [ + { + name: 'Kiểu nút', + value: 'nodeStyle', + icon: 'iconzhuti' + }, + { + name: 'Kiểu nền tảng', + value: 'baseStyle', + icon: 'iconyangshi' + }, + { + name: 'Chủ đề', + value: 'theme', + icon: 'iconjingzi' + }, + { + name: 'Cấu trúc', + value: 'structure', + icon: 'iconjiegou' + }, + { + name: 'Trang chủ', + value: 'outline', + icon: 'iconfuhao-dagangshu' + }, + { + name: 'Thiết lập', + value: 'setting', + icon: 'iconshezhi' + } +] + +export const downTypeList = [ + { + name: '思绪Tài liệu', + type: 'smm', + icon: 'iconwenjian', + desc: + 'SimpleMindMap Định dạng riêng tư, có thể được sử dụng để nhập lại, có thể được chỉnh sửa trực tiếp bởi khách hàng' + }, + { + name: 'Hình ảnh', + type: 'png', + icon: 'iconPNG', + desc: 'Định dạng ảnh phổ biến, phù hợp để xem chia sẻ' + }, + { + name: 'SVG', + type: 'svg', + icon: 'iconSVG', + desc: 'Thu phóng đồ họa vector' + }, + { + name: 'PDF', + type: 'pdf', + icon: 'iconpdf', + desc: 'Thích hợp để xem trình duyệt và in' + }, + { + name: 'Markdown', + type: 'md', + icon: 'iconmarkdown', + desc: 'Định dạng văn bản md để dễ dàng mở phần mềm khác' + }, + { + name: 'XMind', + type: 'xmind', + icon: 'iconxmind', + desc: 'Định dạng phần mềm XMind' + }, + { + name: 'Txt', + type: 'txt', + icon: 'iconTXT', + desc: 'Tập tin văn bản thuần túy' + }, + { + name: 'JSON', + type: 'json', + icon: 'iconjson', + desc: + 'Các định dạng trao đổi dữ liệu phổ biến có thể được sử dụng để nhập lại' + } +] + +export const linearGradientDirList = [ + { + name: 'Từ trái sang phải', + value: '1', + start: [0, 0], + end: [1, 0] + }, + { + name: 'Từ phải sang trái', + value: '2', + start: [1, 0], + end: [0, 0] + }, + { + name: 'Từ trên xuống dưới', + value: '3', + start: [0, 0], + end: [0, 1] + }, + { + name: 'Từ dưới lên trên', + value: '4', + start: [0, 1], + end: [0, 0] + }, + { + name: 'Từ trái lên phải xuống', + value: '5', + start: [0, 0], + end: [1, 1] + }, + { + name: 'Từ trái xuống phải', + value: '6', + start: [0, 1], + end: [1, 0] + }, + { + name: 'Từ trên xuống dưới', + value: '7', + start: [1, 0], + end: [0, 1] + }, + { + name: 'Từ phải xuống trái', + value: '8', + start: [1, 1], + end: [0, 0] + } +] + +export const alignList = [ + { + name: 'Trái:', + value: 'left' + }, + { + name: 'Căn giữa', + value: 'center' + }, + { + name: 'Phải', + value: 'right' + } +] + +export const layoutGroupList = [ + { + name: 'Sơ đồ cấu trúc logic', + list: ['logicalStructure', 'logicalStructureLeft'] + }, + { + name: 'Bản đồ tư duy', + list: ['mindMap'] + }, + { + name: 'Sơ đồ tổ chức', + list: ['organizationStructure'] + }, + { + name: 'Sơ đồ tổ chức thư mục', + list: ['catalogOrganization'] + }, + { + name: 'Dòng thời gian', + list: [ + 'timeline', + 'timeline2', + 'verticalTimeline' + ] + }, + { + name: 'Bản đồ Fishbone', + list: ['fishbone'] + } +] + +export const iconNameMap = { + back: 'Quay lại', + forward: 'Tiến lên', + painter: 'Sao chép định dạng', + image: 'Chèn hình ảnh', + icon: 'Chèn biểu tượng', + link: 'Chèn siêu liên kết', + note: 'Chèn ghi chú', + tag: 'Chèn nhãn', + summary: 'Chèn tóm tắt', + associativeLine: 'Thêm đường liên kết', + formula: 'Chèn công thức toán', + outerFrame: 'Thêm khung viền', + ai: 'AI tạo tự động' +} diff --git a/src/src/config/zh.js b/src/src/config/zh.js new file mode 100644 index 0000000..fab9483 --- /dev/null +++ b/src/src/config/zh.js @@ -0,0 +1,788 @@ +import { checkIsMac } from '@/utils/index.js' + +export const fontFamilyList = [ + { + name: '宋体', + value: '宋体, SimSun, Songti SC' + }, + { + name: '微软雅黑', + value: '微软雅黑, Microsoft YaHei' + }, + { + name: '楷体', + value: '楷体, 楷体_GB2312, SimKai, STKaiti' + }, + { + name: '黑体', + value: '黑体, SimHei, Heiti SC' + }, + { + name: '隶书', + value: '隶书, SimLi' + }, + { + name: 'Andale Mono', + value: 'andale mono' + }, + { + name: 'Arial', + value: 'arial, helvetica, sans-serif' + }, + { + name: 'arialBlack', + value: 'arial black, avant garde' + }, + { + name: 'Comic Sans Ms', + value: 'comic sans ms' + }, + { + name: 'Impact', + value: 'impact, chicago' + }, + { + name: 'Times New Roman', + value: 'times new roman' + }, + { + name: 'Sans-Serif', + value: 'sans-serif' + }, + { + name: 'serif', + value: 'serif' + } +] + +export const fontSizeList = [10, 12, 14, 16, 18, 24, 32, 48] + +export const colorList = [ + '#4D4D4D', + '#999999', + '#FFFFFF', + '#F44E3B', + '#FE9200', + '#FCDC00', + '#DBDF00', + '#A4DD00', + '#68CCCA', + '#73D8FF', + '#AEA1FF', + '#FDA1FF', + '#333333', + '#808080', + '#cccccc', + '#D33115', + '#E27300', + '#FCC400', + '#B0BC00', + '#68BC00', + '#16A5A5', + '#009CE0', + '#7B64FF', + '#FA28FF', + '#000000', + '#666666', + '#B3B3B3', + '#9F0500', + '#C45100', + '#FB9E00', + '#808900', + '#194D33', + '#0C797D', + '#0062B1', + '#653294', + 'transparent' +] + +export const borderWidthList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + +export const borderDasharrayList = [ + { + name: '实线', + value: 'none' + }, + { + name: '虚线1', + value: '5,5' + }, + { + name: '虚线2', + value: '10,10' + }, + { + name: '虚线3', + value: '20,10,5,5,5,10' + }, + { + name: '虚线4', + value: '5,5,1,5' + }, + { + name: '虚线5', + value: '15,10,5,10,15' + }, + { + name: '虚线6', + value: '1,5' + }, + { + name: '虚线7', + value: '6,4' + } +] + +export const borderRadiusList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + +export const lineWidthList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + +export const lineHeightList = [1, 1.2, 1.5, 2, 2.5, 3] + +export const lineStyleMap = { + straight: ``, + curve: ``, + curve2: ``, + direct: `` +} + +export const lineStyleList = [ + { + name: '直线', + value: 'straight' + }, + { + name: '曲线', + value: 'curve' + }, + { + name: '曲线2', + value: 'curve2' + }, + { + name: '直连', + value: 'direct' + } +] + +export const rootLineKeepSameInCurveList = [ + { + name: '括号', + value: false + }, + { + name: '大括号', + value: true + } +] + +export const rootLineKeepSameInCurveList2 = [ + { + name: '括号', + value: true + }, + { + name: '大括号', + value: false + } +] + +export const backgroundRepeatList = [ + { + name: '不重复', + value: 'no-repeat' + }, + { + name: '重复', + value: 'repeat' + }, + { + name: '水平方向重复', + value: 'repeat-x' + }, + { + name: '垂直方向重复', + value: 'repeat-y' + } +] + +export const backgroundPositionList = [ + { + name: '默认', + value: '0% 0%' + }, + { + name: '左上', + value: 'left top' + }, + { + name: '左中', + value: 'left center' + }, + { + name: '左下', + value: 'left bottom' + }, + { + name: '右上', + value: 'right top' + }, + { + name: '右中', + value: 'right center' + }, + { + name: '右下', + value: 'right bottom' + }, + { + name: '中上', + value: 'center top' + }, + { + name: '居中', + value: 'center center' + }, + { + name: '中下', + value: 'center bottom' + } +] + +export const backgroundSizeList = [ + { + name: '自动', + value: 'auto' + }, + { + name: '覆盖', + value: 'cover' + }, + { + name: '保持', + value: 'contain' + } +] + +export const store = { + sidebarZIndex: 1 +} +const isMac = checkIsMac() +const ctrl = isMac ? '⌘' : 'Ctrl' +const enter = isMac ? 'Return' : 'Enter' +const macFn = isMac ? 'fn + ' : '' + +export const shortcutKeyList = [ + { + type: 'Obsidian特有', + list: [ + { + icon: 'iconbaocun', + name: '保存并更新图像数据', + value: `${ctrl} + Shfit + S` + }, + { + icon: 'iconxinbiaoqianyedakai', + name: '新标签页打开超链接', + value: `${ctrl} + 左键` + } + ] + }, + { + type: '节点操作', + list: [ + { + icon: 'icontianjiazijiedian', + name: '插入下级节点', + value: 'Tab | Insert' + }, + { + icon: 'iconjiedian', + name: '插入同级节点', + value: enter + }, + { + icon: 'icondodeparent', + name: '插入父节点', + value: 'Shift + Tab' + }, + { + icon: 'iconshangyi', + name: '上移节点', + value: `${ctrl} + ↑` + }, + { + icon: 'iconxiayi', + name: '下移节点', + value: `${ctrl} + ↓` + }, + { + icon: 'icongaikuozonglan', + name: '插入概要', + value: `${ctrl} + G` + }, + { + icon: 'iconzhankai', + name: '展开/收起节点', + value: '/' + }, + { + icon: 'iconshanchu', + name: '删除节点', + value: 'Delete | Backspace' + }, + { + icon: 'iconshanchu', + name: '仅删除当前节点', + value: 'Shift + Backspace' + }, + { + icon: 'iconbianji', + name: '编辑节点', + value: macFn + 'F2' + }, + { + icon: 'iconzuoyouduiqi', + name: '一键同级节点对齐', + value: `${ctrl} + E` + }, + { + icon: 'iconsousuo', + name: '搜索和替换', + value: `${ctrl} + F` + } + ] + }, + { + type: '编辑操作', + list: [ + { + icon: 'iconhoutui-shi', + name: '回退', + value: `${ctrl} + Z` + }, + { + icon: 'iconqianjin1', + name: '前进', + value: `${ctrl} + Y` + }, + { + icon: 'iconhuanhang', + name: '文本换行', + value: `Shift + ${enter}` + }, + { + icon: 'iconcase', + name: '增大字号', + value: `${ctrl} + Shift + +` + }, + { + icon: 'iconcase', + name: '减小字号', + value: `${ctrl} + Shift + -` + }, + { + icon: 'iconzitijiacu', + name: '加粗', + value: `${ctrl} + B` + }, + { + icon: 'iconzitixieti', + name: '斜体', + value: `${ctrl} + I` + }, + { + icon: 'iconzitixiahuaxian', + name: '添加下划线', + value: `${ctrl} + U` + }, + { + icon: 'iconshanchuxian', + name: '添加删除线', + value: `${ctrl} + [` + }, + { + icon: 'iconfuzhi', + name: '复制节点', + value: `${ctrl} + C` + }, + { + icon: 'iconjianqie', + name: '剪切节点', + value: `${ctrl} + X` + }, + { + icon: 'iconniantie', + name: '粘贴节点', + value: `${ctrl} + V` + }, + { + icon: 'iconquanxuan', + name: '全选', + value: `${ctrl} + A` + }, + { + icon: 'iconquanxuan', + name: '多选', + value: `右键 / ${ctrl} + 左键` + } + ] + }, + { + type: '画布操作', + list: [ + { + icon: 'iconfangda', + name: '放大', + value: `${ctrl} + +` + }, + { + icon: 'iconsuoxiao', + name: '缩小', + value: `${ctrl} + -` + }, + { + icon: 'iconfangda', + name: '放大/缩小', + value: `${ctrl} + 鼠标滚动` + }, + { + icon: 'icondingwei', + name: '回到根节点', + value: `${ctrl} + ${enter}` + }, + { + icon: 'iconquanping1', + name: '适应画布', + value: `${ctrl} + Shift + I` + }, + { + icon: 'iconzhengli', + name: '一键整理布局', + value: `${ctrl} + R` + }, + { + icon: 'iconshubiaoyidong', + name: '移动画布', + value: `左键 / 右键 / 空格键 + 左键` + }, + { + icon: 'iconshangxiayidong', + name: '上下移动画布', + value: `鼠标滚动` + }, + { + icon: 'iconzuoyouyidong', + name: '左右移动画布', + value: `Shift + 鼠标滚动` + } + ] + }, + { + type: '大纲操作', + list: [ + { + icon: 'iconhuanhang', + name: '文本换行', + value: `Shift + ${enter}` + }, + { + icon: 'iconshanchu', + name: '删除节点', + value: 'Delete' + }, + { + icon: 'iconjiedian', + name: '插入同级节点', + value: enter + }, + { + icon: 'icondodechild', + name: '下移一个层级', + value: 'Tab' + }, + { + icon: 'icondodeparent', + name: '上移一个层级', + value: 'Shift + Tab' + }, + { + icon: 'iconjiedian', + name: '将光标后的内容创建为同级节点', + value: `Ctrl + ${enter}` + } + ] + } +] + +export const shapeListMap = { + rectangle: 'M 4 12 L 4 3 L 56 3 L 56 21 L 4 21 L 4 12 Z', + diamond: 'M 4 12 L 30 3 L 56 12 L 30 21 L 4 12 Z', + parallelogram: 'M 10 3 L 56 3 L 50 21 L 4 21 L 10 3 Z', + roundedRectangle: + 'M 13 3 L 47 3 A 9 9 0, 0 1 47 21 L 13 21 A 9 9 0, 0 1 13 3 Z', + octagonalRectangle: + 'M 4 12 L 4 9 L 10 3 L 50 3 L 56 9 L 56 15 L 50 21 L 10 21 L 4 15 L 4 12 Z', + outerTriangularRectangle: + 'M 4 12 L 10 3 L 50 3 L 56 12 L 50 21 L 10 21 L 4 12 Z', + innerTriangularRectangle: + 'M 10 12 L 4 3 L 56 3 L 50 12 L 56 21 L 4 21 L 10 12 Z', + ellipse: 'M 4 12 A 26 9 0, 1, 0 30 3 A 26 9 0, 0, 0 4 12 Z', + circle: 'M 21 12 A 9 9 0, 1, 0 30 3 A 9 9 0, 0, 0 21 12 Z' +} + +export const shapeList = [ + { + name: '矩形', + value: 'rectangle' + }, + { + name: '菱形', + value: 'diamond' + }, + { + name: '平行四边形', + value: 'parallelogram' + }, + { + name: '圆角矩形', + value: 'roundedRectangle' + }, + { + name: '八角矩形', + value: 'octagonalRectangle' + }, + { + name: '外三角矩形', + value: 'outerTriangularRectangle' + }, + { + name: '内三角矩形', + value: 'innerTriangularRectangle' + }, + { + name: '椭圆', + value: 'ellipse' + }, + { + name: '圆', + value: 'circle' + } +] + +export const langList = [ + { + value: 'zh', + name: '简体中文' + }, + { + value: 'zhtw', + alias: 'zh-TW', + name: '繁體中文' + }, + { + value: 'en', + name: 'English' + }, + { + value: 'vi', + name: 'Tiếng Việt' + } +] + +export const sidebarTriggerList = [ + { + name: '节点样式', + value: 'nodeStyle', + icon: 'iconzhuti' + }, + { + name: '基础样式', + value: 'baseStyle', + icon: 'iconjichuyangshi' + }, + { + name: '主题', + value: 'theme', + icon: 'iconjingzi' + }, + { + name: '结构', + value: 'structure', + icon: 'iconjiegou' + }, + { + name: '大纲', + value: 'outline', + icon: 'iconfuhao-dagangshu' + }, + { + name: '设置', + value: 'setting', + icon: 'iconshezhi' + } +] + +export const downTypeList = [ + { + name: '思绪文件', + type: 'smm', + icon: 'iconwenjian', + desc: 'SimpleMindMap私有格式,可用于再次导入,客户端可直接编辑' + }, + { + name: '图片', + type: 'png', + icon: 'iconPNG', + desc: '常用图片格式,适合查看分享' + }, + { + name: 'SVG', + type: 'svg', + icon: 'iconSVG', + desc: '可缩放矢量图形' + }, + { + name: 'PDF', + type: 'pdf', + icon: 'iconpdf', + desc: '适合查看浏览和打印' + }, + { + name: 'Markdown', + type: 'md', + icon: 'iconmarkdown', + desc: 'md文本格式,便于其他软件打开' + }, + { + name: 'XMind', + type: 'xmind', + icon: 'iconxmind', + desc: 'XMind软件格式' + }, + { + name: 'Txt', + type: 'txt', + icon: 'iconTXT', + desc: '纯文本文件' + }, + { + name: 'JSON', + type: 'json', + icon: 'iconjson', + desc: '流行的数据交换格式,可用于再次导入' + } +] + +export const linearGradientDirList = [ + { + name: '从左到右', + value: '1', + start: [0, 0], + end: [1, 0] + }, + { + name: '从右到左', + value: '2', + start: [1, 0], + end: [0, 0] + }, + { + name: '从上到下', + value: '3', + start: [0, 0], + end: [0, 1] + }, + { + name: '从下到上', + value: '4', + start: [0, 1], + end: [0, 0] + }, + { + name: '从左上到右下', + value: '5', + start: [0, 0], + end: [1, 1] + }, + { + name: '从左下到右上', + value: '6', + start: [0, 1], + end: [1, 0] + }, + { + name: '从右上到左下', + value: '7', + start: [1, 0], + end: [0, 1] + }, + { + name: '从右下到左上', + value: '8', + start: [1, 1], + end: [0, 0] + } +] + +export const alignList = [ + { + name: '左对齐', + value: 'left' + }, + { + name: '居中对齐', + value: 'center' + }, + { + name: '右对齐', + value: 'right' + } +] + +export const layoutGroupList = [ + { + name: '逻辑结构图', + list: ['logicalStructure', 'logicalStructureLeft'] + }, + { + name: '思维导图', + list: ['mindMap'] + }, + { + name: '组织结构图', + list: ['organizationStructure'] + }, + { + name: '目录组织图', + list: ['catalogOrganization'] + }, + { + name: '时间轴', + list: [ + 'timeline', + 'timeline2', + 'verticalTimeline' + ] + }, + { + name: '鱼骨图', + list: ['fishbone'] + } +] + +export const iconNameMap = { + back: '回退', + forward: '前进', + painter: '格式刷', + image: '插入图片', + icon: '插入图标', + link: '插入超链接', + note: '插入备注', + tag: '插入标签', + summary: '插入概要', + associativeLine: '添加关联线', + formula: '插入数学公式', + outerFrame: '添加外框', + ai: 'AI一键生成' +} diff --git a/src/src/config/zhtw.js b/src/src/config/zhtw.js new file mode 100644 index 0000000..87ca0f4 --- /dev/null +++ b/src/src/config/zhtw.js @@ -0,0 +1,693 @@ +import { checkIsMac } from '@/utils/index.js' + +export const fontFamilyList = [ + { + name: '宋體', + value: '宋体, SimSun, Songti SC' + }, + { + name: '微軟雅黑', + value: '微软雅黑, Microsoft YaHei' + }, + { + name: '楷體', + value: '楷体, 楷体_GB2312, SimKai, STKaiti' + }, + { + name: '黑體', + value: '黑体, SimHei, Heiti SC' + }, + { + name: '隸書', + value: '隶书, SimLi' + }, + { + name: 'Andale Mono', + value: 'andale mono' + }, + { + name: 'Arial', + value: 'arial, helvetica, sans-serif' + }, + { + name: 'arialBlack', + value: 'arial black, avant garde' + }, + { + name: 'Comic Sans Ms', + value: 'comic sans ms' + }, + { + name: 'Impact', + value: 'impact, chicago' + }, + { + name: 'Times New Roman', + value: 'times new roman' + }, + { + name: 'Sans-Serif', + value: 'sans-serif' + }, + { + name: 'serif', + value: 'serif' + } +] + +export const borderDasharrayList = [ + { + name: '實線', + value: 'none' + }, + { + name: '虛線 1', + value: '5,5' + }, + { + name: '虛線 2', + value: '10,10' + }, + { + name: '虛線 3', + value: '20,10,5,5,5,10' + }, + { + name: '虛線 4', + value: '5,5,1,5' + }, + { + name: '虛線 5', + value: '15,10,5,10,15' + }, + { + name: '虛線 6', + value: '1,5' + }, + { + name: '虛線 7', + value: '6,4' + } +] + +export const lineStyleList = [ + { + name: '直線', + value: 'straight' + }, + { + name: '曲線', + value: 'curve' + }, + { + name: '曲線2', + value: 'curve2' + }, + { + name: '直接連線', + value: 'direct' + } +] + +export const rootLineKeepSameInCurveList = [ + { + name: '括號', + value: false + }, + { + name: '大括號', + value: true + } +] + +export const rootLineKeepSameInCurveList2 = [ + { + name: '括號', + value: true + }, + { + name: '大括號', + value: false + } +] + +export const backgroundRepeatList = [ + { + name: '不重複', + value: 'no-repeat' + }, + { + name: '重複', + value: 'repeat' + }, + { + name: '水平重複', + value: 'repeat-x' + }, + { + name: '垂直重複', + value: 'repeat-y' + } +] + +export const backgroundPositionList = [ + { + name: '預設', + value: '0% 0%' + }, + { + name: '左上', + value: 'left top' + }, + { + name: '左中', + value: 'left center' + }, + { + name: '左下', + value: 'left bottom' + }, + { + name: '右上', + value: 'right top' + }, + { + name: '右中', + value: 'right center' + }, + { + name: '右下', + value: 'right bottom' + }, + { + name: '中上', + value: 'center top' + }, + { + name: '置中', + value: 'center center' + }, + { + name: '中下', + value: 'center bottom' + } +] + +const isMac = checkIsMac() +const ctrl = isMac ? '⌘' : 'Ctrl' +const enter = isMac ? 'Return' : 'Enter' +const macFn = isMac ? 'fn + ' : '' + +export const backgroundSizeList = [ + { + name: '自動', + value: 'auto' + }, + { + name: '覆蓋', + value: 'cover' + }, + { + name: '包含', + value: 'contain' + } +] + +export const shortcutKeyList = [ + { + type: 'Obsidian特有', + list: [ + { + icon: 'iconbaocun', + name: '保存並更新影像數據', + value: `${ctrl} + Shfit + S` + }, + { + icon: 'iconxinbiaoqianyedakai', + name: '新標籤頁打開超連結', + value: `${ctrl} + 左鍵` + } + ] + }, + { + type: '節點操作', + list: [ + { + icon: 'icontianjiazijiedian', + name: '插入子節點', + value: 'Tab | Insert' + }, + { + icon: 'iconjiedian', + name: '插入同層節點', + value: enter + }, + { + icon: 'icondodeparent', + name: '插入父節點', + value: 'Shift + Tab' + }, + { + icon: 'iconshangyi', + name: '上移節點', + value: `${ctrl} + ↑` + }, + { + icon: 'iconxiayi', + name: '下移節點', + value: `${ctrl} + ↓` + }, + { + icon: 'icongaikuozonglan', + name: '插入摘要', + value: `${ctrl} + G` + }, + { + icon: 'iconzhankai', + name: '展開/收合節點', + value: '/' + }, + { + icon: 'iconshanchu', + name: '刪除節點', + value: 'Delete | Backspace' + }, + { + icon: 'iconshanchu', + name: '僅刪除目前節點', + value: 'Shift + Backspace' + }, + { + icon: 'iconbianji', + name: '編輯節點', + value: macFn + 'F2' + }, + { + icon: 'iconzhengli', + name: '一鍵整理版面配置', + value: `${ctrl} + R` + }, + { + icon: 'iconzuoyouduiqi', + name: '一鍵同級節點對齊', + value: `${ctrl} + E` + }, + { + icon: 'iconsousuo', + name: '搜尋與取代', + value: `${ctrl} + F` + } + ] + }, + { + type: '編輯操作', + list: [ + { + icon: 'iconhoutui-shi', + name: '復原', + value: `${ctrl} + Z` + }, + { + icon: 'iconqianjin1', + name: '重做', + value: `${ctrl} + Y` + }, + { + icon: 'iconhuanhang', + name: '文字換行', + value: `Shift + ${enter}` + }, + { + icon: 'iconcase', + name: '增大字型大小', + value: `${ctrl} + Shift + +` + }, + { + icon: 'iconcase', + name: '减小字型大小', + value: `${ctrl} + Shift + -` + }, + { + icon: 'iconzitijiacu', + name: '加粗', + value: `${ctrl} + B` + }, + { + icon: 'iconzitixieti', + name: '斜體', + value: `${ctrl} + I` + }, + { + icon: 'iconzitixiahuaxian', + name: '添加下划线', + value: `${ctrl} + U` + }, + { + icon: 'iconshanchuxian', + name: '添加删除線', + value: `${ctrl} + [` + }, + { + icon: 'iconfuzhi', + name: '複製節點', + value: `${ctrl} + C` + }, + { + icon: 'iconjianqie', + name: '剪下節點', + value: `${ctrl} + X` + }, + { + icon: 'iconniantie', + name: '貼上節點', + value: `${ctrl} + V` + }, + { + icon: 'iconquanxuan', + name: '全選', + value: `${ctrl} + A` + }, + { + icon: 'iconquanxuan', + name: '多重選擇', + value: `右鍵 / ${ctrl} + 左鍵` + } + ] + }, + { + type: '畫布操作', + list: [ + { + icon: 'iconfangda', + name: '放大', + value: `${ctrl} + +` + }, + { + icon: 'iconsuoxiao', + name: '縮小', + value: `${ctrl} + -` + }, + { + icon: 'iconfangda', + name: '放大/縮小', + value: `${ctrl} + 滑鼠滾輪` + }, + { + icon: 'icondingwei', + name: '回到根節點', + value: `${ctrl} + ${enter}` + }, + { + icon: 'iconquanping1', + name: '適應畫布', + value: `${ctrl} + Shift + I` + }, + { + icon: 'iconshubiaoyidong', + name: '移動畫布', + value: `左鍵 / 右鍵 / 空白鍵 + 左鍵` + }, + { + icon: 'iconshangxiayidong', + name: '上下移動畫布', + value: `滑鼠滾輪` + }, + { + icon: 'iconzuoyouyidong', + name: '左右移動畫布', + value: `Shift + 滑鼠滾輪` + } + ] + }, + { + type: '大綱操作', + list: [ + { + icon: 'iconhuanhang', + name: '文字換行', + value: `Shift + ${enter}` + }, + { + icon: 'iconshanchu', + name: '刪除節點', + value: 'Delete' + }, + { + icon: 'iconjiedian', + name: '插入同層節點', + value: enter + }, + { + icon: 'icondodechild', + name: '下移一層', + value: 'Tab' + }, + { + icon: 'icondodeparent', + name: '上移一層', + value: 'Shift + Tab' + }, + { + icon: 'iconjiedian', + name: '將光標後的內容創建為同級節點', + value: `Ctrl + ${enter}` + } + ] + } +] + +export const shapeList = [ + { + name: '矩形', + value: 'rectangle' + }, + { + name: '菱形', + value: 'diamond' + }, + { + name: '平行四邊形', + value: 'parallelogram' + }, + { + name: '圓角矩形', + value: 'roundedRectangle' + }, + { + name: '八角矩形', + value: 'octagonalRectangle' + }, + { + name: '外三角矩形', + value: 'outerTriangularRectangle' + }, + { + name: '內三角矩形', + value: 'innerTriangularRectangle' + }, + { + name: '橢圓形', + value: 'ellipse' + }, + { + name: '圓形', + value: 'circle' + } +] + +export const sidebarTriggerList = [ + { + name: '節點樣式', + value: 'nodeStyle', + icon: 'iconzhuti' + }, + { + name: '基礎樣式', + value: 'baseStyle', + icon: 'iconyangshi' + }, + { + name: '主題', + value: 'theme', + icon: 'iconjingzi' + }, + { + name: '結構', + value: 'structure', + icon: 'iconjiegou' + }, + { + name: '大綱', + value: 'outline', + icon: 'iconfuhao-dagangshu' + }, + { + name: '設置', + value: 'setting', + icon: 'iconshezhi' + } +] + +export const downTypeList = [ + { + name: '思緒檔案', + type: 'smm', + icon: 'iconwenjian', + desc: 'SimpleMindMap私有格式,可用于再次導入,客戶端可直接編輯' + }, + { + name: '圖片', + type: 'png', + icon: 'iconPNG', + desc: '常用圖片格式,適合查看分享' + }, + { + name: 'SVG', + type: 'svg', + icon: 'iconSVG', + desc: '可縮放矢量圖形' + }, + { + name: 'PDF', + type: 'pdf', + icon: 'iconpdf', + desc: '適合查看浏覽和打印' + }, + { + name: 'Markdown', + type: 'md', + icon: 'iconmarkdown', + desc: 'md文本格式,便于其他軟件打開' + }, + { + name: 'XMind', + type: 'xmind', + icon: 'iconxmind', + desc: 'XMind軟件格式' + }, + { + name: 'Txt', + type: 'txt', + icon: 'iconTXT', + desc: '純文本文件' + }, + { + name: 'JSON', + type: 'json', + icon: 'iconjson', + desc: '流行的數據交換格式,可用于再次導入' + } +] + +export const linearGradientDirList = [ + { + name: '从左到右', + value: '1', + start: [0, 0], + end: [1, 0] + }, + { + name: '从右到左', + value: '2', + start: [1, 0], + end: [0, 0] + }, + { + name: '从上到下', + value: '3', + start: [0, 0], + end: [0, 1] + }, + { + name: '从下到上', + value: '4', + start: [0, 1], + end: [0, 0] + }, + { + name: '从左上到右下', + value: '5', + start: [0, 0], + end: [1, 1] + }, + { + name: '从左下到右上', + value: '6', + start: [0, 1], + end: [1, 0] + }, + { + name: '从右上到左下', + value: '7', + start: [1, 0], + end: [0, 1] + }, + { + name: '从右下到左上', + value: '8', + start: [1, 1], + end: [0, 0] + } +] + +export const alignList = [ + { + name: '左對齊', + value: 'left' + }, + { + name: '居中對齊', + value: 'center' + }, + { + name: '右對齊', + value: 'right' + } +] + +export const layoutGroupList = [ + { + name: '邏輯結構圖', + list: ['logicalStructure', 'logicalStructureLeft'] + }, + { + name: '思維導圖', + list: ['mindMap'] + }, + { + name: '組織結構圖', + list: ['organizationStructure'] + }, + { + name: '目錄組織圖', + list: ['catalogOrganization'] + }, + { + name: '時間軸', + list: [ + 'timeline', + 'timeline2', + 'verticalTimeline' + ] + }, + { + name: '魚骨圖', + list: ['fishbone'] + } +] + +export const iconNameMap = { + back: '回退', + forward: '前進', + painter: '格式刷', + image: '插入圖片', + icon: '插入圖標', + link: '插入超連結', + note: '插入備註', + tag: '插入標籤', + summary: '插入概要', + associativeLine: '添加關聯線', + formula: '插入數學公式', + outerFrame: '添加外框', + ai: 'AI一鍵生成' +} diff --git a/src/src/i18n.js b/src/src/i18n.js new file mode 100644 index 0000000..ac08c51 --- /dev/null +++ b/src/src/i18n.js @@ -0,0 +1,12 @@ +import Vue from 'vue' +import VueI18n from 'vue-i18n' +import messages from './lang' + +Vue.use(VueI18n) + +const i18n = new VueI18n({ + messages, + fallbackLocale: 'en' +}) + +export default i18n diff --git a/src/src/lang/en_us.js b/src/src/lang/en_us.js new file mode 100644 index 0000000..dd47aae --- /dev/null +++ b/src/src/lang/en_us.js @@ -0,0 +1,647 @@ +export default { + baseStyle: { + title: 'BaseStyle', + background: 'Background', + color: 'Color', + image: 'Image', + imageRepeat: 'Image repeat', + imagePosition: 'Image position', + imageSize: 'Image size', + line: 'Line', + width: 'Width', + style: 'Style', + lineRadius: 'Radius', + lineOfOutline: 'Line of outline', + showArrow: 'Is show arrow', + nodePadding: 'Node padding', + nodeMargin: 'Node margin', + horizontal: 'Horizontal', + vertical: 'Vertical', + maximumWidth: 'Max width', + maximumHeight: 'Max height', + icon: 'Icon', + size: 'Size', + level2Node: 'Level2 node', + belowLevel2Node: 'Below level2 node', + nodeBorderType: 'Node border style', + nodeUseLineStyle: 'Use only has bottom border style', + otherConfig: 'Other config', + associativeLine: 'Associative line', + associativeLineWidth: 'Width', + associativeLineColor: 'Color', + associativeLineActiveWidth: 'Active width', + associativeLineActiveColor: 'Active color', + rootStyle: 'Root node connection style', + associativeLineText: 'Associative line text', + fontFamily: 'Font family', + fontSize: 'Font size', + rootLineStartPos: 'Root line start pos', + center: 'Center', + edge: 'Edge', + rainbowLines: 'Rainbow lines', + notUseRainbowLines: 'Not use rainbow lines', + outerFramePadding: 'Outer frame padding', + associativeLineStyle: 'Associative line style', + builtInBackgroundImage: 'Built in background image', + baseStyleConfig: 'Basic style configuration for mind mapping' + }, + setting: { + title: 'Setting', + openPerformance: 'Enable performance mode', + enableFreeDrag: 'Enable node free drag(Beta)', + isEnableNodeRichText: 'Enable node rich text editing', + mousewheelAction: 'Mouse wheel behavior', + zoomView: 'Zoom view', + moveViewUpDown: 'Move view up and down', + mousewheelZoomActionReverse: 'Mouse wheel zoom', + mousewheelZoomActionReverse1: 'Zoom out forward and zoom in back', + mousewheelZoomActionReverse2: 'Zoom in forward and zoom out back', + createNewNodeBehavior: 'Behavior of creating new node', + default: 'Active new node and editing', + notActive: 'Not active new node', + activeOnly: 'Only active new node but not editing', + openRealtimeRenderOnNodeTextEdit: + 'Enable real-time rendering effect for text editing', + isShowScrollbar: 'Is show scrollbar', + openBlankMode: 'Is open blank mode of the demonstrate', + watermark: 'Watermark', + showWatermark: 'Is show watermark', + onlyExport: 'Only export', + watermarkDefaultText: 'Watermark text', + watermarkText: 'Watermark text', + watermarkTextColor: 'Text color', + watermarkLineSpacing: 'Line spacing', + watermarkTextSpacing: 'Text spacing', + watermarkAngle: 'Angle', + watermarkTextOpacity: 'Text opacity', + watermarkTextFontSize: 'Font size', + belowNode: 'Display below nodes', + alwaysShowExpandBtn: 'Always show expand btn', + enableAutoEnterTextEditWhenKeydown: 'Auto enter text edit when keydown', + confirm: 'Confirm', + cancel: 'Cancel', + changeRichTextTip: + 'This operation will clear all historical modification records and modify the mind map data. Do you want to continue?', + changeRichTextTip2: 'Do you want to switch to rich text mode?', + changeRichTextTip3: 'Do you want to switch to non rich text mode?', + imgTextMargin: 'Node image and text margin', + textContentMargin: 'Node contents margin', + enableInheritAncestorLineStyle: + 'Node connection style inherits the style of ancestor nodes', + isShowBottomToolbar: 'Display the bottom toolbar', + rootEnableUnExpand: 'Does the root node allow the collapse of subordinates', + settingConfig: 'Mind map setting', + title1: 'Node', + title2: 'Edit', + title3: 'Display', + title4: 'Other', + sameNodeAlignInitWidth: 'Align same level nodes with initial width', + enableFreeDragTip: + 'After disabling the setting, if you want to restore the default layout, please right-click on the canvas and select the context menu option - [Organize Layout Automatically]', + isUseSameNodeAlignTip1: + '1. Node width will not automatically align after editing; manually click the canvas right-click menu - [Align Sibling Nodes Automatically]', + isUseSameNodeAlignTip2: + '2. After disabling the setting, if you want to restore default width, please right-click on the canvas and select the context menu option - [Remove Custom Width from All Nodes]', + openRealtimeRenderOnNodeTextEditTip: + 'Enabling this may cause performance degradation; it is recommended to disable it when there are many nodes', + openPerformanceTip: + 'If there are many nodes, try enabling performance mode to speed up rendering' + }, + color: { + moreColor: 'More color' + }, + contextmenu: { + insertNode: 'Insert node', + insertSiblingNode: 'Sibling node', + insertChildNode: 'Child node', + insertParentNode: 'Parent node', + insertSummary: 'Summary', + moveUpNode: 'Move up node', + moveDownNode: 'Move down node', + deleteNode: 'Delete node', + deleteCurrentNode: 'Only del cur node', + copyNode: 'Copy node', + cutNode: 'Cut node', + pasteNode: 'Paste node', + backCenter: 'Back root node', + expandAll: 'Expand all', + unExpandAll: 'Un expand all', + expandTo: 'Expand to', + arrangeLayout: 'Arrange layout', + level1: 'Level1', + level2: 'Level2', + level3: 'Level3', + level4: 'Level4', + level5: 'Level5', + level6: 'Level6', + zenMode: 'Zen mode', + fitCanvas: 'Fit canvas', + removeImage: 'Remove image', + removeHyperlink: 'Remove hyperlink', + removeNote: 'Remove note', + removeCustomStyles: 'Remove custom styles', + removeAllNodeCustomStyles: 'Remove all node custom styles', + exportNodeToPng: 'Export node to png', + copyToClipboard: 'Copy to clipboard', + copyToSmm: 'SMM', + copyToJson: 'JSON', + copyToMarkdown: 'Markdown', + copyToTxt: 'Txt', + copyToPng: 'Png', + copySuccess: 'Copy success', + copyFail: 'Copy fail', + number: 'Number child nodes', + expandNodeChild: 'Expand all sub nodes', + unExpandNodeChild: 'Un expand all sub nodes', + addToDo: 'Add toDo', + removeToDo: 'Remove toDo', + aiCreate: 'AI Continuation', + modifyNodeLink: 'Modify node link', + linkToNode: 'Link to node', + removeNodeLink: 'Remove node link', + nodeAlgin: 'One click same level node alignment', + removeCustomWidth: 'Remove custom width', + copyAsInternalUrl: 'Copy as internal url', + removeAllCustomWidth: 'One click removal of custom width for all nodes', + download: 'Download to local', + copyNodeToTxt: 'Copy as plain text' + }, + count: { + words: 'Words', + nodes: 'Nodes' + }, + dialog: { + cancel: 'Cancel', + confirm: 'Confirm' + }, + export: { + title: 'Export', + filename: 'Filename', + include: 'Is include config like theme and structure', + dedicatedFile: 'Dedicated file', + jsonFile: 'Json file', + imageFile: 'Image file', + svgFile: 'Svg file', + pdfFile: 'Pdf file', + markdownFile: 'Markdown file', + isTransparent: 'Background is transparent', + transformingDomToImages: 'Converting nodes: ', + notifyTitle: 'Info', + notifyMessage: + 'If the download is not triggered, check whether it is blocked by the browser', + paddingX: 'Padding x', + paddingY: 'Padding y', + useMultiPageExport: 'Export multi page', + defaultFileName: 'Mind map', + addFooterTextPlaceholder: 'For example: From simple-mind-map', + addFooterText: 'Add text at the footer', + desc: 'Desc', + options: 'Options', + isFitBg: + 'Whether to display the complete background image (effective when a background image is used)', + format: 'Format', + confirm: 'Export' + }, + fullscreen: { + fullscreenShow: 'Full screen show', + fullscreenEdit: 'Full screen edit' + }, + demonstrate: { + demonstrate: 'Enter demonstration mode' + }, + import: { + title: 'Import', + selectFile: 'Select file', + support: 'Support', + file: 'file', + pleaseSelect: 'Please select', + maxFileNum: 'At most one file can be selected', + notSelectTip: 'Please select the file to import', + fileContentError: 'The file content is incorrect', + importSuccess: 'Import success', + fileParsingFailed: 'File parsing failed', + xmindCanvasSelectDialogTitle: 'Select the canvas to import', + mdImportDialogTitle: 'Paste markdown content to import', + mdPlaceholder: 'Please enter the content in markdown format', + mdEmptyTip: 'The content cannot be empty', + mdImportFailTip: 'Import failed, no content was parsed for import. Only supports syntax such as titles and lists', + rootNodeName: 'Root node', + importTip: 'Among them, .mm and .xlsx members are available', + dragTip: 'Drag warehouse or local computer files here', + warningTip: 'Attention: Importing will overwrite existing content and cannot be restored. Please make a backup first!' + }, + navigatorToolbar: { + openMiniMap: 'Open mini map', + closeMiniMap: 'Close mini map', + readonly: 'Change to readonly', + edit: 'Change to edit', + backToRoot: 'Back to root node', + changeSourceCodeEdit: 'Switch to source code editing mode', + shortcutKeys: 'Shortcut keys', + ai: 'AI dialogue', + downloadClient: 'Download client', + site: 'Official website', + current: 'Current:', + downloadDesc: 'You can download it from the following address:', + searchReplace: 'Search for replacement', + exitDarkMode: 'Exit dark mode', + darkMode: 'Switch to dark mode', + darkModeFailTip: 'Switching failed, currently following obsidian mode', + export: 'Export', + help: 'Help' + }, + nodeHyperlink: { + title: 'Link', + link: 'Href', + name: 'Name', + tabName1: 'Ordinary website', + tabName2: 'Obsidian file', + tabName3: 'Local files', + selectLocalFile: 'Select local file', + none: 'Not have', + delete: 'Delete', + add: 'Add', + tip1: 'Please enter the link address', + tip2: 'Insertion failed, file does not exist', + tip3: 'Please select a local file', + tip4: 'File upload to vault failed', + tip5: 'Insertion failed' + }, + nodeIcon: { + title: 'Icon' + }, + nodeImage: { + title: 'Image', + imgTitle: 'Title', + tip: + "Tip: If you want to paste an image, you don't need to open this pop-up window. Simply activate the node and press Ctrl+v to paste.", + method1: 'Method 1', + method2: 'Method 2', + tip2: 'Please enter the image address', + optional: 'Optional', + selectLocal: 'Select locally', + selectVault: 'Select from vault', + selectUrl: 'Network images', + imgTitle: 'Image title (optional)' + }, + nodeNote: { + title: 'Note' + }, + nodeTag: { + title: 'Tag', + addTip: 'Please press Enter to add, up to five labels can be added', + add: 'Add' + }, + outline: { + title: 'Outline', + nodeDefaultText: 'Branch node', + print: 'Print', + fullscreen: 'Fullscreen', + tip1: 'Insert sibling node:', + tip2: 'Node Downward Level:', + tip3: 'Node up hierarchy:', + tip4: 'Delete node:', + tip5: 'Press and hold the node to drag and drop' + }, + scale: { + zoomIn: 'Zoom in', + zoomOut: 'Zoom out' + }, + shortcutKey: { + title: 'Shortcut key' + }, + strusture: { + title: 'Strusture' + }, + style: { + title: 'Node style', + normal: 'Normal', + active: 'Active', + text: 'Text', + fontFamily: 'Font family', + fontSize: 'Font size', + color: 'color', + addFontWeight: 'add font weight', + italic: 'Italic', + textDecoration: 'Text decoration', + underline: 'Underline', + none: 'None', + lineThrough: 'Line through', + overline: 'Overline', + border: 'Border', + style: 'Style', + width: 'Width', + borderRadius: 'Border radius', + background: 'Background', + shape: 'Shape', + line: 'Line', + nodePadding: 'Node padding', + horizontal: 'Horizontal', + vertical: 'Vertical', + gradientStyle: 'Gradient', + startColor: 'Start', + endColor: 'End', + arrowDir: 'Arrow dir', + arrowDirStart: 'Start', + arrowDirEnd: 'End', + direction: 'Direction', + selectNodeTip: 'Please select a node', + openLineFlow: 'Open line flow', + lineFlowDuration: 'Line flow duration', + forward: 'Forward', + reverse: 'Reverse', + img: 'Image', + placement: 'Placement', + top: 'Top', + bottom: 'Bottom', + left: 'Left', + right: 'Right', + tag: 'Tag' + }, + theme: { + title: 'Theme', + classics: 'Classics', + dark: 'Darkness', + simple: 'Simple', + coverTip: + 'You have currently customized the basic style, do you want to overwrite it?', + tip: 'Tip', + cover: 'Cover', + reserve: 'Reserve' + }, + toolbar: { + undo: 'Undo', + redo: 'Redo', + insertSiblingNode: 'Sibling node', + insertChildNode: 'Child node', + deleteNode: 'Delete node', + image: 'Image', + icon: 'Icon', + link: 'Link', + note: 'Note', + tag: 'Tag', + summary: 'Summary', + displayOutline: 'Display outline', + baseStyle: 'Base style', + theme: 'Theme', + strusture: 'Strusture', + newFile: 'New file', + openFile: 'Open file', + saveAs: 'Save as', + import: 'Import', + export: 'Export', + shortcutKey: 'Shortcut key', + associativeLine: 'Associative line', + painter: 'Painter', + formula: 'Formula', + attachment: 'Attachment', + outerFrame: 'Outer frame', + more: 'More', + selectFileTip: 'Please select a file', + notSupportTip: + 'Your browser does not support this feature, or the current page is not using the HTTPS protocol', + tip: 'Tip', + editingLocalFileTipFront: 'Currently editing your local【', + editingLocalFileTipEnd: '】file', + fileContentError: 'File content error', + fileOpenFailed: 'File open failed', + defaultFileName: 'Mind map', + creatingTip: 'Creating file', + directory: 'Directory', + newFileTip: + 'Please export the currently edited file before creating a new one, Beware of content loss', + openFileTip: + 'Please export the currently edited file before opening it, Beware of content loss', + ai: 'AI' + }, + edit: { + newFeatureNoticeTitle: 'New feature reminder', + newFeatureNoticeMessage: + 'This update supports node rich text editing, But there are some defects, The most important impact is that the time to export the image is proportional to the number of nodes, Therefore, if you are more dependent on export requirements, you can use【Base style】-【Other config】-【Enable node rich text editing】Set to turn off rich text editing mode.', + root: 'Root node', + splitByWrap: 'Is automatically split nodes based on line breaks?', + tip: 'Tip', + yes: 'Yes', + no: 'No', + exportError: 'Export failed', + dragTip: 'Release here to import the file', + deleteNodeImgTip: 'Are you sure to delete the node image?', + autoOpenNodeRichTextTip: + 'Detected imported rich text content, automatically enabled rich text mode', + localStorageExceededTip: + 'The volume of the mind map you created has exceeded the maximum storage limit allowed by the browser. Please export it immediately, otherwise the data will be lost! It is recommended to download the client for use, as there is no size limit for the client.', + withBg: 'With background image', + tryTipTitle: 'Function trial prompt', + tryTipDesc: + 'This feature is a trial feature in the web version. Please download the client to use it:', + downBaidu: 'Go to Baidu Netdisk to download', + downGithub: 'Download from Github', + painterTip: 'Click on the blank space on the canvas to cancel or end', + createAssociativeLineTip: + 'Click on the blank space on the canvas to cancel', + savingTip: 'Saving in progress, please try again later', + savingTip2: + 'The mind map is empty or in the process of rendering. Please try again later', + savingTip3: 'Successfully saved', + savingTip4: 'Save failed', + defaultInsertSecondLevelNodeText: 'Secondary node', + defaultInsertBelowSecondLevelNodeText: 'Branch topic', + defaultGeneralizationText: 'Summary', + defaultAssociativeLineText: 'Association', + defaultOuterFrameText: 'Outer frame', + pasteImage: 'Paste-image', + notSplit: 'Not split', + keepLevel: 'Keep level', + ignoreLevel: 'Ignore level' + }, + mouseAction: { + tip1: + 'Current: Left click to drag the canvas, right click to box select nodes. Click to switch', + tip2: + 'Current: Left click to box select nodes, right click to drag the canvas. Click to switch' + }, + search: { + searchPlaceholder: 'Enter the search content and press Enter', + replacePlaceholder: 'Please enter replacement content', + replace: 'Replace', + replaceAll: 'Replace all', + cancel: 'Cancel', + noResult: 'No result' + }, + nodeIconSidebar: { + title: 'Icon/Sticker', + icon: 'Icon', + sticker: 'Sticker' + }, + formulaSidebar: { + title: 'Formula', + placeholder: 'Please enter LaTeX syntax', + confirm: 'Confirm', + common: 'Common formulas', + tip: 'Inserting formulas is not supported in non rich text mode' + }, + richTextToolbar: { + bold: 'Bold', + italic: 'Italic', + underline: 'Underline', + strike: 'Strike', + fontFamily: 'Font family', + fontSize: 'Font size', + color: 'Color', + backgroundColor: 'Background color', + removeFormat: 'Clear style', + textAlign: 'Text align' + }, + other: { + loading: 'Loading, please wait...' + }, + sourceCodeEdit: { + sourceCodeTip: + 'It is not recommended to modify the style in rich text mode because it requires synchronous modification of data and HTML structure.', + format: 'Format', + copy: 'Copy', + confirm: 'Complete', + close: 'Close', + formatErrorTip: 'The JSON format is incorrect. Please check and try again', + copyTip: 'Copied to clipboard', + formatTip: 'Format complete' + }, + attachment: { + deleteAttachment: 'Delete attachment', + tip: 'The attachment function is only available on the client side' + }, + nodeOuterFrame: { + outerFrameSetting: 'Outer frame setting', + deleteOuterFrame: 'Delete outer frame', + boxStyle: 'Box style', + boxColor: 'Box color', + fillColor: 'Fill color', + nodeOuterFrameStyle: 'Outer frame style', + outerFrameText: 'Outer frame text', + deleteOuterFrameText: 'Delete outer frame text', + fontFamily: 'Font family', + color: 'Color', + fontSize: 'font size', + radius: 'Radius', + fontBold: 'Font bold', + italic: 'Italic', + lineHeight: 'Line height', + textFillRadius: 'Text fill radius', + textFill: 'Text fill color', + textAlign: 'Text align', + left: 'Left', + center: 'Center', + right: 'Right', + paddingX: 'Padding x', + paddingY: 'Padding y', + constainsChildren: 'Does the outer frame contain child nodes' + }, + nodeTagStyle: { + placeholder: 'Please enter the tag content', + delete: 'Delete this tag' + }, + ai: { + chatTitle: 'AI dialogue', + clearRecords: 'Clear records', + connectFailedTitle: 'Client connection failure prompt', + connectFailedTip: 'Client connection failed, please check:', + connectFailedCheckTip1: + '1. Have you installed the mind mapping client? If not, please click here to install:', + connectFailedCheckTip2: + '2. If the client is installed, please confirm if the client is opened.', + connectFailedCheckTip3: + 'If it has already been installed and started, you can try closing and restarting it.', + connectFailedCheckTip4: + 'After completing the above steps, you can click on:', + baiduNetdisk: 'Baidu Netdisk', + createMindMapTitle: 'One click generation of mind maps', + createTip: + 'Please enter a theme, and AI will generate a mind map based on your theme, such as: Hangzhou weekend travel plan.', + importantTip: + 'Important note: One click generation will overwrite existing data. It is recommended to export the current data first.', + wantModifyAiConfigTip: + 'Do you want to modify the AI configuration? Please click on:', + modifyAIConfiguration: 'Modify AI configuration', + chatInputPlaceholder: 'Enter to send, Shift+Enter to wrap.', + send: 'Send', + stopGenerating: 'Stop generating', + generationFailed: 'Generation failed', + aiGenerationSuccess: 'AI generation completed', + stoppedGenerating: 'Stopped generating', + AIConfiguration: 'AI configuration', + VolcanoArkLargeModelConfiguration: 'Volcano Ark Large Model Configuration:', + configTip: + 'At present, only the Volcano Ark model is supported, and you need to obtain the key yourself. For detailed operation steps, please refer to:', + course: 'Course', + inferenceAccessPoint: 'Inference access point', + mindMappingClientConfiguration: 'Mind mapping client configuration:', + port: 'Port', + cancel: 'Cancel', + confirm: 'Confirm', + close: 'Close', + configSaveSuccessTip: 'Configuration saved successfully', + apiValidateTip: 'Please enter the interface', + keyValidateTip: 'Please enter the API Key', + modelValidateTip: 'Please enter the inference access point', + portValidateTip: 'Please enter the port', + methodValidateTip: 'Please select the request method', + noInputTip: 'Please enter the content', + connectSuccessful: 'Connection successful', + connectFailed: 'connection failed', + connectionDetection: 'Connection detection', + configurationMissing: 'Configuration missing', + aiCreateMsgPrefix: 'Help me write one【', + aiCreateMsgPostfix: + '】. It needs to be returned in Markdown format and can only use two syntax: Markdown title and unordered list. It can support multiple layers of nesting. Just return the content.', + aiCreatePartMsgPrefix: 'I have a theme for【', + aiCreatePartMsgCenter: + '】Can you help me continue writing one of the contents of the mind map【', + aiCreatePartMsgPostfix: '】The subordinate content of the node', + aiCreatePartMsgHelp: + '. Needs to be returned in Markdown format and can only use two syntax: Markdown title and unordered list. It can support multi-level nesting. Just return the content.', + aiCreatePart: 'AI Continuation' + }, + note: { + title: 'Note' + }, + nodeLink: { + linkToNode: 'Link to node', + addReturn: 'Weather to add a backlink', + tip1: 'Please select the node to link to', + tip2: 'Cannot link to oneself', + tip3: 'Link successful', + tip4: 'Delete successful', + tip5: 'The link node does not exist. Weather to delete the link?' + }, + ciod: { + outputConfig: 'Export configuration', + importConfig: 'Import configuration', + tip1: 'Please select a JSON file', + tip2: 'The file content format is incorrect', + tip3: 'Import was successful', + tip4: 'Import failed' + }, + imageUpload: { + tip: 'Click here to select an image, or drag an image here', + failTip: 'Image save failed' + }, + fileSelectList: { + searchPlaceholder: 'Search for file name' + }, + guide: { + btn: 'Close guide', + tip1: + 'To update ![[]] embedded in other documents with preview images, you need to manually click save', + tip2: + 'After activating the node, you can modify the node content here (images, icons...)', + tip3: 'Here you can modify the node style, switch themes/structures, etc.', + tip4: 'Here you can view shortcut information', + tip5: 'Here are some auxiliary functions (mini map, demo mode...)' + }, + previewMode: { + emptyTitle: 'No render able data parsed', + emptyDesc: + 'Currently, only partial markdown syntax can be parsed, such as titles and lists', + close: 'Close' + } +} diff --git a/src/src/lang/index.js b/src/src/lang/index.js new file mode 100644 index 0000000..e7eaea8 --- /dev/null +++ b/src/src/lang/index.js @@ -0,0 +1,11 @@ +import en from './en_us' +import zh from './zh_cn' +import zhtw from './zh_tw' +import vi from './vi_vn' + +export default { + zh, + zhtw, + en, + vi +} diff --git a/src/src/lang/vi_vn.js b/src/src/lang/vi_vn.js new file mode 100644 index 0000000..23b2cc8 --- /dev/null +++ b/src/src/lang/vi_vn.js @@ -0,0 +1,649 @@ +export default { + baseStyle: { + title: 'Kiểu cơ bản', + background: 'Nền', + color: 'Màu sắc', + image: 'Hình ảnh', + imageRepeat: 'Lặp lại hình ảnh', + imagePosition: 'Vị trí hình ảnh', + imageSize: 'Kích thước hình ảnh', + line: 'Đường kẻ', + width: 'Độ rộng', + style: 'Kiểu dáng', + lineRadius: 'Độ cong', + lineOfOutline: 'Đường viền ngoài', + showArrow: 'Hiển thị mũi tên', + nodePadding: 'Đệm nút', + nodeMargin: 'Lề nút', + horizontal: 'Ngang', + vertical: 'Dọc', + maximumWidth: 'Độ rộng tối đa', + maximumHeight: 'Độ cao tối đa', + icon: 'Biểu tượng', + size: 'Kích thước', + level2Node: 'Nút cấp 2', + belowLevel2Node: 'Nút dưới cấp 2', + nodeBorderType: 'Kiểu viền nút', + nodeUseLineStyle: 'Chỉ sử dụng kiểu viền dưới', + otherConfig: 'Cấu hình khác', + associativeLine: 'Đường liên kết', + associativeLineWidth: 'Độ rộng', + associativeLineColor: 'Màu sắc', + associativeLineActiveWidth: 'Độ rộng khi kích hoạt', + associativeLineActiveColor: 'Màu sắc khi kích hoạt', + rootStyle: 'Kiểu kết nối nút gốc', + associativeLineText: 'Văn bản đường liên kết', + fontFamily: 'Phông chữ', + fontSize: 'Cỡ chữ', + rootLineStartPos: 'Vị trí bắt đầu đường nút gốc', + center: 'Trung tâm', + edge: 'Cạnh', + rainbowLines: 'Đường cầu vồng', + notUseRainbowLines: 'Không sử dụng đường cầu vồng', + outerFramePadding: 'Đệm khung ngoài', + associativeLineStyle: 'Kiểu đường liên kết', + builtInBackgroundImage: 'Hình nền tích hợp', + baseStyleConfig: 'Sơ đồ Tư duy Tư duy Cấu hình Kiểu dáng Cơ bản' + }, + setting: { + title: 'Cài đặt', + openPerformance: 'Bật chế độ hiệu suất', + enableFreeDrag: 'Cho phép kéo thả tự do nút (Beta)', + isEnableNodeRichText: 'Cho phép chỉnh sửa văn bản phong phú của nút', + mousewheelAction: 'Hành vi của con lăn chuột', + zoomView: 'Thu phóng', + moveViewUpDown: 'Di chuyển lên xuống', + mousewheelZoomActionReverse: 'Thu phóng con lăn chuột', + mousewheelZoomActionReverse1: 'Thu nhỏ tiến tới và phóng to lùi lại', + mousewheelZoomActionReverse2: 'Phóng to tiến tới và thu nhỏ lùi lại', + createNewNodeBehavior: 'Hành vi tạo nút mới', + default: 'Kích hoạt nút mới và chỉnh sửa', + notActive: 'Không kích hoạt nút mới', + activeOnly: 'Chỉ kích hoạt nút mới mà không chỉnh sửa', + openRealtimeRenderOnNodeTextEdit: + 'Bật hiệu ứng kết xuất thời gian thực cho chỉnh sửa văn bản', + isShowScrollbar: 'Hiển thị thanh cuộn', + openBlankMode: 'Mở chế độ trống cho trình diễn', + watermark: 'Hình mờ', + showWatermark: 'Hiển thị hình mờ', + onlyExport: 'Chỉ xuất', + watermarkDefaultText: 'Văn bản hình mờ', + watermarkText: 'Văn bản hình mờ', + watermarkTextColor: 'Màu văn bản', + watermarkLineSpacing: 'Khoảng cách dòng', + watermarkTextSpacing: 'Khoảng cách văn bản', + watermarkAngle: 'Góc', + watermarkTextOpacity: 'Độ mờ văn bản', + watermarkTextFontSize: 'Cỡ chữ', + belowNode: 'Hiển thị nút bên dưới', + alwaysShowExpandBtn: 'Luôn hiển thị nút mở rộng', + enableAutoEnterTextEditWhenKeydown: + 'Tự động vào chế độ chỉnh sửa văn bản khi nhấn phím', + confirm: 'Xác nhận', + cancel: 'Hủy', + changeRichTextTip: + 'Thao tác này sẽ xóa tất cả lịch sử chỉnh sửa và sửa đổi dữ liệu sơ đồ tư duy. Bạn có muốn tiếp tục?', + changeRichTextTip2: 'Bạn có muốn chuyển sang chế độ văn bản phong phú?', + changeRichTextTip3: + 'Bạn có muốn chuyển sang chế độ không phải văn bản phong phú?', + imgTextMargin: 'Khoảng cách giữa hình ảnh và văn bản nút', + textContentMargin: 'Khoảng cách nội dung nút', + enableInheritAncestorLineStyle: + 'Kiểu kết nối nút kế thừa kiểu của nút tổ tiên', + isShowBottomToolbar: 'Hiện thanh công cụ dưới cùng', + rootEnableUnExpand: + 'Liệu root node có cho phép thu hồi cấp dưới hay không?', + settingConfig: 'Thiết lập Mind Map', + title1: 'Nút', + title2: 'Chỉnh sửa', + title3: 'Hiển thị', + title4: 'Khác', + sameNodeAlignInitWidth: 'Các nút cùng cấp căn chỉnh chiều rộng ban đầu', + enableFreeDragTip: + 'Sau khi tắt cài đặt, nếu muốn khôi phục bố cục mặc định, vui lòng nhấp chuột phải vào vùng vẽ và chọn menu - [Tổ chức lại bố cục tự động]', + isUseSameNodeAlignTip1: + '1. Sau khi chỉnh sửa nút, chiều rộng sẽ không tự động căn chỉnh; cần thủ công nhấp vào menu chuột phải vùng vẽ - [Căn chỉnh tự động các nút cùng cấp]', + isUseSameNodeAlignTip2: + '2. Sau khi tắt cài đặt, nếu muốn khôi phục chiều rộng mặc định, vui lòng nhấp chuột phải vào vùng vẽ và chọn menu - [Xóa toàn bộ chiều rộng tùy chỉnh của các nút]', + openRealtimeRenderOnNodeTextEditTip: + 'Bật tính năng này có thể gây giảm hiệu suất; khuyến nghị tắt khi số lượng nút nhiều', + openPerformanceTip: + 'Nếu số lượng nút nhiều, có thể thử bật chế độ hiệu suất để tăng tốc độ hiển thị' + }, + color: { + moreColor: 'Thêm màu' + }, + contextmenu: { + insertNode: 'Chèn nút', + insertSiblingNode: 'Node tương đương', + insertChildNode: 'Các nút con', + insertParentNode: 'Nút cha', + insertSummary: 'Giới thiệu', + moveUpNode: 'Di chuyển nút lên', + moveDownNode: 'Di chuyển nút xuống', + deleteNode: 'Xóa nút', + deleteCurrentNode: 'Chỉ xóa nút hiện tại', + copyNode: 'Sao chép nút', + cutNode: 'Cắt nút', + pasteNode: 'Dán nút', + backCenter: 'Quay lại nút gốc', + expandAll: 'Mở rộng tất cả', + unExpandAll: 'Thu gọn tất cả', + expandTo: 'Mở rộng đến', + arrangeLayout: 'Sắp xếp bố cục', + level1: 'Cấp 1', + level2: 'Cấp 2', + level3: 'Cấp 3', + level4: 'Cấp 4', + level5: 'Cấp 5', + level6: 'Cấp 6', + zenMode: 'Chế độ zen', + fitCanvas: 'Vừa với khung vẽ', + removeImage: 'Xóa hình ảnh', + removeHyperlink: 'Xóa liên kết', + removeNote: 'Xóa ghi chú', + removeCustomStyles: 'Xóa kiểu tùy chỉnh', + removeAllNodeCustomStyles: 'Xóa tất cả kiểu tùy chỉnh của nút', + exportNodeToPng: 'Xuất nút thành png', + copyToClipboard: 'Sao chép vào clipboard', + copyToSmm: 'SMM', + copyToJson: 'JSON', + copyToMarkdown: 'Markdown', + copyToTxt: 'Txt', + copyToPng: 'Png', + copySuccess: 'Sao chép thành công', + copyFail: 'Sao chép thất bại', + number: 'Đánh số các nút con', + expandNodeChild: 'Mở rộng tất cả nút con', + unExpandNodeChild: 'Thu gọn tất cả nút con', + addToDo: 'Thêm việc cần làm', + removeToDo: 'Xóa việc cần làm', + aiCreate: 'AI Tiếp tục', + modifyNodeLink: 'Sửa liên kết nút', + linkToNode: 'Liên kết đến nút', + removeNodeLink: 'Xóa liên kết nút', + nodeAlgin: 'Căn chỉnh một nút cùng cấp', + removeCustomWidth: 'Loại bỏ chiều rộng tùy chỉnh', + copyAsInternalUrl: 'Sao chép như một chuỗi bên trong', + removeAllCustomWidth: + 'Loại bỏ tất cả các nút chiều rộng tùy chỉnh với một cú nhấp chuột', + download: 'Tải xuống', + copyNodeToTxt: 'Sao chép thành văn bản thuần túy' + }, + count: { + words: 'Từ', + nodes: 'Nút' + }, + dialog: { + cancel: 'Hủy', + confirm: 'Xác nhận' + }, + export: { + title: 'Xuất', + filename: 'Tên tệp', + include: 'Bao gồm cấu hình như chủ đề và cấu trúc', + dedicatedFile: 'Tệp chuyên dụng', + jsonFile: 'Tệp json', + imageFile: 'Tệp hình ảnh', + svgFile: 'Tệp svg', + pdfFile: 'Tệp pdf', + markdownFile: 'Tệp markdown', + isTransparent: 'Nền là trong suốt', + transformingDomToImages: 'Đang chuyển đổi nút: ', + notifyTitle: 'Thông tin', + notifyMessage: + 'Nếu tải xuống không được kích hoạt, hãy kiểm tra xem có bị chặn bởi trình duyệt hay không', + paddingX: 'Đệm x', + paddingY: 'Đệm y', + useMultiPageExport: 'Xuất nhiều trang', + defaultFileName: 'Sơ đồ tư duy', + addFooterTextPlaceholder: 'Ví dụ: Từ simple-mind-map', + addFooterText: 'Thêm văn bản ở chân trang', + desc: 'Mô tả', + options: 'Tùy chọn', + isFitBg: 'Hiển thị đầy đủ hình nền (có hiệu lực khi dùng hình nền)', + format: 'Định dạng' + }, + fullscreen: { + fullscreenShow: 'Hiển thị toàn màn hình', + fullscreenEdit: 'Chỉnh sửa toàn màn hình' + }, + demonstrate: { + demonstrate: 'Vào chế độ trình diễn' + }, + import: { + title: 'Nhập', + selectFile: 'Chọn tệp', + support: 'Hỗ trợ', + file: 'tệp', + pleaseSelect: 'Vui lòng chọn', + maxFileNum: 'Nhiều nhất chọn một tệp', + notSelectTip: 'Vui lòng chọn tệp để nhập', + fileContentError: 'Nội dung tệp không chính xác', + importSuccess: 'Nhập thành công', + fileParsingFailed: 'Phân tích tệp thất bại', + xmindCanvasSelectDialogTitle: 'Chọn canvas để nhập', + mdImportDialogTitle: 'Dán nội dung Markdown để nhập', + mdPlaceholder: 'Vui lòng nhập nội dung ở định dạng Markdown', + mdEmptyTip: 'Nội dung không được trống', + mdImportFailTip: 'Nhập thất bại, không phân tích cú pháp để nhập nội dung. Chỉ hỗ trợ cú pháp như tiêu đề, danh sách, v.v.', + rootNodeName: 'Nút gốc', + importTip: 'Trong đó .mm, .xlsx thành viên có sẵn', + dragTip: 'Kéo tập tin cục bộ kho hoặc máy tính đến đây', + warningTip: 'Lưu ý: Việc nhập sẽ ghi đè lên nội dung hiện có và không thể khôi phục, hãy sao lưu trước!' + }, + navigatorToolbar: { + openMiniMap: 'Mở bản đồ thu nhỏ', + closeMiniMap: 'Đóng bản đồ thu nhỏ', + readonly: 'Chuyển sang chế độ chỉ đọc', + edit: 'Chuyển sang chế độ chỉnh sửa', + backToRoot: 'Quay lại nút gốc', + changeSourceCodeEdit: 'Chuyển sang chế độ chỉnh sửa mã nguồn', + shortcutKeys: 'Phím tắt', + ai: 'Đối thoại AI', + downloadClient: 'Tải về khách hàng', + site: 'Trang web chính thức', + current: 'Hiện tại:', + downloadDesc: 'Có thể download từ địa chỉ sau:', + searchReplace: 'Tìm kiếm thay thế', + exitDarkMode: 'Thoát khỏi Dark Mode', + darkMode: 'Chuyển sang chế độ Dark Mode', + darkModeFailTip: + 'Chuyển đổi không thành công, hiện đang theo chế độ obsidian', + export: 'Xuất', + help: 'Trợ giúp' + }, + nodeHyperlink: { + title: 'Liên kết', + link: 'Href', + name: 'Tên', + tabName1: 'Địa chỉ web thông thường', + tabName2: 'Tài liệu Obsidian', + tabName3: 'Tập tin cục bộ', + selectLocalFile: 'Chọn tập tin cục bộ', + none: 'Không', + delete: 'Xoá', + add: 'Thêm', + tip1: 'Vui lòng nhập địa chỉ liên kết', + tip2: 'Chèn không thành công, tập tin không tồn tại', + tip3: 'Vui lòng chọn tập tin cục bộ', + tip4: 'Tải tập tin lên Vault không thành công', + tip5: 'Chèn không thành công' + }, + nodeIcon: { + title: 'Biểu tượng' + }, + nodeImage: { + title: 'Hình ảnh', + imgTitle: 'Tiêu đề', + tip: + 'Mẹo: Nếu bạn muốn dán hình ảnh, bạn không cần phải mở cửa sổ bật, chỉ cần nhấn Ctrl+v để dán sau khi kích hoạt nút.', + method1: 'Cách 1', + method2: 'Cách 2', + tip2: 'Vui lòng nhập địa chỉ ảnh', + optional: 'Tùy chọn', + selectLocal: 'Chọn từ địa phương', + selectVault: 'Chọn Vault', + selectUrl: 'Hình ảnh web', + imgTitle: 'Tiêu đề ảnh (tùy chọn)' + }, + nodeNote: { + title: 'Ghi chú' + }, + nodeTag: { + title: 'Thẻ', + addTip: 'Vui lòng nhấn Enter để thêm tối đa 5 tab', + add: 'Thêm' + }, + outline: { + title: 'Dàn bài', + nodeDefaultText: 'Nhánh nút', + print: 'In', + fullscreen: 'Toàn màn hình', + tip1: 'Chèn nút huynh đệ:', + tip2: 'Nút xuống cấp:', + tip3: 'Nâng cấp nút:', + tip4: 'Xóa nút:', + tip5: 'Giữ nút để kéo' + }, + scale: { + zoomIn: 'Phóng to', + zoomOut: 'Thu nhỏ' + }, + shortcutKey: { + title: 'Phím tắt' + }, + strusture: { + title: 'Cấu trúc' + }, + style: { + title: 'Kiểu nút', + normal: 'Bình thường', + active: 'Kích hoạt', + text: 'Văn bản', + fontFamily: 'Phông chữ', + fontSize: 'Cỡ chữ', + color: 'Màu sắc', + addFontWeight: 'Thêm độ đậm chữ', + italic: 'Nghiêng', + textDecoration: 'Trang trí văn bản', + underline: 'Gạch dưới', + none: 'Không', + lineThrough: 'Gạch ngang', + overline: 'Gạch trên', + border: 'Viền', + style: 'Kiểu dáng', + width: 'Độ rộng', + borderRadius: 'Độ cong viền', + background: 'Nền', + shape: 'Hình dạng', + line: 'Đường kẻ', + nodePadding: 'Đệm nút', + horizontal: 'Ngang', + vertical: 'Dọc', + gradientStyle: 'Gradient', + startColor: 'Bắt đầu', + endColor: 'Kết thúc', + arrowDir: 'Hướng mũi tên', + arrowDirStart: 'Bắt đầu', + arrowDirEnd: 'Kết thúc', + direction: 'Hướng', + selectNodeTip: 'Vui lòng chọn một nút', + openLineFlow: 'Mở luồng đường kẻ', + lineFlowDuration: 'Thời lượng luồng đường kẻ', + forward: 'Tiến tới', + reverse: 'Đảo ngược', + img: 'Hình ảnh', + placement: 'Vị trí', + top: 'Trên', + bottom: 'Dưới', + left: 'Trái', + right: 'Phải', + tag: 'Thẻ' + }, + theme: { + title: 'Chủ đề', + classics: 'Cổ điển', + dark: 'Tối', + simple: 'Đơn giản', + coverTip: 'Bạn hiện đã tùy chỉnh kiểu cơ bản, bạn có muốn ghi đè không?', + tip: 'Mẹo', + cover: 'Ghi đè', + reserve: 'Giữ lại' + }, + toolbar: { + undo: 'Hoàn tác', + redo: 'Làm lại', + insertSiblingNode: 'Nút cùng cấp', + insertChildNode: 'Nút con', + deleteNode: 'Xóa nút', + image: 'Hình ảnh', + icon: 'Biểu tượng', + link: 'Liên kết', + note: 'Ghi chú', + tag: 'Thẻ', + summary: 'Tóm tắt', + displayOutline: 'Hiển thị dàn bài', + baseStyle: 'Kiểu cơ bản', + theme: 'Chủ đề', + strusture: 'Cấu trúc', + newFile: 'Tệp mới', + openFile: 'Mở tệp', + saveAs: 'Lưu thành', + import: 'Nhập', + export: 'Xuất', + shortcutKey: 'Phím tắt', + associativeLine: 'Đường liên kết', + painter: 'Bút vẽ', + formula: 'Công thức', + attachment: 'Đính kèm', + outerFrame: 'Khung ngoài', + more: 'Thêm', + selectFileTip: 'Vui lòng chọn một tệp', + notSupportTip: + 'Trình duyệt của bạn không hỗ trợ tính năng này, hoặc trang hiện tại không sử dụng giao thức HTTPS', + tip: 'Mẹo', + editingLocalFileTipFront: 'Hiện đang chỉnh sửa tệp cục bộ【', + editingLocalFileTipEnd: '】của bạn', + fileContentError: 'Lỗi nội dung tệp', + fileOpenFailed: 'Mở tệp thất bại', + defaultFileName: 'Sơ đồ tư duy', + creatingTip: 'Đang tạo tệp', + directory: 'Thư mục', + newFileTip: + 'Vui lòng xuất tệp đang chỉnh sửa trước khi tạo mới, Cẩn thận mất nội dung', + openFileTip: + 'Vui lòng xuất tệp đang chỉnh sửa trước khi mở tệp, Cẩn thận mất nội dung', + ai: 'AI' + }, + edit: { + newFeatureNoticeTitle: 'Nhắc nhở tính năng mới', + newFeatureNoticeMessage: + 'Cập nhật này hỗ trợ chỉnh sửa văn bản phong phú cho nút, Nhưng có một số thiếu sót, Tác động quan trọng nhất là thời gian xuất hình ảnh tỷ lệ thuận với số lượng nút, Do đó, nếu bạn phụ thuộc nhiều vào yêu cầu xuất, bạn có thể sử dụng【Kiểu cơ bản】-【Cấu hình khác】-【Cho phép chỉnh sửa văn bản phong phú của nút】Đặt để tắt chế độ chỉnh sửa văn bản phong phú.', + root: 'Nút gốc', + splitByWrap: 'Tự động tách nút dựa trên ngắt dòng?', + tip: 'Mẹo', + yes: 'Có', + no: 'Không', + exportError: 'Xuất thất bại', + dragTip: 'Thả ở đây để nhập tệp', + deleteNodeImgTip: 'Bạn có chắc xóa hình ảnh nút?', + autoOpenNodeRichTextTip: + 'Phát hiện nội dung văn bản phong phú nhập vào, tự động bật chế độ văn bản phong phú', + localStorageExceededTip: + 'Dung lượng sơ đồ tư duy bạn tạo đã vượt quá giới hạn lưu trữ tối đa cho phép của trình duyệt. Vui lòng xuất ngay lập tức, nếu không dữ liệu sẽ bị mất! Nên tải xuống ứng dụng khách để sử dụng, vì không có giới hạn kích thước khi sử dụng ứng dụng khách.', + withBg: 'Với Background', + tryTipTitle: 'Mẹo dùng thử chức năng', + tryTipDesc: + 'Chức năng này là chức năng dùng thử trong phiên bản web, xin vui lòng tải xuống để khách hàng sử dụng:', + downBaidu: 'Tải xuống Baidu', + downGithub: 'Tải xuống Github', + painterTip: 'Nhấp vào khoảng trống Canvas để hủy hoặc kết thúc', + createAssociativeLineTip: 'Nhấp vào Canvas Blank để hủy', + savingTip: 'Đang lưu, vui lòng thử lại sau', + savingTip2: 'Bản đồ tư duy trống hoặc đang hiển thị, hãy thử lại sau', + savingTip3: 'Lưu thành công', + savingTip4: 'Lỗi lưu', + defaultInsertSecondLevelNodeText: 'Nút thứ cấp', + defaultInsertBelowSecondLevelNodeText: 'Chủ đề chi nhánh', + defaultGeneralizationText: 'Giới thiệu', + defaultAssociativeLineText: 'Liên kết', + defaultOuterFrameText: 'Khung ngoài', + pasteImage: 'Dán-hình-ảnh', + notSplit: 'Không phân chia', + keepLevel: 'Cấp độ dự trữ', + ignoreLevel: 'Bỏ qua phân cấp' + }, + mouseAction: { + tip1: + 'Hiện tại: Nhấp chuột trái để kéo canvas, nhấp chuột phải để chọn nút theo hộp. Nhấn để chuyển đổi', + tip2: + 'Hiện tại: Nhấp chuột trái để chọn nút theo hộp, nhấp chuột phải để kéo canvas. Nhấn để chuyển đổi' + }, + search: { + searchPlaceholder: 'Nhập nội dung tìm kiếm và nhấn Enter', + replacePlaceholder: 'Vui lòng nhập nội dung thay thế', + replace: 'Thay thế', + replaceAll: 'Thay thế tất cả', + cancel: 'Hủy', + noResult: 'Không có kết quả' + }, + nodeIconSidebar: { + title: 'Biểu tượng/Sticker', + icon: 'Biểu tượng', + sticker: 'Sticker' + }, + formulaSidebar: { + title: 'Công thức', + placeholder: 'Vui lòng nhập cú pháp LaTeX', + confirm: 'Xác nhận', + common: 'Công thức phổ biến', + tip: 'Không hỗ trợ chèn công thức trong chế độ không phải văn bản phong phú' + }, + richTextToolbar: { + bold: 'Đậm', + italic: 'Nghiêng', + underline: 'Gạch dưới', + strike: 'Gạch ngang', + fontFamily: 'Phông chữ', + fontSize: 'Cỡ chữ', + color: 'Màu sắc', + backgroundColor: 'Màu nền', + removeFormat: 'Xóa định dạng', + textAlign: 'Căn chỉnh văn bản' + }, + other: { + loading: 'Đang tải, vui lòng đợi...' + }, + sourceCodeEdit: { + sourceCodeTip: + 'Không nên sửa kiểu trong chế độ văn bản phong phú vì cần phải đồng bộ sửa đổi dữ liệu và cấu trúc HTML.', + format: 'Định dạng', + copy: 'Sao chép', + confirm: 'Hoàn thành', + close: 'Đóng', + formatErrorTip: + 'Định dạng JSON không chính xác. Vui lòng kiểm tra và thử lại', + copyTip: 'Đã sao chép vào clipboard', + formatTip: 'Định dạng hoàn thành' + }, + attachment: { + deleteAttachment: 'Xóa đính kèm', + tip: 'Chức năng đính kèm chỉ có sẵn ở phía máy khách' + }, + nodeOuterFrame: { + outerFrameSetting: 'Cài đặt khung ngoài', + deleteOuterFrame: 'Xóa khung ngoài', + boxStyle: 'Kiểu hộp', + boxColor: 'Màu hộp', + fillColor: 'Màu lấp đầy', + nodeOuterFrameStyle: 'Kiểu khung ngoài', + outerFrameText: 'Văn bản khung ngoài', + deleteOuterFrameText: 'Xóa văn bản khung ngoài', + fontFamily: 'Phông chữ', + color: 'Màu sắc', + fontSize: 'Cỡ chữ', + radius: 'Độ cong', + fontBold: 'Đậm chữ', + italic: 'Nghiêng', + lineHeight: 'Chiều cao dòng', + textFillRadius: 'Độ cong lấp đầy văn bản', + textFill: 'Màu lấp đầy văn bản', + textAlign: 'Căn chỉnh văn bản', + left: 'Trái', + center: 'Giữa', + right: 'Phải', + paddingX: 'Đệm x', + paddingY: 'Đệm y', + constainsChildren: 'Hộp bên ngoài có chứa các nút con hay không' + }, + nodeTagStyle: { + placeholder: 'Vui lòng nhập nội dung thẻ', + delete: 'Xóa thẻ này' + }, + ai: { + chatTitle: 'Đối thoại AI', + clearRecords: 'Xóa lịch sử', + connectFailedTitle: 'Thông báo lỗi kết nối máy khách', + connectFailedTip: 'Kết nối máy khách thất bại, vui lòng kiểm tra:', + connectFailedCheckTip1: + '1. Bạn đã cài đặt ứng dụng khách sơ đồ tư duy chưa? Nếu chưa, vui lòng nhấp vào đây để cài đặt:', + connectFailedCheckTip2: + '2. Nếu đã cài đặt ứng dụng khách, vui lòng xác nhận xem ứng dụng khách đã được mở chưa.', + connectFailedCheckTip3: + 'Nếu đã được cài đặt và khởi động, bạn có thể thử đóng và khởi động lại nó.', + connectFailedCheckTip4: + 'Sau khi hoàn thành các bước trên, bạn có thể nhấp vào:', + baiduNetdisk: 'Baidu Netdisk', + createMindMapTitle: 'Tạo sơ đồ tư duy một nhấp', + createTip: + 'Vui lòng nhập chủ đề, và AI sẽ tạo sơ đồ tư duy dựa trên chủ đề của bạn, chẳng hạn như: Kế hoạch du lịch cuối tuần Hà Nội.', + importantTip: + 'Lưu ý quan trọng: Tạo một nhấp sẽ ghi đè dữ liệu hiện có. Nên xuất dữ liệu hiện tại trước.', + wantModifyAiConfigTip: 'Bạn muốn sửa đổi cấu hình AI? Vui lòng nhấp vào:', + modifyAIConfiguration: 'Sửa đổi cấu hình AI', + chatInputPlaceholder: 'Nhấn Enter để gửi, Shift+Enter để xuống dòng.', + send: 'Gửi', + stopGenerating: 'Dừng tạo', + generationFailed: 'Tạo thất bại', + aiGenerationSuccess: 'Tạo AI hoàn thành', + stoppedGenerating: 'Đã dừng tạo', + AIConfiguration: 'Cấu hình AI', + VolcanoArkLargeModelConfiguration: 'Cấu hình mô hình lớn Volcano Ark:', + configTip: + 'Hiện tại, chỉ hỗ trợ mô hình Volcano Ark, và bạn cần tự mình lấy khóa. Để biết các bước thực hiện chi tiết, vui lòng tham khảo:', + course: 'Khóa học', + inferenceAccessPoint: 'Điểm truy cập suy luận', + mindMappingClientConfiguration: 'Cấu hình ứng dụng khách sơ đồ tư duy:', + port: 'Cổng', + cancel: 'Hủy', + confirm: 'Xác nhận', + close: 'Đóng', + configSaveSuccessTip: 'Lưu cấu hình thành công', + apiValidateTip: 'Vui lòng nhập giao diện', + keyValidateTip: 'Vui lòng nhập API Key', + modelValidateTip: 'Vui lòng nhập điểm truy cập suy luận', + portValidateTip: 'Vui lòng nhập cổng', + methodValidateTip: 'Vui lòng chọn phương thức yêu cầu', + noInputTip: 'Vui lòng nhập nội dung', + connectSuccessful: 'Kết nối thành công', + connectFailed: 'Kết nối thất bại', + connectionDetection: 'Phát hiện kết nối', + configurationMissing: 'Thiếu cấu hình', + aiCreateMsgPrefix: 'Giúp tôi viết một【', + aiCreateMsgPostfix: + '】. Nó cần được trả về ở định dạng Markdown và chỉ có thể sử dụng hai cú pháp: tiêu đề Markdown và danh sách không có thứ tự. Nó có thể hỗ trợ nhiều lớp lồng nhau. Chỉ cần trả về nội dung.', + aiCreatePartMsgPrefix: 'Tôi có một chủ đề là【', + aiCreatePartMsgCenter: + '】Bạn có thể giúp tôi tiếp tục viết một trong những nội dung của sơ đồ tư duy【', + aiCreatePartMsgPostfix: '】Nội dung phụ thuộc của nút', + aiCreatePartMsgHelp: + '. Cần được trả về ở định dạng Markdown và chỉ có thể sử dụng hai cú pháp: tiêu đề Markdown và danh sách không có thứ tự. Nó có thể hỗ trợ lồng ghép nhiều cấp độ. Chỉ cần trả về nội dung.', + aiCreatePart: 'AI Tiếp tục' + }, + note: { + title: 'Ghi chú' + }, + nodeLink: { + linkToNode: 'Liên kết đến nút', + addReturn: 'Thêm liên kết trở lại', + tip1: 'Vui lòng chọn nút để liên kết đến', + tip2: 'Không thể liên kết đến chính mình', + tip3: 'Liên kết thành công', + tip4: 'Xóa thành công', + tip5: 'Nút liên kết không tồn tại. Có nên xóa liên kết không?' + }, + ciod: { + outputConfig: 'Cấu hình xuất', + importConfig: 'Cấu hình nhập', + tip1: 'Vui lòng chọn file json', + tip2: 'Định dạng nội dung tập tin không chính xác', + tip3: 'Nhập thành công', + tip4: 'Nhập thất bại' + }, + imageUpload: { + tip: 'Nhấn vào đây để chọn ảnh hoặc kéo ảnh đến đây', + failTip: 'Hình ảnh tải lên thất bại' + }, + fileSelectList: { + searchPlaceholder: 'Tìm kiếm tên tập tin' + }, + guide: { + btn: 'Đóng hướng dẫn', + tip1: + 'Để cập nhật ![[]] được nhúng trong các tài liệu khác với hình ảnh xem trước, bạn cần phải nhấn lại lưu', + tip2: + 'Sau khi kích hoạt nút, bạn có thể sửa đổi nội dung nút ở đây (hình ảnh, biểu tượng...)', + tip3: + 'Đây là nơi bạn có thể sửa đổi kiểu nút, chuyển đổi chủ đề/kiến trúc, v.v.', + tip4: 'Đây là nơi bạn có thể xem thông tin ngắn gọn về các phím tắt', + tip5: + 'Đây là nơi bạn có thể tìm thấy các chức năng trợ giúp (bản đồ nhỏ, chế độ xem...)' + }, + previewMode: { + emptyTitle: 'Chưa giải quyết dữ liệu có thể kết xuất', + emptyDesc: + 'Hiện tại chỉ có thể phân tích một số cú pháp markdown, chẳng hạn như tiêu đề và danh sách.', + close: 'Đóng cửa' + } +} diff --git a/src/src/lang/zh_cn.js b/src/src/lang/zh_cn.js new file mode 100644 index 0000000..d090cce --- /dev/null +++ b/src/src/lang/zh_cn.js @@ -0,0 +1,622 @@ +export default { + baseStyle: { + title: '基础样式', + background: '背景', + color: '颜色', + image: '图片', + imageRepeat: '图片重复', + imagePosition: '图片位置', + imageSize: '图片大小', + line: '连线', + width: '粗细', + style: '风格', + lineRadius: '圆角大小', + lineOfOutline: '概要的连线', + showArrow: '显示箭头', + nodePadding: '节点内边距', + nodeMargin: '节点外边距', + horizontal: '水平', + vertical: '垂直', + maximumWidth: '显示的最大宽度', + maximumHeight: '显示的最大高度', + icon: '图标', + size: '大小', + level2Node: '二级节点', + belowLevel2Node: '三级及以下节点', + nodeBorderType: '节点边框风格', + nodeUseLineStyle: '使用只有底边框的风格', + associativeLine: '关联线', + associativeLineWidth: '粗细', + associativeLineColor: '颜色', + associativeLineActiveWidth: '激活粗细', + associativeLineActiveColor: '激活颜色', + rootStyle: '根节点连线风格', + associativeLineText: '关联线文字', + fontFamily: '字体', + fontSize: '字号', + rootLineStartPos: '根节点连线起始位置', + center: '中心', + edge: '边缘', + rainbowLines: '彩虹线条', + notUseRainbowLines: '不使用彩虹线条', + outerFramePadding: '外框内边距', + associativeLineStyle: '关联线样式', + builtInBackgroundImage: '内置背景图片', + baseStyleConfig: '思绪思维导图基础样式配置' + }, + setting: { + title: '设置', + openPerformance: '性能模式(Beta)', + enableFreeDrag: '开启节点自由拖拽', + isEnableNodeRichText: '开启节点富文本编辑', + mousewheelAction: '鼠标滚轮行为', + zoomView: '缩放视图', + moveViewUpDown: '上下移动视图', + mousewheelZoomActionReverse: '鼠标滚轮缩放', + mousewheelZoomActionReverse1: '向前缩小向后放大', + mousewheelZoomActionReverse2: '向前放大向后缩小', + createNewNodeBehavior: '创建新节点的行为', + default: '激活新节点及进入编辑', + notActive: '不激活新节点', + activeOnly: '只激活新节点,不进入编辑', + openRealtimeRenderOnNodeTextEdit: '开启文本编辑实时渲染效果', + isShowScrollbar: '显示滚动条', + openBlankMode: '开启演示模式的填空功能', + watermark: '水印', + showWatermark: '显示水印', + watermarkDefaultText: '水印文字', + onlyExport: '仅在导出时显示', + watermarkText: '水印文字', + watermarkTextColor: '文字颜色', + watermarkLineSpacing: '水印行间距', + watermarkTextSpacing: '水印文字间距', + watermarkAngle: '旋转角度', + watermarkTextOpacity: '文字透明度', + watermarkTextFontSize: '文字字号', + belowNode: '显示在节点下方', + alwaysShowExpandBtn: '一直显示展开收起按钮', + enableAutoEnterTextEditWhenKeydown: '键盘输入时自动进入文本编辑', + enableInheritAncestorLineStyle: '节点连线样式继承祖先节点的样式', + confirm: '确定', + cancel: '取消', + changeRichTextTip: + '该操作会清空所有历史修改记录,并且修改思维导图数据,是否继续?', + changeRichTextTip2: '是否切换为富文本模式?', + changeRichTextTip3: '是否切换为非富文本模式?', + imgTextMargin: '节点图片和文本间隔', + textContentMargin: '节点各种内容间隔', + isShowBottomToolbar: '显示底部工具栏', + rootEnableUnExpand: '根节点允许收起下级', + settingConfig: '思绪思维导图设置', + title1: '节点', + title2: '编辑', + title3: '显示', + title4: '其他', + sameNodeAlignInitWidth: '同级节点对齐初始宽度', + enableFreeDragTip: + '关闭设置后,如果要恢复默认布局,请点击画布右键菜单-【一键整理布局】', + isUseSameNodeAlignTip1: + '1.节点编辑后宽度不会自动对齐,需手动点击画布右键菜单-【一键同级节点对齐】', + isUseSameNodeAlignTip2: + '2.关闭设置后,如果要恢复默认宽度,请点击画布右键菜单-【一键去除所有节点自定义宽度】', + openRealtimeRenderOnNodeTextEditTip: + '开启后可能会导致性能下降,建议在节点数量比较多时关闭', + openPerformanceTip: '如果节点数量比较多,可以尝试开启性能模式加快渲染' + }, + color: { + moreColor: '更多颜色' + }, + contextmenu: { + insertNode: '插入节点', + insertSiblingNode: '同级节点', + insertChildNode: '子节点', + insertParentNode: '父节点', + insertSummary: '概要', + moveUpNode: '上移节点', + moveDownNode: '下移节点', + deleteNode: '删除节点', + deleteCurrentNode: '仅删除当前节点', + copyNode: '复制节点', + cutNode: '剪切节点', + pasteNode: '粘贴节点', + backCenter: '回到根节点', + expandAll: '展开所有', + unExpandAll: '收起所有', + expandTo: '展开到', + arrangeLayout: '一键整理布局', + level1: '一级主题', + level2: '二级主题', + level3: '三级主题', + level4: '四级主题', + level5: '五级主题', + level6: '六级主题', + zenMode: '禅模式', + fitCanvas: '适应画布', + removeImage: '移除图片', + removeHyperlink: '移除超链接', + removeNote: '移除备注', + removeCustomStyles: '一键去除自定义样式', + removeAllNodeCustomStyles: '一键去除所有节点自定义样式', + exportNodeToPng: '导出该节点为图片', + copyToClipboard: '复制到剪贴板', + copyToSmm: 'SMM', + copyToJson: 'JSON', + copyToMarkdown: 'Markdown', + copyToTxt: 'Txt', + copyToPng: '图片', + copySuccess: '复制成功', + copyFail: '复制失败', + number: '编号其子节点', + expandNodeChild: '展开所有下级节点', + unExpandNodeChild: '收起所有下级节点', + addToDo: '添加待办', + removeToDo: '删除待办', + aiCreate: 'AI续写', + modifyNodeLink: '修改节点链接', + linkToNode: '链接到指定节点', + removeNodeLink: '删除节点链接', + nodeAlgin: '一键同级节点对齐', + removeCustomWidth: '去除自定义宽度', + copyAsInternalUrl: '复制为ob内链', + removeAllCustomWidth: '一键去除所有节点自定义宽度', + download: '下载到本地', + copyNodeToTxt: '复制为纯文本' + }, + count: { + words: '字数', + nodes: '节点' + }, + dialog: { + cancel: '取消', + confirm: '确定' + }, + export: { + title: '导出', + filename: '导出文件名称', + include: '包含主题、结构等配置数据', + dedicatedFile: '专有文件', + jsonFile: 'json文件', + imageFile: '图片文件', + svgFile: 'svg文件', + pdfFile: 'pdf文件', + markdownFile: 'markdown文件', + isTransparent: '背景透明', + transformingDomToImages: '正在转换节点:', + notifyTitle: '消息', + notifyMessage: '如果没有触发下载,请检查是否被浏览器拦截了', + paddingX: '水平内边距', + paddingY: '垂直内边距', + useMultiPageExport: '多页导出', + defaultFileName: '思维导图', + addFooterText: '底部添加文字', + addFooterTextPlaceholder: '比如:来自simple-mind-map', + desc: '说明', + options: '选项', + isFitBg: '显示完整背景图片(使用了背景图片时生效)', + format: '格式', + confirm: '导出' + }, + fullscreen: { + fullscreenShow: '全屏查看', + fullscreenEdit: '全屏编辑' + }, + demonstrate: { + demonstrate: '进入演示模式' + }, + import: { + title: '导入', + selectFile: '选取文件', + support: '支持', + file: '文件', + pleaseSelect: '请选择', + maxFileNum: '最多只能选择一个文件', + notSelectTip: '请选择要导入的文件', + fileContentError: '文件内容有误', + importSuccess: '导入成功', + fileParsingFailed: '文件解析失败', + xmindCanvasSelectDialogTitle: '选择要导入的画布', + mdImportDialogTitle: '粘贴Markdown内容导入', + mdPlaceholder: '请输入Markdown格式的内容', + mdEmptyTip: '内容不能为空', + mdImportFailTip: '导入失败,没有解析到可导入内容。只支持标题、列表等语法', + rootNodeName: '根节点', + importTip: '其中.mm、.xlsx会员可用', + dragTip: '拖动仓库或电脑本地文件到此', + warningTip: '注意:导入会覆盖现有内容,且无法恢复,请先做好备份!' + }, + navigatorToolbar: { + openMiniMap: '开启小地图', + closeMiniMap: '关闭小地图', + readonly: '切换为只读模式', + edit: '切换为编辑模式', + backToRoot: '回到根节点', + changeSourceCodeEdit: '切换为源码编辑模式', + shortcutKeys: '快捷键', + ai: 'AI对话', + downloadClient: '下载客户端', + site: '官方网站', + current: '当前:', + downloadDesc: '可从如下地址下载:', + searchReplace: '搜索替换', + exitDarkMode: '退出暗黑模式', + darkMode: '切换为暗黑模式', + darkModeFailTip: '切换失败,当前为跟随obsidian模式', + export: '导出', + help: '使用帮助' + }, + nodeHyperlink: { + title: '超链接', + link: '链接', + name: '名称', + tabName1: '普通网址', + tabName2: 'Obsidian文件', + tabName3: '本地文件', + selectLocalFile: '选择本地文件', + none: '无', + delete: '删除', + add: '添加', + tip1: '请输入链接地址', + tip2: '插入失败,文件不存在', + tip3: '请选择本地文件', + tip4: '文件上传到Vault中失败', + tip5: '插入失败' + }, + nodeIcon: { + title: '图标' + }, + nodeImage: { + title: '图片', + imgTitle: '图片标题', + tip: + 'tips:如果你是要粘贴图片,那么不需要打开该弹窗,直接激活节点后按Ctrl+v粘贴即可。', + method1: '方式一', + method2: '方式二', + tip2: '请输入图片地址', + optional: '可选', + selectLocal: '从本地选择', + selectVault: '从Vault选择', + selectUrl: '网络图片', + imgTitle: '图片标题(可选)' + }, + nodeNote: { + title: '备注' + }, + nodeTag: { + title: '标签', + addTip: '请按回车键添加,最多可添加五个标签', + add: '添加' + }, + outline: { + title: '大纲', + nodeDefaultText: '分支节点', + print: '打印', + fullscreen: '全屏', + tip1: '插入兄弟节点:', + tip2: '节点下移层级:', + tip3: '节点上移层级:', + tip4: '删除节点:', + tip5: '按住节点可拖拽' + }, + scale: { + zoomIn: '放大', + zoomOut: '缩小' + }, + shortcutKey: { + title: '快捷键' + }, + strusture: { + title: '结构' + }, + style: { + title: '节点样式', + normal: '常态', + active: '选中状态', + text: '文字', + fontFamily: '字体', + fontSize: '字号', + color: '颜色', + addFontWeight: '加粗', + italic: '斜体', + textDecoration: '划线', + none: '无', + underline: '下划线', + lineThrough: '中划线', + overline: '上划线', + border: '边框', + style: '样式', + width: '宽度', + borderRadius: '圆角', + background: '背景', + shape: '形状', + line: '线条', + nodePadding: '节点内边距', + horizontal: '水平', + vertical: '垂直', + gradientStyle: '渐变', + startColor: '起始', + endColor: '结束', + arrowDir: '箭头位置', + arrowDirStart: '头部', + arrowDirEnd: '尾部', + direction: '方向', + selectNodeTip: '请选择一个节点', + openLineFlow: '开启流动效果', + lineFlowDuration: '一个流动周期的时间', + forward: '正向', + reverse: '反向', + img: '图片', + placement: '布局', + top: '上', + bottom: '下', + left: '左', + right: '右', + tag: '标签' + }, + theme: { + title: '主题', + classics: '经典', + dark: '深色', + simple: '朴素', + coverTip: '你当前自定义过基础样式,是否覆盖?', + tip: '提示', + cover: '覆盖', + reserve: '保留' + }, + toolbar: { + undo: '回退', + redo: '前进', + insertSiblingNode: '节点', + insertChildNode: '子节点', + deleteNode: '删除', + image: '图片', + icon: '图标', + link: '超链接', + note: '备注', + tag: '标签', + summary: '概要', + displayOutline: '显示大纲', + baseStyle: '基础样式', + theme: '主题', + strusture: '结构', + newFile: '新建', + openFile: '打开', + saveAs: '另存为', + import: '导入', + export: '导出', + shortcutKey: '快捷键', + associativeLine: '关联线', + painter: '格式刷', + formula: '公式', + attachment: '附件', + outerFrame: '外框', + more: '更多', + selectFileTip: '请选择文件', + notSupportTip: '你的浏览器不支持该功能,或者当前页面非https协议', + tip: '提示', + editingLocalFileTipFront: '当前正在编辑你本机的【', + editingLocalFileTipEnd: '】文件', + fileContentError: '文件内容有误', + fileOpenFailed: '文件打开失败', + defaultFileName: '思维导图', + creatingTip: '正在创建文件', + directory: '目录', + newFileTip: '新建文件前请先导出当前编辑的文件,谨防内容丢失', + openFileTip: '打开文件前请先导出当前编辑的文件,谨防内容丢失', + ai: 'AI' + }, + edit: { + newFeatureNoticeTitle: '新特性提醒', + newFeatureNoticeMessage: + '本次更新支持了节点富文本编辑,但是存在一定缺陷,最主要的影响是导出为图片的时间和节点数量成正比,所以对导出需求比较依赖的话可以通过【基础样式】-【其他配置】-【开启节点富文本编辑】设置关掉富文本编辑模式。', + root: '根节点', + splitByWrap: '是否按换行自动分割节点?', + tip: '提示', + yes: '是', + no: '否', + exportError: '导出失败', + dragTip: '在此释放以导入该文件', + deleteNodeImgTip: '是否确认删除该节点图片?', + autoOpenNodeRichTextTip: '检测到导入了富文本内容,已自动开启富文本模式', + localStorageExceededTip: + '你创建的思维导图体积已经超过浏览器允许存储的上限,请立即导出,否则数据将丢失!建议下载客户端进行使用,客户端无大小限制。', + withBg: '带背景', + tryTipTitle: '功能试用提示', + tryTipDesc: '该功能在网页版中为试用功能,请下载客户端使用:', + downBaidu: '去百度网盘下载', + downGithub: '去Github下载', + painterTip: '点击画布空白处结束操作', + createAssociativeLineTip: '点击画布空白处取消操作', + savingTip: '正在保存中,请稍后再试', + savingTip2: '思维导图为空,或正在渲染中,请稍后再试', + savingTip3: '保存成功', + savingTip4: '保存失败', + defaultInsertSecondLevelNodeText: '二级节点', + defaultInsertBelowSecondLevelNodeText: '分支主题', + defaultGeneralizationText: '概要', + defaultAssociativeLineText: '关联', + defaultOuterFrameText: '外框', + pasteImage: '粘贴图片', + notSplit: '不分割', + keepLevel: '保留层级', + ignoreLevel: '忽略层级' + }, + mouseAction: { + tip1: '当前:左键拖动画布,右键框选节点。点击可切换', + tip2: '当前:左键框选节点,右键拖动画布。点击可切换' + }, + search: { + searchPlaceholder: '输入查找内容后按回车键', + replacePlaceholder: '请输入替换内容', + replace: '替换', + replaceAll: '全部替换', + cancel: '取消', + noResult: '暂无结果' + }, + nodeIconSidebar: { + title: '图标/贴纸', + icon: '图标', + sticker: '贴纸' + }, + formulaSidebar: { + title: '公式', + placeholder: '请输入 LaTeX 语法', + confirm: '完成', + common: '常用公式', + tip: '非富文本模式下不支持插入公式' + }, + richTextToolbar: { + bold: '加粗', + italic: '斜体', + underline: '下划线', + strike: '删除线', + fontFamily: '字体', + fontSize: '字号', + color: '字体颜色', + backgroundColor: '背景颜色', + removeFormat: '清除样式', + textAlign: '对齐方式' + }, + other: { + loading: '正在加载,请稍后...' + }, + sourceCodeEdit: { + sourceCodeTip: + '富文本模式下不建议修改样式,因为需要同步修改数据及html结构。', + format: '格式化', + copy: '复制', + confirm: '完成', + close: '关闭', + formatErrorTip: 'JSON格式有误,请检查后再试', + copyTip: '已复制到剪贴板', + formatTip: '格式化完成' + }, + attachment: { + deleteAttachment: '删除附件', + tip: '附件功能仅在客户端可用' + }, + nodeOuterFrame: { + nodeOuterFrameStyle: '外框样式', + outerFrameSetting: '外框', + deleteOuterFrame: '删除外框', + boxStyle: '边框样式', + boxColor: '边框颜色', + fillColor: '填充颜色', + outerFrameText: '外框文字', + deleteOuterFrameText: '删除文字', + fontFamily: '字体', + color: '颜色', + fontSize: '字号', + radius: '圆角', + fontBold: '加粗', + italic: '斜体', + lineHeight: '行高', + textFillRadius: '背景圆角', + textFill: '背景填充', + textAlign: '显示位置', + left: '左', + center: '中', + right: '右', + paddingX: '水平内边距', + paddingY: '垂直内边距', + constainsChildren: '外框包含子节点' + }, + nodeTagStyle: { + placeholder: '请输入标签内容', + delete: '删除此标签' + }, + ai: { + chatTitle: 'AI对话', + clearRecords: '清空记录', + connectFailedTitle: '客户端连接失败提示', + connectFailedTip: '客户端连接失败,请检查:', + connectFailedCheckTip1: + '1.是否安装了思绪思维导图客户端,如果没有请点此安装:', + connectFailedCheckTip2: '2.如果安装了客户端,请确认是否打开了客户端。', + connectFailedCheckTip3: + '3.如果已经安装并启动了,那么可以尝试关闭然后重新启动。', + connectFailedCheckTip4: '完成以上步骤后可点击:', + baiduNetdisk: '百度网盘', + createMindMapTitle: '一键生成思维导图', + createTip: + '请输入一个主题,AI会根据你的主题生成思维导图,如:杭州周末出游计划。', + importantTip: '重要提示:一键生成会覆盖现有数据,建议先导出当前数据。', + wantModifyAiConfigTip: '想要修改AI配置?请点击:', + modifyAIConfiguration: '修改AI配置', + chatInputPlaceholder: 'Enter 发送,Shift + Enter 换行。', + send: '发送', + stopGenerating: '停止生成', + generationFailed: '生成失败', + aiGenerationSuccess: 'AI生成完成', + stoppedGenerating: '已停止生成', + AIConfiguration: 'AI配置', + VolcanoArkLargeModelConfiguration: '火山方舟大模型配置:', + configTip: '目前仅支持火山方舟大模型,需要自行去获取key,详细操作步骤见:', + course: '教程', + inferenceAccessPoint: '推理接入点', + mindMappingClientConfiguration: '思绪思维导图客户端配置:', + port: '端口', + cancel: '取消', + confirm: '确认', + close: '关闭', + configSaveSuccessTip: '配置保存成功', + apiValidateTip: '请输入接口', + keyValidateTip: '请输入API Key', + modelValidateTip: '请输入推理接入点', + portValidateTip: '请输入端口', + methodValidateTip: '请选择请求方式', + noInputTip: '请输入内容', + connectSuccessful: '连接成功', + connectFailed: '连接失败', + connectionDetection: '连接检测', + configurationMissing: '配置缺失', + aiCreateMsgPrefix: '帮我写一个【', + aiCreateMsgPostfix: + '】,需要以Markdown格式返回,并且只能使用Markdown的标题和无序列表两种语法,可以支持多层嵌套。只需返回内容即可。', + aiCreatePartMsgPrefix: '我有一个主题为【', + aiCreatePartMsgCenter: '】的思维导图,帮我续写其中一个内容为【', + aiCreatePartMsgPostfix: '】的节点的下级内容', + aiCreatePartMsgHelp: + '。需要以Markdown格式返回,并且只能使用Markdown的标题和无序列表两种语法,可以支持多层嵌套。只需返回内容即可。', + aiCreatePart: 'AI续写' + }, + note: { + title: '备注' + }, + nodeLink: { + linkToNode: '链接到指定节点', + addReturn: '添加反向链接', + tip1: '请选择要链接到的节点', + tip2: '不能链接自己', + tip3: '链接成功', + tip4: '删除成功', + tip5: '链接节点不存在,是否删除该链接?' + }, + ciod: { + outputConfig: '导出配置', + importConfig: '导入配置', + tip1: '请选择json文件', + tip2: '文件内容格式不正确', + tip3: '导入成功', + tip4: '导入失败' + }, + imageUpload: { + tip: '点击此处选择图片、或拖动图片到此', + failTip: '图片保存失败' + }, + fileSelectList: { + searchPlaceholder: '搜索文件名' + }, + guide: { + btn: '关闭引导', + tip1: '要更新![[]]嵌入到其他文档中的预览图像需要手动点击保存', + tip2: '激活节点后,可在这里修改节点内容(图片、图标...)', + tip3: '这里可以修改节点样式、切换主题/结构等等', + tip4: '这里可以查看快捷键信息', + tip5: '这里有一些辅助功能(小地图、演示模式...)' + }, + previewMode: { + emptyTitle: '未解析到可渲染数据', + emptyDesc: '目前仅能解析部分 markdown 语法,比如标题、列表', + close: '关闭' + } +} diff --git a/src/src/lang/zh_tw.js b/src/src/lang/zh_tw.js new file mode 100644 index 0000000..888ad4a --- /dev/null +++ b/src/src/lang/zh_tw.js @@ -0,0 +1,622 @@ +export default { + baseStyle: { + title: '基本樣式', + background: '背景', + color: '顏色', + image: '圖片', + imageRepeat: '圖片重複', + imagePosition: '圖片位置', + imageSize: '圖片大小', + line: '連線', + width: '寬度', + style: '樣式', + lineRadius: '圓角半徑', + lineOfOutline: '概要連線', + showArrow: '顯示箭頭', + nodePadding: '節點內距', + nodeMargin: '節點外距', + horizontal: '水平', + vertical: '垂直', + maximumWidth: '最大寬度', + maximumHeight: '最大高度', + icon: '圖示', + size: '大小', + level2Node: '第二層節點', + belowLevel2Node: '第三層及以下節點', + nodeBorderType: '節點邊框樣式', + nodeUseLineStyle: '僅使用底邊框樣式', + otherConfig: '其他設定', + associativeLine: '關聯線', + associativeLineWidth: '寬度', + associativeLineColor: '顏色', + associativeLineActiveWidth: '啟用時寬度', + associativeLineActiveColor: '啟用時顏色', + rootStyle: '根節點連線風格', + associativeLineText: '關聯線文字', + fontFamily: '字型', + fontSize: '字型大小', + rootLineStartPos: '根節點連線起始位置', + center: '中心', + edge: '邊緣', + rainbowLines: '彩虹線條', + notUseRainbowLines: '不使用彩虹線條', + outerFramePadding: '外框內距', + associativeLineStyle: '關聯線樣式', + builtInBackgroundImage: '內置背景圖片', + baseStyleConfig: '思緒心智圖基礎樣式配寘' + }, + setting: { + title: '設置', + openPerformance: '啟用效能模式', + enableFreeDrag: '啟用節點自由拖曳 (Beta)', + isEnableNodeRichText: '啟用節點豐富文字編輯', + mousewheelAction: '滑鼠滾輪行為', + zoomView: '縮放檢視', + moveViewUpDown: '上下移動檢視', + mousewheelZoomActionReverse: '滑鼠滾輪縮放', + mousewheelZoomActionReverse1: '向前縮小,向後放大', + mousewheelZoomActionReverse2: '向前放大,向後縮小', + createNewNodeBehavior: '建立新節點行為', + default: '啟用新節點並進入編輯', + notActive: '不啟用新節點', + activeOnly: '僅啟用新節點,不進入編輯', + openRealtimeRenderOnNodeTextEdit: '開啟文本編輯實時渲染效果', + isShowScrollbar: '顯示捲軸', + openBlankMode: '是否開啓演示模式的填空功能', + watermark: '浮水印', + showWatermark: '顯示浮水印', + onlyExport: '僅在匯出時顯示', + watermarkDefaultText: '浮水印文字', + watermarkText: '浮水印文字', + watermarkTextColor: '文字顏色', + watermarkLineSpacing: '行距', + watermarkTextSpacing: '文字間距', + watermarkAngle: '旋轉角度', + watermarkTextOpacity: '文字透明度', + watermarkTextFontSize: '字型大小', + belowNode: '顯示在節點下方', + confirm: '確定', + cancel: '取消', + changeRichTextTip: + '該操作會清空所有曆史修改記錄,並且修改思維導圖數據,是否繼續?', + changeRichTextTip2: '是否切換爲富文本模式?', + changeRichTextTip3: '是否切換爲非富文本模式?', + imgTextMargin: '節點圖片和文本間隔', + textContentMargin: '節點各種內容間隔', + enableAutoEnterTextEditWhenKeydown: '鍵盤輸入時自動進入文本編輯', + enableInheritAncestorLineStyle: '節點連線樣式繼承祖先節點的樣式', + alwaysShowExpandBtn: '是否壹直顯示展開收起按鈕', + isShowBottomToolbar: '顯示底部工具列', + rootEnableUnExpand: '根節點是否允許收起下級', + settingConfig: '思緒心智圖設定', + title1: '節點', + title2: '編輯', + title3: '顯示', + title4: '其他', + sameNodeAlignInitWidth: '同級節點對齊初始寬度', + enableFreeDragTip: + '關閉設定後,如果要恢復預設佈局,請點擊畫布右鍵選單-【一鍵整理佈局】', + isUseSameNodeAlignTip1: + '1.節點編輯後寬度不會自動對齊,需手動點擊畫布右鍵選單-【一鍵同級節點對齊】', + isUseSameNodeAlignTip2: + '2.關閉設定後,如果要恢復預設寬度,請點擊畫布右鍵選單-【一鍵去除所有節點自訂寬度】', + openRealtimeRenderOnNodeTextEditTip: + '開啟後可能會導致效能下降,建議在節點數量比較多時關閉', + openPerformanceTip: '如果節點數量比較多,可以嘗試開啟效能模式加快渲染' + }, + color: { + moreColor: '更多顏色' + }, + contextmenu: { + insertNode: '插入節點', + insertSiblingNode: '同層節點', + insertChildNode: '子節點', + insertParentNode: '父節點', + insertSummary: '概要', + moveUpNode: '上移節點', + moveDownNode: '下移節點', + deleteNode: '刪除節點', + deleteCurrentNode: '僅刪除目前節點', + copyNode: '複製節點', + cutNode: '剪下節點', + pasteNode: '貼上節點', + backCenter: '回到根節點', + expandAll: '展開全部', + unExpandAll: '收合全部', + expandTo: '展開至', + arrangeLayout: '一鍵整理版面', + level1: '第一層主題', + level2: '第二層主題', + level3: '第三層主題', + level4: '第四層主題', + level5: '第五層主題', + level6: '第六層主題', + zenMode: '禪模式', + fitCanvas: '適應畫布', + removeImage: '移除圖片', + removeHyperlink: '移除超連結', + removeNote: '移除備註', + removeCustomStyles: '一鍵移除自訂樣式', + removeAllNodeCustomStyles: '一鍵移除所有節點自訂樣式', + exportNodeToPng: '匯出此節點為圖片', + copyToClipboard: '複製到剪貼簿', + copyToSmm: 'SMM', + copyToJson: 'JSON', + copyToMarkdown: 'Markdown', + copyToTxt: 'Txt', + copyToPng: '圖片', + copySuccess: '複製成功', + copyFail: '複製失敗', + number: '將其子節點編號', + expandNodeChild: '展開所有下級節點', + unExpandNodeChild: '收起所有下級節點', + addToDo: '添加待辦', + removeToDo: '刪除待辦', + aiCreate: 'AI續寫', + modifyNodeLink: '修改節點鏈接', + linkToNode: '鏈接到指定節點', + removeNodeLink: '刪除節點鏈接', + nodeAlgin: '一鍵同級節點對齊', + removeCustomWidth: '去除自定義寬度', + copyAsInternalUrl: '複製為內鏈', + removeAllCustomWidth: '一鍵去除所有節點自定義寬度', + download: '下載到本地', + copyNodeToTxt: '複製為純文字' + }, + count: { + words: '字數', + nodes: '節點數' + }, + dialog: { + cancel: '取消', + confirm: '確定' + }, + export: { + title: '匯出', + filename: '檔案名稱', + include: '包含主題、結構等設定資料', + dedicatedFile: '專用檔案', + jsonFile: 'JSON 檔案', + imageFile: '圖片檔案', + svgFile: 'SVG 檔案', + pdfFile: 'PDF 檔案', + markdownFile: 'Markdown 檔案', + isTransparent: '背景透明', + transformingDomToImages: '正在轉換節點:', + notifyTitle: '訊息', + notifyMessage: '如果沒有觸發下載,請檢查是否被瀏覽器封鎖', + paddingX: '水平內距', + paddingY: '垂直內距', + useMultiPageExport: '多頁匯出', + defaultFileName: '心智圖', + addFooterText: '在底部新增文字', + addFooterTextPlaceholder: '例如:來自 simple-mind-map', + desc: '說明', + options: '選項', + isFitBg: '是否顯示完整背景圖片(使用了背景圖片時生效)', + format: '格式', + confirm: '匯出' + }, + fullscreen: { + fullscreenShow: '全螢幕檢視', + fullscreenEdit: '全螢幕編輯' + }, + demonstrate: { + demonstrate: '進入展示模式' + }, + import: { + title: '匯入', + selectFile: '選擇檔案', + support: '支援', + file: '檔案', + pleaseSelect: '請選擇', + maxFileNum: '最多只能選擇一個檔案', + notSelectTip: '請選擇要匯入的檔案', + fileContentError: '檔案內容有誤', + importSuccess: '匯入成功', + fileParsingFailed: '檔案解析失敗', + xmindCanvasSelectDialogTitle: '選擇要匯入的畫布', + mdImportDialogTitle: '粘貼Markdown內容導入', + mdPlaceholder: '請輸入Markdown格式的內容', + mdEmptyTip: '內容不能爲空', + mdImportFailTip: '導入失敗,沒有解析到可導入內容。 只支持標題、清單等語法', + rootNodeName: '根節點', + importTip: '其中.mm、.xlsx會員可用', + dragTip: '拖動倉庫或電腦本地檔案到此', + warningTip: '注意:導入會覆蓋現有內容,且無法恢復,請先做好備份!' + }, + navigatorToolbar: { + openMiniMap: '開啟小地圖', + closeMiniMap: '關閉小地圖', + readonly: '切換為唯讀模式', + edit: '切換為編輯模式', + backToRoot: '回到根節點', + changeSourceCodeEdit: '切換為原始碼編輯模式', + shortcutKeys: '快捷鍵', + ai: 'AI對話', + downloadClient: '下載客戶端', + site: '官方網站', + current: '當前:', + downloadDesc: '可從如下地址下載:', + searchReplace: '蒐索替換', + exitDarkMode: '退出暗黑模式', + darkMode: '切换为暗黑模式', + darkModeFailTip: '切換失敗,當前為跟隨obsidian模式', + export: '匯出', + help: '使用幫助' + }, + nodeHyperlink: { + title: '超連結', + link: '連結', + name: '名稱', + tabName1: '普通網址', + tabName2: 'Obsidian檔案', + tabName3: '本地檔案', + selectLocalFile: '選擇本地檔案', + none: '無', + delete: '删除', + add: '添加', + tip1: '請輸入連結位址', + tip2: '插入失敗,檔案不存在', + tip3: '請選擇本地檔案', + tip4: '文件上傳到Vault中失敗', + tip5: '插入失敗' + }, + nodeIcon: { + title: '圖示' + }, + nodeImage: { + title: '圖片', + imgTitle: '圖片標題', + tip: + 'tips:如果你是要粘貼圖片,那麼不需要打開該彈窗,直接啟動節點後按Ctrl+v粘貼即可。', + method1: '管道一', + method2: '管道二', + tip2: '請輸入圖片地址', + optional: '可選', + selectLocal: '從本地選擇', + selectVault: '從Vault選擇', + selectUrl: '網絡圖片', + imgTitle: '圖片標題(可選)' + }, + nodeNote: { + title: '備註' + }, + nodeTag: { + title: '標籤', + addTip: '請按回車鍵添加,最多可添加五個標籤', + add: '添加' + }, + outline: { + title: '大綱', + nodeDefaultText: '分支節點', + print: '打印', + fullscreen: '全屏', + tip1: '插入兄弟節點:', + tip2: '節點下移層級:', + tip3: '節點上移層級:', + tip4: '删除節點:', + tip5: '按住節點可拖拽' + }, + scale: { + zoomIn: '放大', + zoomOut: '縮小' + }, + shortcutKey: { + title: '快速鍵' + }, + strusture: { + title: '結構' + }, + style: { + title: '節點樣式', + normal: '常態', + active: '選取狀態', + text: '文字', + fontFamily: '字型', + fontSize: '字型大小', + color: '顏色', + addFontWeight: '粗體', + italic: '斜體', + textDecoration: '文字裝飾', + none: '無', + underline: '底線', + lineThrough: '刪除線', + overline: '上劃線', + border: '邊框', + style: '樣式', + width: '寬度', + borderRadius: '圓角', + background: '背景', + shape: '形狀', + line: '線條', + nodePadding: '節點內距', + horizontal: '水平', + vertical: '垂直', + gradientStyle: '漸層', + startColor: '起始', + endColor: '結束', + arrowDir: '箭頭位置', + arrowDirStart: '頭部', + arrowDirEnd: '尾部', + selectNodeTip: '請選擇壹個節點', + openLineFlow: '開啓流動效果', + lineFlowDuration: '一個流動周期的時間', + forward: '正向', + reverse: '反向', + img: '圖片', + placement: '布局', + top: '上', + bottom: '下', + left: '左', + right: '右', + tag: '標簽', + direction: '方向' + }, + theme: { + title: '主題', + classics: '經典', + dark: '深色', + simple: '簡約', + coverTip: '您目前已自訂過基本樣式,是否要覆蓋?', + tip: '提示', + cover: '覆蓋', + reserve: '保留' + }, + toolbar: { + undo: '復原', + redo: '重做', + insertSiblingNode: '同層節點', + insertChildNode: '子節點', + deleteNode: '刪除節點', + image: '圖片', + icon: '圖示', + link: '超連結', + note: '備註', + tag: '標籤', + summary: '摘要', + displayOutline: '顯示大綱', + baseStyle: '基本樣式', + theme: '主題', + strusture: '結構', + newFile: '新增檔案', + openFile: '開啟檔案', + saveAs: '另存新檔', + import: '匯入', + export: '匯出', + shortcutKey: '快速鍵', + associativeLine: '關聯線', + painter: '格式刷', + formula: '公式', + attachment: '附件', + outerFrame: '外框', + more: '更多', + selectFileTip: '請選擇檔案', + notSupportTip: '您的瀏覽器不支援此功能,或者目前頁面非 HTTPS 協定', + tip: '提示', + editingLocalFileTipFront: '目前正在編輯您電腦上的【', + editingLocalFileTipEnd: '】檔案', + fileContentError: '檔案內容有誤', + fileOpenFailed: '檔案開啟失敗', + defaultFileName: '心智圖', + creatingTip: '正在建立檔案', + directory: '目錄', + newFileTip: '新增檔案前,請先匯出目前編輯的檔案,以免內容遺失', + openFileTip: '開啟檔案前,請先匯出目前編輯的檔案,以免內容遺失', + ai: 'AI' + }, + edit: { + newFeatureNoticeTitle: '新功能提醒', + newFeatureNoticeMessage: + '本次更新支援了節點豐富文字編輯,但存在一些缺陷,最主要的影響是匯出為圖片的時間與節點數量成正比,所以如果比較依賴匯出功能,可以透過【基本樣式】-【其他設定】-【是否啟用節點豐富文字編輯】設定關閉豐富文字編輯模式。', + root: '根節點', + splitByWrap: '是否根據換行自動分割節點?', + tip: '提示', + yes: '是', + no: '否', + exportError: '匯出失敗', + dragTip: '在此釋放以匯入檔案', + autoOpenNodeRichTextTip: '檢測到導入了富文本內容,已自動開啓富文本模式', + localStorageExceededTip: + '你創建的思維導圖體積已經超過浏覽器允許存儲的上限,請立即導出,否則數據將丟失!建議下載客戶端進行使用,客戶端無大小限制。', + withBg: '帶背景', + tryTipTitle: '功能試用提示', + tryTipDesc: '該功能在網頁版中為試用功能,請下載用戶端使用:', + downBaidu: '去百度網盤下載', + downGithub: '去Github下載', + painterTip: '點擊畫布空白處取消或結束', + createAssociativeLineTip: '點擊畫布空白處取消', + savingTip: '正在保存中,請稍後再試', + savingTip2: '心智圖為空,或正在渲染中,請稍後再試', + savingTip3: '保存成功', + savingTip4: '保存失敗', + defaultInsertSecondLevelNodeText: '二級節點', + defaultInsertBelowSecondLevelNodeText: '分支主題', + defaultGeneralizationText: '概要', + defaultAssociativeLineText: '關聯', + defaultOuterFrameText: '外框', + pasteImage: '粘貼圖片', + notSplit: '不分割', + keepLevel: '保留層級', + ignoreLevel: '忽略層級' + }, + mouseAction: { + tip1: '目前:左鍵拖曳畫布,右鍵框選節點。點擊可切換', + tip2: '目前:左鍵框選節點,右鍵拖曳畫布。點擊可切換' + }, + search: { + searchPlaceholder: '輸入查找內容後按回車鍵', + replacePlaceholder: '請輸入取代內容', + replace: '取代', + replaceAll: '全部取代', + cancel: '取消', + noResult: '查無結果' + }, + nodeIconSidebar: { + title: '圖示/貼圖', + icon: '圖示', + sticker: '貼圖' + }, + formulaSidebar: { + title: '公式', + placeholder: '請輸入 LaTeX 語法', + confirm: '完成', + common: '常用公式', + tip: '僅在豐富文字模式下支援插入公式' + }, + richTextToolbar: { + bold: '粗體', + italic: '斜體', + underline: '底線', + strike: '刪除線', + fontFamily: '字型', + fontSize: '字型大小', + color: '字型顏色', + backgroundColor: '背景顏色', + removeFormat: '清除樣式', + textAlign: '對齊方式' + }, + other: { + loading: '載入中,請稍候...' + }, + sourceCodeEdit: { + sourceCodeTip: + '不建議在豐富文字模式下修改樣式,因為需要同步修改資料和 HTML 結構。', + format: '格式化', + copy: '複製', + confirm: '完成', + close: '關閉', + formatErrorTip: 'JSON 格式錯誤,請檢查後重試', + copyTip: '已複製到剪貼簿', + formatTip: '格式化完成' + }, + attachment: { + deleteAttachment: '刪除附件', + tip: '附件功能僅在用戶端可用' + }, + nodeOuterFrame: { + outerFrameSetting: '外框', + deleteOuterFrame: '刪除外框', + boxStyle: '邊框樣式', + boxColor: '邊框顏色', + fillColor: '填充顏色', + nodeOuterFrameStyle: '外框樣式', + outerFrameText: '外框文字', + deleteOuterFrameText: '刪除文字', + fontFamily: '字型', + color: '顏色', + fontSize: '字型大小', + radius: '圓角', + fontBold: '加粗', + italic: '斜體', + lineHeight: '行高', + textFillRadius: '背景圓角', + textFill: '背景填充', + textAlign: '顯示位置', + left: '左', + center: '中', + right: '右', + paddingX: '水平內邊距', + paddingY: '垂直內邊距', + constainsChildren: '外框是否包含子節點' + }, + nodeTagStyle: { + placeholder: '請輸入標籤內容', + delete: '刪除此標籤' + }, + ai: { + chatTitle: 'AI對話', + clearRecords: '清空記錄', + connectFailedTitle: '客戶端連接失敗提示', + connectFailedTip: '客戶端連接失敗,請檢查:', + connectFailedCheckTip1: + '1.是否安裝了思緒思維導圖客戶端,如果沒有請點此安裝:', + connectFailedCheckTip2: '2.如果安裝了客戶端,請確認是否打開了客戶端。', + connectFailedCheckTip3: + '3.如果已經安裝並啓動了,那麽可以嘗試關閉然後重新啓動。', + connectFailedCheckTip4: '完成以上步驟後可點擊:', + baiduNetdisk: '百度網盤', + createMindMapTitle: '一鍵生成思維導圖', + createTip: + '請輸入一個主題,AI會根據你的主題生成思維導圖,如:杭州周末出遊計劃。', + importantTip: '重要提示:一鍵生成會覆蓋現有數據,建議先導出當前數據。', + wantModifyAiConfigTip: '想要修改AI配置?請點擊:', + modifyAIConfiguration: '修改AI配置', + chatInputPlaceholder: 'Enter 發送,Shift Enter 換行。', + send: '發送', + stopGenerating: '停止生成', + generationFailed: '生成失敗', + aiGenerationSuccess: 'AI生成完成', + stoppedGenerating: '已停止生成', + AIConfiguration: 'AI配置', + VolcanoArkLargeModelConfiguration: '火山方舟大模型配置:', + configTip: '目前僅支持火山方舟大模型,需要自行去獲取key,詳細操作步驟見:', + course: '教程', + inferenceAccessPoint: '推理接入點', + mindMappingClientConfiguration: '思緒思維導圖客戶端配置:', + port: '端口', + cancel: '取消', + confirm: '確認', + close: '關閉', + configSaveSuccessTip: '配置保存成功', + apiValidateTip: '請輸入接口', + keyValidateTip: '請輸入API Key', + modelValidateTip: '請輸入推理接入點', + portValidateTip: '請輸入端口', + methodValidateTip: '請選擇請求方式', + noInputTip: '請輸入內容', + connectSuccessful: '連接成功', + connectFailed: '連接失敗', + connectionDetection: '連接檢測', + configurationMissing: '配置缺失', + aiCreateMsgPrefix: '幫我寫一個【', + aiCreateMsgPostfix: + '】,需要以Markdown格式返回,並且只能使用Markdown的標題和無序列表兩種語法,可以支持多層嵌套。只需返回內容即可。', + aiCreatePartMsgPrefix: '我有一個主題爲【', + aiCreatePartMsgCenter: '】的思維導圖,幫我續寫其中一個內容爲【', + aiCreatePartMsgPostfix: '】的節點的下級內容', + aiCreatePartMsgHelp: + '。需要以Markdown格式返回,並且只能使用Markdown的標題和無序列表兩種語法,可以支持多層嵌套。只需返回內容即可。', + aiCreatePart: 'AI續寫' + }, + note: { + title: '備註' + }, + nodeLink: { + linkToNode: '鏈接到指定節點', + addReturn: '是否添加反向鏈接', + tip1: '請選擇要鏈接到的節點', + tip2: '不能鏈接自己', + tip3: '鏈接成功', + tip4: '刪除成功', + tip5: '鏈接節點不存在,是否刪除該鏈接?' + }, + ciod: { + outputConfig: '匯出配寘', + importConfig: '導入配寘', + tip1: '請選擇json檔案', + tip2: '檔案內容格式不正確', + tip3: '導入成功', + tip4: '導入失敗' + }, + imageUpload: { + tip: '點擊此處選擇圖片、或拖動圖片到此', + failTip: '圖片上傳失敗' + }, + fileSelectList: { + searchPlaceholder: '蒐索檔名' + }, + guide: { + btn: '關閉導航', + tip1: '在其他文件中嵌入![[]]圖片時,需要手動點擊保存', + tip2: '在啟用節點後,可以在這裡修改節點內容(圖片、圖標...)', + tip3: '這裡可以修改節點樣式、切換主題/結構等等', + tip4: '這裡可以查看快捷鍵信息', + tip5: '這裡有一些輔助功能(小圖映射、演示模式...)' + }, + previewMode: { + emptyTitle: '未解析到可渲染數據', + emptyDesc: '現時僅能解析部分markdown語法,比如標題、清單', + close: '關閉' + } +} diff --git a/src/src/main.js b/src/src/main.js new file mode 100644 index 0000000..67adde8 --- /dev/null +++ b/src/src/main.js @@ -0,0 +1,108 @@ +import Vue from 'vue' +import App from './pages/Edit/Index.vue' +import createStore from './store' +import './style/element-variables.scss' +import '@/assets/icon-font/iconfont.css' +import 'viewerjs/dist/viewer.css' +import VueViewer from 'v-viewer' +import i18n from './i18n' +import PreviewMode from './pages/PreviewMode/Index.vue' +import '@/style/common.less' +import '@/style/sidebar.less' +import '@toast-ui/editor/dist/toastui-editor.css' +import '@toast-ui/editor/dist/theme/toastui-editor-dark.css' +import { + Dialog, + Dropdown, + DropdownMenu, + DropdownItem, + Input, + Popover, + Select, + Option, + Tabs, + TabPane, + Checkbox, + Slider, + ColorPicker, + Radio, + RadioGroup, + Button, + Upload, + RadioButton, + Tree, + InputNumber, + MessageBox, + Loading, + Switch +} from 'element-ui' + +Vue.config.productionTip = false +Vue.use(VueViewer) +Vue.use(Dialog) +Vue.use(Button) +Vue.use(Input) +Vue.use(Select) +Vue.use(Option) +Vue.use(Tabs) +Vue.use(TabPane) +Vue.use(Checkbox) +Vue.use(Slider) +Vue.use(ColorPicker) +Vue.use(Radio) +Vue.use(RadioGroup) +Vue.use(Upload) +Vue.use(RadioButton) +Vue.use(Tree) +Vue.use(InputNumber) +Vue.use(Popover) +Vue.use(Dropdown) +Vue.use(DropdownMenu) +Vue.use(DropdownItem) +Vue.use(Switch) +Vue.use(Loading.directive) +Vue.prototype.$loading = Loading.service +Vue.prototype.$confirm = MessageBox.confirm + +export const initApp = (el, obsidianAPI = {}) => { + i18n.locale = obsidianAPI.getSettings().lang || 'en' + const app = new Vue({ + render: h => h(App), + store: createStore(), + i18n + }) + const bus = new Vue() + app.$bus = bus + let resizeTimer = null + app.$updateMindMapSize = () => { + clearTimeout(resizeTimer) + resizeTimer = setTimeout(() => { + app.$bus.$emit('windowResize') + }, 300) + } + app.$clearUpdateMindMapSize = () => { + clearTimeout(resizeTimer) + resizeTimer = null + } + app.$obsidianAPI = obsidianAPI + app.$mount(el) + return app +} + +const initCommonApp = (el, obsidianAPI = {}, component) => { + i18n.locale = obsidianAPI.getSettings().lang || 'en' + const app = new Vue({ + render: h => h(component), + store: createStore(), + i18n + }) + const bus = new Vue() + app.$bus = bus + app.$obsidianAPI = obsidianAPI + app.$mount(el) + return app +} + +export const initPreviewModeApp = (el, obsidianAPI = {}) => { + return initCommonApp(el, obsidianAPI, PreviewMode) +} diff --git a/src/src/mixins/dark.js b/src/src/mixins/dark.js new file mode 100644 index 0000000..17d3a1d --- /dev/null +++ b/src/src/mixins/dark.js @@ -0,0 +1,33 @@ +import { mapState, mapMutations } from 'vuex' + +export default { + computed: { + ...mapState({ + isDark: state => state.localConfig.isDark + }) + }, + watch: { + isDark() { + this.setBodyDark() + } + }, + created() { + this.setBodyDark() + }, + methods: { + ...mapMutations(['setLocalConfig']), + + setBodyDark() { + this.isDark + ? document.body.classList.add('isDark') + : document.body.classList.remove('isDark') + }, + + setIsDark(isDark) { + this.setLocalConfig({ + isDark + }) + this.setBodyDark() + } + } +} diff --git a/src/src/mixins/fontFamily.js b/src/src/mixins/fontFamily.js new file mode 100644 index 0000000..4645caa --- /dev/null +++ b/src/src/mixins/fontFamily.js @@ -0,0 +1,9 @@ +import { fontFamilyList } from '@/config' + +export default { + computed: { + fontFamilyList() { + return [...(fontFamilyList[this.$i18n.locale] || fontFamilyList.en)] + } + } +} diff --git a/src/src/mixins/imgHostingUpload.js b/src/src/mixins/imgHostingUpload.js new file mode 100644 index 0000000..050a8e8 --- /dev/null +++ b/src/src/mixins/imgHostingUpload.js @@ -0,0 +1,63 @@ +import { compressImage } from '@/utils' + +export default { + methods: { + async compressAndUploadImg(file) { + const { + compressImage: isCompress, + compressImageOptionsMaxWidth, + compressImageOptionsMaxHeight, + compressImageOptionsQuality, + useImgHosting + } = this.$root.$obsidianAPI.getSettings() + if (isCompress) { + file = await compressImage(file, { + exportType: 'file', + maxWidth: compressImageOptionsMaxWidth, + maxHeight: compressImageOptionsMaxHeight, + quality: compressImageOptionsQuality + }) + } + let result = '' + if (useImgHosting) { + result = await this.uploadImgToHosting(file) + } else { + result = await this.$root.$obsidianAPI.saveFileToVault(file) + } + return result + }, + + uploadImgToHosting(file) { + return new Promise((resolve, reject) => { + const { + imgHostingUrl, + imgHostingFormField, + imgHostingResponseField + } = this.$root.$obsidianAPI.getSettings() + const formData = new FormData() + formData.append(imgHostingFormField, file) + fetch(imgHostingUrl, { + method: 'POST', + body: formData + }) + .then(response => response.json()) + .then(data => { + if (data) { + const imageUrl = eval(imgHostingResponseField) + if (imageUrl) { + resolve(imageUrl) + } else { + reject(new Error('上传图片失败,未从响应中提取到图片URL')) + } + } else { + reject(new Error('上传图片失败')) + } + }) + .catch(error => { + console.log(error) + reject('上传失败') + }) + }) + } + } +} \ No newline at end of file diff --git a/src/src/mixins/note.js b/src/src/mixins/note.js new file mode 100644 index 0000000..9f10bb9 --- /dev/null +++ b/src/src/mixins/note.js @@ -0,0 +1,22 @@ +import { isNormalUrl } from '@/utils' + +export default { + methods: { + fixNoteImg(imgList) { + imgList.forEach(img => { + const url = img.getAttribute('data-url') + if (url) { + img.setAttribute('src', url) + } else { + let src = img.getAttribute('src') + if (src && !isNormalUrl(src) && !src.startsWith('app://')) { + img.setAttribute( + 'src', + this.$root.$obsidianAPI.getResourcePath(decodeURIComponent(src)) + ) + } + } + }) + } + } +} diff --git a/src/src/pages/Edit/Index.vue b/src/src/pages/Edit/Index.vue new file mode 100644 index 0000000..36dc5c6 --- /dev/null +++ b/src/src/pages/Edit/Index.vue @@ -0,0 +1,499 @@ + + + + + + diff --git a/src/src/pages/Edit/components/AssociativeLineStyle.vue b/src/src/pages/Edit/components/AssociativeLineStyle.vue new file mode 100644 index 0000000..3e514c7 --- /dev/null +++ b/src/src/pages/Edit/components/AssociativeLineStyle.vue @@ -0,0 +1,340 @@ + + + + + diff --git a/src/src/pages/Edit/components/BaseStyle.vue b/src/src/pages/Edit/components/BaseStyle.vue new file mode 100644 index 0000000..8f0811e --- /dev/null +++ b/src/src/pages/Edit/components/BaseStyle.vue @@ -0,0 +1,1280 @@ + + + + + + diff --git a/src/src/pages/Edit/components/Color.vue b/src/src/pages/Edit/components/Color.vue new file mode 100644 index 0000000..5643787 --- /dev/null +++ b/src/src/pages/Edit/components/Color.vue @@ -0,0 +1,113 @@ + + + + + + \ No newline at end of file diff --git a/src/src/pages/Edit/components/ConfigImportOutputDropdown.vue b/src/src/pages/Edit/components/ConfigImportOutputDropdown.vue new file mode 100644 index 0000000..f93a992 --- /dev/null +++ b/src/src/pages/Edit/components/ConfigImportOutputDropdown.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/src/src/pages/Edit/components/Contextmenu.vue b/src/src/pages/Edit/components/Contextmenu.vue new file mode 100644 index 0000000..e0cd24b --- /dev/null +++ b/src/src/pages/Edit/components/Contextmenu.vue @@ -0,0 +1,849 @@ + + + + + diff --git a/src/src/pages/Edit/components/Count.vue b/src/src/pages/Edit/components/Count.vue new file mode 100644 index 0000000..5b82cd4 --- /dev/null +++ b/src/src/pages/Edit/components/Count.vue @@ -0,0 +1,118 @@ + + + + + + diff --git a/src/src/pages/Edit/components/Demonstrate.vue b/src/src/pages/Edit/components/Demonstrate.vue new file mode 100644 index 0000000..9dd6864 --- /dev/null +++ b/src/src/pages/Edit/components/Demonstrate.vue @@ -0,0 +1,231 @@ + + + + + diff --git a/src/src/pages/Edit/components/Edit.vue b/src/src/pages/Edit/components/Edit.vue new file mode 100644 index 0000000..77209fc --- /dev/null +++ b/src/src/pages/Edit/components/Edit.vue @@ -0,0 +1,1075 @@ + + + + + diff --git a/src/src/pages/Edit/components/Export.vue b/src/src/pages/Edit/components/Export.vue new file mode 100644 index 0000000..8adbfc4 --- /dev/null +++ b/src/src/pages/Edit/components/Export.vue @@ -0,0 +1,753 @@ + + + + + diff --git a/src/src/pages/Edit/components/FileSelectList.vue b/src/src/pages/Edit/components/FileSelectList.vue new file mode 100644 index 0000000..4aaf5ee --- /dev/null +++ b/src/src/pages/Edit/components/FileSelectList.vue @@ -0,0 +1,221 @@ + + + + + diff --git a/src/src/pages/Edit/components/FormulaSidebar.vue b/src/src/pages/Edit/components/FormulaSidebar.vue new file mode 100644 index 0000000..b528e3e --- /dev/null +++ b/src/src/pages/Edit/components/FormulaSidebar.vue @@ -0,0 +1,205 @@ + + + + + diff --git a/src/src/pages/Edit/components/Guide.vue b/src/src/pages/Edit/components/Guide.vue new file mode 100644 index 0000000..52ed10f --- /dev/null +++ b/src/src/pages/Edit/components/Guide.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/src/src/pages/Edit/components/Import.vue b/src/src/pages/Edit/components/Import.vue new file mode 100644 index 0000000..e5f7885 --- /dev/null +++ b/src/src/pages/Edit/components/Import.vue @@ -0,0 +1,458 @@ + + + + + diff --git a/src/src/pages/Edit/components/MouseAction.vue b/src/src/pages/Edit/components/MouseAction.vue new file mode 100644 index 0000000..1ad7d30 --- /dev/null +++ b/src/src/pages/Edit/components/MouseAction.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/src/pages/Edit/components/Navigator.vue b/src/src/pages/Edit/components/Navigator.vue new file mode 100644 index 0000000..78f5b3c --- /dev/null +++ b/src/src/pages/Edit/components/Navigator.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/src/src/pages/Edit/components/NavigatorToolbar.vue b/src/src/pages/Edit/components/NavigatorToolbar.vue new file mode 100644 index 0000000..3da539e --- /dev/null +++ b/src/src/pages/Edit/components/NavigatorToolbar.vue @@ -0,0 +1,311 @@ + + + + + diff --git a/src/src/pages/Edit/components/NodeHyperlink.vue b/src/src/pages/Edit/components/NodeHyperlink.vue new file mode 100644 index 0000000..2bf00bf --- /dev/null +++ b/src/src/pages/Edit/components/NodeHyperlink.vue @@ -0,0 +1,402 @@ + + + + + diff --git a/src/src/pages/Edit/components/NodeIcon.vue b/src/src/pages/Edit/components/NodeIcon.vue new file mode 100644 index 0000000..6b3640e --- /dev/null +++ b/src/src/pages/Edit/components/NodeIcon.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/src/src/pages/Edit/components/NodeIconSidebar.vue b/src/src/pages/Edit/components/NodeIconSidebar.vue new file mode 100644 index 0000000..248ae3e --- /dev/null +++ b/src/src/pages/Edit/components/NodeIconSidebar.vue @@ -0,0 +1,346 @@ + + + + + diff --git a/src/src/pages/Edit/components/NodeIconToolbar.vue b/src/src/pages/Edit/components/NodeIconToolbar.vue new file mode 100644 index 0000000..d198ec4 --- /dev/null +++ b/src/src/pages/Edit/components/NodeIconToolbar.vue @@ -0,0 +1,262 @@ + + + + + diff --git a/src/src/pages/Edit/components/NodeImage.vue b/src/src/pages/Edit/components/NodeImage.vue new file mode 100644 index 0000000..e610341 --- /dev/null +++ b/src/src/pages/Edit/components/NodeImage.vue @@ -0,0 +1,317 @@ + + + + + + diff --git a/src/src/pages/Edit/components/NodeImgPlacementToolbar.vue b/src/src/pages/Edit/components/NodeImgPlacementToolbar.vue new file mode 100644 index 0000000..8e30b09 --- /dev/null +++ b/src/src/pages/Edit/components/NodeImgPlacementToolbar.vue @@ -0,0 +1,203 @@ + + + + + diff --git a/src/src/pages/Edit/components/NodeImgPreview.vue b/src/src/pages/Edit/components/NodeImgPreview.vue new file mode 100644 index 0000000..8d951e6 --- /dev/null +++ b/src/src/pages/Edit/components/NodeImgPreview.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/src/src/pages/Edit/components/NodeNote.vue b/src/src/pages/Edit/components/NodeNote.vue new file mode 100644 index 0000000..c9f72ac --- /dev/null +++ b/src/src/pages/Edit/components/NodeNote.vue @@ -0,0 +1,289 @@ + + + + + diff --git a/src/src/pages/Edit/components/NodeNoteContentShow.vue b/src/src/pages/Edit/components/NodeNoteContentShow.vue new file mode 100644 index 0000000..364c52b --- /dev/null +++ b/src/src/pages/Edit/components/NodeNoteContentShow.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/src/src/pages/Edit/components/NodeNoteSidebar.vue b/src/src/pages/Edit/components/NodeNoteSidebar.vue new file mode 100644 index 0000000..9b0059d --- /dev/null +++ b/src/src/pages/Edit/components/NodeNoteSidebar.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/src/src/pages/Edit/components/NodeOuterFrame.vue b/src/src/pages/Edit/components/NodeOuterFrame.vue new file mode 100644 index 0000000..814ad7a --- /dev/null +++ b/src/src/pages/Edit/components/NodeOuterFrame.vue @@ -0,0 +1,576 @@ + + + + + diff --git a/src/src/pages/Edit/components/NodeTag.vue b/src/src/pages/Edit/components/NodeTag.vue new file mode 100644 index 0000000..8c0a923 --- /dev/null +++ b/src/src/pages/Edit/components/NodeTag.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/src/src/pages/Edit/components/NodeTagStyle.vue b/src/src/pages/Edit/components/NodeTagStyle.vue new file mode 100644 index 0000000..9c7f585 --- /dev/null +++ b/src/src/pages/Edit/components/NodeTagStyle.vue @@ -0,0 +1,255 @@ + + + + + diff --git a/src/src/pages/Edit/components/NodeTextInputObLink.vue b/src/src/pages/Edit/components/NodeTextInputObLink.vue new file mode 100644 index 0000000..40734ed --- /dev/null +++ b/src/src/pages/Edit/components/NodeTextInputObLink.vue @@ -0,0 +1,202 @@ + + + diff --git a/src/src/pages/Edit/components/Outline.vue b/src/src/pages/Edit/components/Outline.vue new file mode 100644 index 0000000..6a4e82a --- /dev/null +++ b/src/src/pages/Edit/components/Outline.vue @@ -0,0 +1,363 @@ + + + + + + diff --git a/src/src/pages/Edit/components/OutlineEdit.vue b/src/src/pages/Edit/components/OutlineEdit.vue new file mode 100644 index 0000000..27ad9b8 --- /dev/null +++ b/src/src/pages/Edit/components/OutlineEdit.vue @@ -0,0 +1,557 @@ + + + + + + diff --git a/src/src/pages/Edit/components/OutlineSidebar.vue b/src/src/pages/Edit/components/OutlineSidebar.vue new file mode 100644 index 0000000..cb5e241 --- /dev/null +++ b/src/src/pages/Edit/components/OutlineSidebar.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/src/src/pages/Edit/components/RichTextToolbar.vue b/src/src/pages/Edit/components/RichTextToolbar.vue new file mode 100644 index 0000000..a339c64 --- /dev/null +++ b/src/src/pages/Edit/components/RichTextToolbar.vue @@ -0,0 +1,392 @@ + + + + + diff --git a/src/src/pages/Edit/components/Scale.vue b/src/src/pages/Edit/components/Scale.vue new file mode 100644 index 0000000..db1242f --- /dev/null +++ b/src/src/pages/Edit/components/Scale.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/src/src/pages/Edit/components/Scrollbar.vue b/src/src/pages/Edit/components/Scrollbar.vue new file mode 100644 index 0000000..82d4101 --- /dev/null +++ b/src/src/pages/Edit/components/Scrollbar.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/src/src/pages/Edit/components/Search.vue b/src/src/pages/Edit/components/Search.vue new file mode 100644 index 0000000..b5094ad --- /dev/null +++ b/src/src/pages/Edit/components/Search.vue @@ -0,0 +1,375 @@ + + + + + diff --git a/src/src/pages/Edit/components/Setting.vue b/src/src/pages/Edit/components/Setting.vue new file mode 100644 index 0000000..4ad1f7b --- /dev/null +++ b/src/src/pages/Edit/components/Setting.vue @@ -0,0 +1,617 @@ + + + + + diff --git a/src/src/pages/Edit/components/ShortcutKey.vue b/src/src/pages/Edit/components/ShortcutKey.vue new file mode 100644 index 0000000..c005d82 --- /dev/null +++ b/src/src/pages/Edit/components/ShortcutKey.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/src/src/pages/Edit/components/Sidebar.vue b/src/src/pages/Edit/components/Sidebar.vue new file mode 100644 index 0000000..0daf2a5 --- /dev/null +++ b/src/src/pages/Edit/components/Sidebar.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/src/src/pages/Edit/components/SidebarTrigger.vue b/src/src/pages/Edit/components/SidebarTrigger.vue new file mode 100644 index 0000000..60b1322 --- /dev/null +++ b/src/src/pages/Edit/components/SidebarTrigger.vue @@ -0,0 +1,227 @@ + + + + + diff --git a/src/src/pages/Edit/components/Structure.vue b/src/src/pages/Edit/components/Structure.vue new file mode 100644 index 0000000..88bb697 --- /dev/null +++ b/src/src/pages/Edit/components/Structure.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/src/src/pages/Edit/components/Style.vue b/src/src/pages/Edit/components/Style.vue new file mode 100644 index 0000000..789ea38 --- /dev/null +++ b/src/src/pages/Edit/components/Style.vue @@ -0,0 +1,866 @@ + + + + + diff --git a/src/src/pages/Edit/components/Theme.vue b/src/src/pages/Edit/components/Theme.vue new file mode 100644 index 0000000..24bab5b --- /dev/null +++ b/src/src/pages/Edit/components/Theme.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/src/src/pages/Edit/components/Toolbar.vue b/src/src/pages/Edit/components/Toolbar.vue new file mode 100644 index 0000000..7f69728 --- /dev/null +++ b/src/src/pages/Edit/components/Toolbar.vue @@ -0,0 +1,263 @@ + + + + + + diff --git a/src/src/pages/Edit/components/ToolbarNodeBtnList.vue b/src/src/pages/Edit/components/ToolbarNodeBtnList.vue new file mode 100644 index 0000000..c4fc1a9 --- /dev/null +++ b/src/src/pages/Edit/components/ToolbarNodeBtnList.vue @@ -0,0 +1,371 @@ + + + + + diff --git a/src/src/pages/PreviewMode/Index.vue b/src/src/pages/PreviewMode/Index.vue new file mode 100644 index 0000000..0f8efd2 --- /dev/null +++ b/src/src/pages/PreviewMode/Index.vue @@ -0,0 +1,300 @@ + + + + + + diff --git a/src/src/pages/PreviewMode/components/Toolbar.vue b/src/src/pages/PreviewMode/components/Toolbar.vue new file mode 100644 index 0000000..4988501 --- /dev/null +++ b/src/src/pages/PreviewMode/components/Toolbar.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/src/src/store.js b/src/src/store.js new file mode 100644 index 0000000..bc4dac0 --- /dev/null +++ b/src/src/store.js @@ -0,0 +1,54 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +Vue.use(Vuex) + +const createStore = () => { + return new Vuex.Store({ + state: { + localConfig: { + isZenMode: false, + useLeftKeySelectionRightKeyDrag: false, + isShowScrollbar: false, + isDark: false, + isShowBottomToolbar: true, + autoSaveTime: 5 + }, + activeSidebar: '', + isOutlineEdit: false, + isReadonly: false, + extraTextOnExport: '', + isMobile: false + }, + mutations: { + setLocalConfig(state, data) { + Object.keys(data).forEach(key => { + state.localConfig[key] = data[key] + }) + }, + + setActiveSidebar(state, data) { + state.activeSidebar = data + }, + + setIsOutlineEdit(state, data) { + state.isOutlineEdit = data + }, + + setIsReadonly(state, data) { + state.isReadonly = data + }, + + setExtraTextOnExport(state, data) { + state.extraTextOnExport = data + }, + + setIsMobile(state, data) { + state.isMobile = data + } + }, + actions: {} + }) +} + +export default createStore diff --git a/src/src/style/common.less b/src/src/style/common.less new file mode 100644 index 0000000..cc4cb3d --- /dev/null +++ b/src/src/style/common.less @@ -0,0 +1,11 @@ +.smmMindmapEditContainer { + input { + &:focus { + box-shadow: none; + } + + &:active { + box-shadow: none; + } + } +} \ No newline at end of file diff --git a/src/src/style/element-variables.scss b/src/src/style/element-variables.scss new file mode 100644 index 0000000..b486c6f --- /dev/null +++ b/src/src/style/element-variables.scss @@ -0,0 +1,37 @@ +/* 改变主题色变量 */ +$--color-primary: #885bf3; + +// var(--color-accent) +// var(--text-accent) + +/* 改变 icon 字体路径变量,必需 */ +$--font-path: '~element-ui/lib/theme-chalk/fonts'; + +@import '~element-ui/packages/theme-chalk/src/base.scss'; +@import '~element-ui/packages/theme-chalk/src/dialog.scss'; +@import '~element-ui/packages/theme-chalk/src/dropdown.scss'; +@import '~element-ui/packages/theme-chalk/src/dropdown-menu.scss'; +@import '~element-ui/packages/theme-chalk/src/dropdown-item.scss'; +@import '~element-ui/packages/theme-chalk/src/input.scss'; +@import '~element-ui/packages/theme-chalk/src/input-number.scss'; +@import '~element-ui/packages/theme-chalk/src/radio.scss'; +@import '~element-ui/packages/theme-chalk/src/radio-group.scss'; +@import '~element-ui/packages/theme-chalk/src/radio-button.scss'; +@import '~element-ui/packages/theme-chalk/src/checkbox.scss'; +@import '~element-ui/packages/theme-chalk/src/checkbox-button.scss'; +@import '~element-ui/packages/theme-chalk/src/checkbox-group.scss'; +@import '~element-ui/packages/theme-chalk/src/select.scss'; +@import '~element-ui/packages/theme-chalk/src/button.scss'; +@import '~element-ui/packages/theme-chalk/src/button-group.scss'; +@import '~element-ui/packages/theme-chalk/src/popover.scss'; +@import '~element-ui/packages/theme-chalk/src/message-box.scss'; +@import '~element-ui/packages/theme-chalk/src/tabs.scss'; +@import '~element-ui/packages/theme-chalk/src/tab-pane.scss'; +@import '~element-ui/packages/theme-chalk/src/tree.scss'; +@import '~element-ui/packages/theme-chalk/src/slider.scss'; +@import '~element-ui/packages/theme-chalk/src/loading.scss'; +@import '~element-ui/packages/theme-chalk/src/upload.scss'; +@import '~element-ui/packages/theme-chalk/src/spinner.scss'; +@import '~element-ui/packages/theme-chalk/src/message.scss'; +@import '~element-ui/packages/theme-chalk/src/color-picker.scss'; +@import '~element-ui/packages/theme-chalk/src/link.scss'; \ No newline at end of file diff --git a/src/src/style/outlineTree.less b/src/src/style/outlineTree.less new file mode 100644 index 0000000..9ae2347 --- /dev/null +++ b/src/src/style/outlineTree.less @@ -0,0 +1,62 @@ +.smmOutlineTree { + &.isDark { + background-color: #262a2e; + + .smmOutlineTreeCustomNode { + color: #fff; + } + + &.el-tree--highlight-current { + /deep/ .el-tree-node.is-current > .el-tree-node__content { + background-color: hsla(0, 0%, 100%, 0.05) !important; + } + } + + /deep/ .el-tree-node__content:hover, + .el-upload-list__item:hover { + background-color: hsla(0, 0%, 100%, 0.02) !important; + } + + /deep/ .el-tree-node__content { + .el-tree-node__expand-icon { + color: #fff; + + &.is-leaf { + &::after { + background-color: #fff; + } + } + } + } + } + + /deep/ .el-tree-node > .el-tree-node__children { + overflow: inherit; + } + + /deep/ .el-tree-node__content { + height: auto; + margin: 5px 0; + + .el-tree-node__expand-icon { + color: #262a2e; + + &.is-leaf { + color: transparent; + position: relative; + + &::after { + background-color: #262a2e; + position: absolute; + content: ''; + width: 5px; + height: 5px; + border-radius: 50%; + left: 10px; + top: 50%; + transform: translateY(-50%); + } + } + } + } +} diff --git a/src/src/style/sidebar.less b/src/src/style/sidebar.less new file mode 100644 index 0000000..0d90df1 --- /dev/null +++ b/src/src/style/sidebar.less @@ -0,0 +1,178 @@ +.smmBorderLine { + display: inline-block; + width: 100%; + background-color: #000; + + &.isDark { + background-color: #fff; + } +} + +.el-select-dropdown__item.selected { + .smmBorderLine { + background-color: var(--color-accent); + } +} + +.smmSidebarGroupTitle { + font-size: 16px; + font-family: PingFangSC-Medium, PingFang SC; + font-weight: 500; + color: rgba(26, 26, 26, 0.9); + margin-bottom: 10px; + margin-top: 35px; + + &.noTop { + margin-top: 0; + } +} + +.smmCommonSidebarContent { + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + padding: 12px; + + &.isDark { + .row { + .rowItem { + .name { + color: hsla(0, 0%, 100%, 0.6); + } + } + } + + .smmSidebarGroupTitle { + color: #fff; + } + + .styleBtn { + background-color: #363b3f; + color: hsla(0, 0%, 100%, 0.6); + border-color: hsla(0, 0%, 100%, 0.1); + } + } + + .row { + display: flex; + justify-content: space-between; + margin-bottom: 10px; + overflow: hidden; + + &.noBottom { + margin-bottom: 0; + } + + &.column { + flex-direction: column; + } + + .rowItem { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + overflow: hidden; + + &.mr { + margin-right: 10px; + } + + &.mb { + margin-bottom: 10px; + } + + &.wrap { + flex-wrap: wrap; + } + + &.half { + width: 50%; + } + + &.pr5 { + padding-right: 5px; + } + + &.spaceBetween { + justify-content: space-between; + } + + .name { + font-size: 12px; + margin-right: 10px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + margin-right: auto; + + &.mb { + margin-bottom: 10px; + } + } + + .block { + display: inline-block; + width: 30px; + height: 30px; + border: 1px solid #dcdfe6; + border-radius: 4px; + cursor: pointer; + + &.disabled { + background-color: #f5f7fa !important; + border-color: #e4e7ed !important; + color: #c0c4cc !important; + cursor: not-allowed !important; + } + } + } + } +} + +.smmFontStyleBtnList { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + + .styleBtn { + position: relative; + width: 60px; + height: 30px; + background: #fff; + border: 1px solid #eee; + display: flex; + justify-content: center; + align-items: center; + font-weight: bold; + cursor: pointer; + border-radius: 4px; + + &.actived { + background-color: #eee; + } + + &.disabled { + background-color: #f5f7fa !important; + border-color: #e4e7ed !important; + color: #c0c4cc !important; + cursor: not-allowed !important; + } + + &.i { + font-style: italic; + } + + &.u {} + + .colorShow { + position: absolute; + left: 0; + right: 0; + bottom: 0; + height: 2px; + } + } +} \ No newline at end of file diff --git a/src/src/utils/CursorTextHandler.js b/src/src/utils/CursorTextHandler.js new file mode 100644 index 0000000..523b9e6 --- /dev/null +++ b/src/src/utils/CursorTextHandler.js @@ -0,0 +1,49 @@ +class CursorTextHandler { + constructor(editableElement) { + this.editableElement = editableElement + } + + getFragmentElementInnerHTML(fragment) { + const div = document.createElement('div') + const editNode = fragment.querySelector('.nodeEdit') + if (editNode) return editNode.innerHTML + div.appendChild(fragment) + return div.innerHTML || '' + } + + getTextOnCursor(dir) { + const selection = window.getSelection() + if (selection.rangeCount === 0) return '' + const range = selection.getRangeAt(0) + const targetRange = document.createRange() + + if (dir === 'after') { + targetRange.setStart(range.startContainer, range.startOffset) + targetRange.setEndAfter(this.editableElement) + } else { + targetRange.setStart(this.editableElement, 0) + targetRange.setEnd(range.startContainer, range.startOffset) + } + + const html = this.getFragmentElementInnerHTML(targetRange.cloneContents()) + return html || targetRange.toString() + } + + getTextAfterCursor() { + return this.getTextOnCursor('after') + } + + getTextBeforeCursor() { + return this.getTextOnCursor('before') + } + + getFullText() { + return this.editableElement.textContent || '' + } + + getFullHtml() { + return this.editableElement.innerHTML || '' + } +} + +export default CursorTextHandler \ No newline at end of file diff --git a/src/src/utils/handleClipboardText.js b/src/src/utils/handleClipboardText.js new file mode 100644 index 0000000..990158d --- /dev/null +++ b/src/src/utils/handleClipboardText.js @@ -0,0 +1,84 @@ +import { imgToDataUrl } from 'simple-mind-map/src/utils/index' + +const handleZHIXI = async data => { + try { + try { + if (!Array.isArray(data)) { + data = String(data).replace('￿', '') + data = JSON.parse(data) + } + } catch (error) {} + if (!Array.isArray(data)) { + data = [] + } + const newNodeList = [] + const waitLoadImageList = [] + const walk = (list, newList) => { + list.forEach(async item => { + let newRoot = {} + newList.push(newRoot) + newRoot.data = { + text: item.data.text, + hyperlink: item.data.hyperlink, + hyperlinkTitle: item.data.hyperlinkTitle, + note: item.data.note + } + if (item.data.image) { + let resolve = null + let promise = new Promise(_resolve => { + resolve = _resolve + }) + waitLoadImageList.push(promise) + try { + newRoot.data.image = await imgToDataUrl(item.data.image) + newRoot.data.imageSize = item.data.imageSize + resolve() + } catch (error) { + resolve() + } + } + newRoot.children = [] + if (item.children && item.children.length > 0) { + const children = [] + item.children.forEach(item2 => { + if (item2.data.type === 'generalize') { + newRoot.data.generalization = [ + { + text: item2.data.text + } + ] + } else { + children.push(item2) + } + }) + walk(children, newRoot.children) + } + }) + } + walk(data, newNodeList) + await Promise.all(waitLoadImageList) + return { + simpleMindMap: true, + data: newNodeList + } + } catch (error) { + return '' + } +} + +const handleClipboardText = async text => { + try { + let parsedData = JSON.parse(text) + if (parsedData.__c_zx_v !== undefined) { + const res = await handleZHIXI(parsedData.children) + return res + } + } catch (error) {} + if (text.includes('￿')) { + const res = await handleZHIXI(text) + return res + } + return '' +} + +export default handleClipboardText diff --git a/src/src/utils/index.js b/src/src/utils/index.js new file mode 100644 index 0000000..08123f1 --- /dev/null +++ b/src/src/utils/index.js @@ -0,0 +1,414 @@ +import { nodeRichTextToTextWithWrap } from 'simple-mind-map/src/utils/index.js' +import { Platform } from 'obsidian' + +const getOnfullscreEnevt = () => { + if (document.documentElement.requestFullScreen) { + return 'onfullscreenchange' + } else if (document.documentElement.webkitRequestFullScreen) { + return 'onwebkitfullscreenchange' + } else if (document.documentElement.mozRequestFullScreen) { + return 'onmozfullscreenchange' + } else if (document.documentElement.msRequestFullscreen) { + return 'onmsfullscreenchange' + } +} + +export const fullscrrenEvent = getOnfullscreEnevt() + +export const fullScreen = element => { + if (element.requestFullScreen) { + element.requestFullScreen() + } else if (element.webkitRequestFullScreen) { + element.webkitRequestFullScreen() + } else if (element.mozRequestFullScreen) { + element.mozRequestFullScreen() + } +} + +export const fileToBuffer = file => { + return new Promise(r => { + const reader = new FileReader() + reader.onload = () => { + r(reader.result) + } + reader.readAsArrayBuffer(file) + }) +} + +export const copy = text => { + const input = document.createElement('textarea') + input.value = text + document.body.appendChild(input) + input.select() + document.execCommand('copy') + document.body.removeChild(input) +} + +export const setDataToClipboard = data => { + if (navigator.clipboard && navigator.clipboard.writeText) { + navigator.clipboard.writeText(data) + } +} + +export const setImgToClipboard = img => { + if (navigator.clipboard && navigator.clipboard.write) { + const data = [new ClipboardItem({ ['image/png']: img })] + navigator.clipboard.write(data) + } +} + +export const printOutline = el => { + const printContent = el.outerHTML + const iframe = document.createElement('iframe') + iframe.setAttribute('style', 'position: absolute; width: 0; height: 0;') + document.body.appendChild(iframe) + const iframeDoc = iframe.contentWindow.document + const styleList = document.querySelectorAll('style') + Array.from(styleList).forEach(el => { + iframeDoc.write(el.outerHTML) + }) + iframeDoc.write('') + iframeDoc.write('
' + printContent + '
') + setTimeout(function() { + iframe.contentWindow?.print() + document.body.removeChild(iframe) + }, 500) +} + +export const getParentWithClass = (el, className) => { + if (el.classList && el.classList.contains(className)) { + return el + } + if (el.parentNode && el.parentNode !== document.body) { + return getParentWithClass(el.parentNode, className) + } + return null +} + +export const compressImage = (file, options = {}) => { + return new Promise((resolve, reject) => { + const fileType = file.type + let { + maxWidth = 1200, + maxHeight = 1200, + quality = 0.8, + mimeType = '', + exportType = 'dataURL' + } = options + const reader = new FileReader() + reader.onload = event => { + if (/\/gif$/.test(fileType)) { + return resolve(event.target.result) + } + mimeType = mimeType || fileType + const img = new Image() + img.onload = () => { + let width = img.width + let height = img.height + if (width > maxWidth || height > maxHeight) { + const ratio = Math.min(maxWidth / width, maxHeight / height) + width = Math.floor(width * ratio) + height = Math.floor(height * ratio) + } + const canvas = document.createElement('canvas') + canvas.width = width + canvas.height = height + const ctx = canvas.getContext('2d') + ctx.drawImage(img, 0, 0, width, height) + if (exportType === 'blob') { + canvas.toBlob( + blob => { + resolve(blob) + }, + mimeType, + quality + ) + } else if (exportType === 'file') { + canvas.toBlob( + blob => { + const newFile = new File([blob], file.name, { + type: mimeType, + lastModified: Date.now() + }) + resolve(newFile) + }, + mimeType, + quality + ) + } else { + resolve(canvas.toDataURL(mimeType, quality)) + } + } + img.onerror = function() { + reject(new Error('图片加载失败')) + } + img.src = event.target.result + } + reader.onerror = function() { + reject(new Error('文件读取失败')) + } + reader.readAsDataURL(file) + }) +} + +export const isHyperlink = text => { + return /^https?:\/\//.test(text) +} + +export const isNormalUrl = url => { + return isHyperlink(url) || /^data:/.test(url) +} + +export const isObLinkText = lt => { + return /(!?)\[\[([^\]\|\#]*?)(?:(#|\^)([^\]\|]*))?(?:\|([^\]]*))?\]\]/g.test( + lt + ) +} + +export const dfsTraverse = (root, callback = () => {}) => { + if (!root) return + const stack = [root] + while (stack.length > 0) { + const currentNode = stack.pop() + callback(currentNode) + if (currentNode.children) { + for (let i = currentNode.children.length - 1; i >= 0; i--) { + stack.push(currentNode.children[i]) + } + } + } +} + +export const matchAll = (str, regex) => { + const flags = regex.flags + (regex.global ? '' : 'g') + const globalRegex = new RegExp(regex, flags) + const matches = [] + let match + while ((match = globalRegex.exec(str)) !== null) { + matches.push({ + fullMatch: match[0], + groups: match.groups, + index: match.index, + captured: match.slice(1) + }) + } + return matches +} + +export const getObLinkShowName = exp => { + const linkInfo = parseObsidianLink(`[[${exp}]]`) + if (!linkInfo) return exp + if (linkInfo.alias) return linkInfo.alias + if (linkInfo.heading) return `${linkInfo.target}#${linkInfo.heading}` + if (linkInfo.block) return `${linkInfo.target}#^${linkInfo.block}` + return linkInfo.target +} + +export const linkRichToObUrlText = (nodeText, done = () => {}) => { + if (/ { + if (/\[\[[^\[\]]+\]\]/g.test(str)) { + const m = [...str.matchAll(/\[\[[^\[\]]+\]\]/g)] + const arr = str.split(/\[\[[^\[\]]+\]\]/g) + for (let j = m.length - 1; j >= 0; j--) { + const exp = m[j] && m[j][0] ? m[j][0].slice(2, -2) || null : null + if (exp !== null && exp.trim().length > 0) { + arr.splice( + j + 1, + 0, + `${getObLinkShowName(exp)}` + ) + } else { + arr.splice(j + 1, 0, '') + } + } + return arr.join('') + } + return str +} + +export const parseObsidianLink = (text, ignoreMdExt = true) => { + const basicMatch = text.match(/^(!?)\[\[([^\[\]\|]+?)(?:\|([^\[\]]+))?\]\]$/) + if (!basicMatch) return null + + const [raw, embedMarker, fullTarget, alias] = basicMatch + + let target = fullTarget + let heading = null + let block = null + + if (fullTarget.includes('#')) { + const parts = fullTarget.split('#') + target = parts[0] + + const remaining = parts.slice(1).join('#') + if (remaining.includes('^')) { + const remainingParts = remaining.split('^') + heading = remainingParts[0] || null + block = remainingParts[1] || null + } else { + heading = remaining || null + } + } else if (fullTarget.includes('^')) { + const parts = fullTarget.split('^') + target = parts[0] + block = parts[1] || null + } + + target = target.trim() + heading = heading ? heading.trim() : null + block = block ? block.trim() : null + + return { + type: embedMarker === '!' ? 'embed' : 'link', + raw: raw, + target: target + ? ignoreMdExt + ? target.replace(/\.md$/, '') + : target + : null, + alias: alias ? alias.trim() : null, + heading: heading, + block: block + } +} + +const mimeToExtension = { + 'image/jpeg': '.jpg', + 'image/jpg': '.jpg', + 'image/png': '.png', + 'image/gif': '.gif', + 'image/webp': '.webp', + 'image/svg+xml': '.svg', + 'image/bmp': '.bmp', + 'image/tiff': '.tiff' +} +export const getFilenameWithExtension = (filename, type) => { + const dotIndex = filename.lastIndexOf('.') + const baseName = dotIndex > 0 ? filename.substring(0, dotIndex) : filename + const extension = mimeToExtension[type] + return extension ? `${baseName}${extension}` : filename +} + +export const base64ToFile = (base64Data, filename, mimeType) => { + if (!mimeType) { + const matchRes = base64Data.match(/^data:([^;]+);/) + mimeType = matchRes && matchRes[1] ? matchRes[1] : 'image/png' + } + filename = getFilenameWithExtension(filename || 'file' + Date.now(), mimeType) + const base64WithoutHeader = base64Data.includes(',') + ? base64Data.split(',')[1] + : base64Data + const byteCharacters = atob(base64WithoutHeader) + const byteArrays = new Uint8Array(byteCharacters.length) + for (let i = 0; i < byteCharacters.length; i++) { + byteArrays[i] = byteCharacters.charCodeAt(i) + } + const blob = new Blob([byteArrays], { type: mimeType }) + return new File([blob], filename, { + type: mimeType, + lastModified: Date.now() + }) +} + +export const imageUrlToBase64 = async url => { + try { + const response = await fetch(url) + if (!response.ok) { + throw new Error('请求失败') + } + const blob = await response.blob() + return new Promise((resolve, reject) => { + const reader = new FileReader() + reader.onloadend = () => { + resolve(reader.result) + } + reader.onerror = reject + reader.readAsDataURL(blob) + }) + } catch (error) { + throw error + } +} + +export const checkMindTreeHasImg = tree => { + let hasImg = false + const walk = root => { + if (root.data.image) { + hasImg = true + return + } + if (root.children) { + for (let i = 0; i < root.children.length; i++) { + walk(root.children[i]) + } + } + } + walk(tree) + return hasImg +} + +export const parseInnerLinkAndText = (data, $obsidianAPI) => { + const obLinkMap = {} + const textData = [] + const { supportObSearch } = $obsidianAPI.getSettings() + dfsTraverse(data.root, node => { + if (supportObSearch) { + textData.push( + nodeRichTextToTextWithWrap(node.data.text) + ' ^' + node.data.uid + ) + } + const { hyperlink, hyperlinkTitle } = node.data + if ( + hyperlink && + hyperlinkTitle && + !isHyperlink(hyperlink) && + isObLinkText(hyperlinkTitle) + ) { + obLinkMap[hyperlinkTitle] = true + } + const matches = matchAll(node.data.text, / { + if (match && match.captured && match.captured[0]) { + const res = $obsidianAPI.createLinkInfoFromFilePath(match.captured[0]) + const linkStr = res ? res.linkText : `[[${match.captured[0]}]]` + obLinkMap[linkStr] = true + } + }) + }) + return { + linkData: Object.keys(obLinkMap).map(key => { + return key + }), + textData + } +} + +export const tFileToFile = async function(tfile, app, mimeTypes = {}) { + const arrayBuffer = await app.vault.readBinary(tfile) + const ext = tfile.name + .split('.') + .pop() + .toLowerCase() + const mimeType = mimeTypes[ext] || '' + return new File([arrayBuffer], tfile.name, { + lastModified: tfile.stat.mtime, + type: mimeType + }) +} + +export const checkIsMac = () => { + return Platform.isMacOS +} diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000..be50555 --- /dev/null +++ b/src/style.css @@ -0,0 +1,204 @@ +/* 通用 */ +.smm-common-full-size { + width: 100%; + height: 100%; + overflow: hidden; +} + +.smm-common-flex { + display: flex; +} + +.smm-common-hide { + display: none; +} + +/* 编辑 */ +.smm-save-button-default { + color: var(--icon-color); +} + +.smm-save-button-un-save { + color: #ff6600; +} + +.smm-save-tip { + font-size: 12px; + margin-right: 10px; +} + +.smm-setting-link-list .smm-setting-link-item { + margin-right: var(--size-4-4); +} + +.smm-setting-link-list .smm-setting-link-item svg { + height: 30px; + margin-right: 8px; + width: 30px; +} + +.smm-setting-link-list .smm-setting-link-item a { + align-items: center; + display: flex; + text-align: left; +} + +.smm-setting-sub-item { + padding-left: 50px; +} + +.smm-setting-item-enable-select { + user-select: text; +} + +.smm-setting-item-hide { + display: none; +} + +.smm-embed-img-empty { + color: var(--text-muted); + border: 1px dashed var(--text-muted); + padding: 10px; + border-radius: 4px; + text-align: center; +} + +.smm-preview-md-to-mindmap-container { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 50; + background: rgba(0, 0, 0, 0.5); +} + +/* 字体管理弹窗样式 */ +.smm-font-manager-modal { +} + +.smm-font-manager-modal hr { + margin: 1em 0; +} + +.smm-font-manager-modal h2 { + margin-top: 0; +} + +.smm-font-manager-modal .smm-font-search-input { + width: 100%; + padding: 8px; + margin-bottom: 10px; + border: 1px solid var(--background-modifier-border); + border-radius: 4px; +} + +.smm-font-results-list, +.smm-added-fonts-list { + max-height: 200px; + overflow-y: auto; + padding: 0; + margin: 0; + list-style: none; +} + +.smm-font-results-list li, +.smm-added-fonts-list li { + padding: 8px 12px; + margin-bottom: 5px; + border-radius: 4px; + display: flex; + justify-content: space-between; + align-items: center; +} + +.smm-font-results-list li { + background-color: var(--background-secondary); + transition: background-color 0.2s; + cursor: pointer; +} + +.smm-font-results-list li:hover { + background-color: var(--background-primary-alt); +} + +.smm-added-fonts-list li { + background-color: var(--background-secondary); + padding: 4px 8px; +} + +.smm-added-fonts-list { + display: flex; + flex-wrap: wrap; + justify-content: space-between; +} + +.smm-added-fonts-list li { + width: 49%; +} + +.smm-font-name { + flex-grow: 1; +} + +.smm-remove-btn { + display: flex; + align-items: center; + justify-content: center; + cursor: var(--cursor); + padding: 4px; + border-radius: var(--radius-s); + color: var(--icon-color); + opacity: var(--icon-opacity); +} + +.smm-remove-btn:hover { + background-color: var(--background-modifier-hover); +} + +/* ob白板 */ +.smm-canvas-node-content { + justify-content: center; + align-items: center; + display: flex; +} + +.smm-canvas-node-content img { + max-width: 100%; + max-height: 100%; +} + +/* 悬浮预览弹窗 */ +.smm-popover-img-preview-content img { + width: 100%; + height: 100%; + object-fit: contain; +} + +/* 确认弹窗样式 */ +.smm-confirm-dialog-content, +.smm-text-info-dialog-content { + padding: 16px 0; + line-height: 1.6; + margin-bottom: 16px; + border-bottom: 1px solid var(--background-modifier-border); + color: var(--text-normal); +} + +.smm-confirm-dialog-content p, +.smm-text-info-dialog-content p { + margin: 0; +} + +.smm-confirm-dialog-buttons, +.smm-text-info-dialog-buttons { + display: flex; + justify-content: flex-end; + gap: 8px; + margin-top: 10px; +} + +/* 文字信息弹窗 */ +.smm-text-info-dialog-content p a { + color: var(--text-accent); +} diff --git a/src/tsconfig.json b/src/tsconfig.json new file mode 100644 index 0000000..e8ef946 --- /dev/null +++ b/src/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + // 其他配置... + "types": ["node", "obsidian"], + "moduleResolution": "node" // 启用 Node 风格的模块解析 + }, + "include": [ + "src/**/*.ts", + "src/**/*.vue", + "shims-vue.d.ts", // 包含声明文件 + "src/main.js" + ] +} diff --git a/src/webpack.config.js b/src/webpack.config.js new file mode 100644 index 0000000..0cf6889 --- /dev/null +++ b/src/webpack.config.js @@ -0,0 +1,114 @@ +const path = require('path') +const VueLoaderPlugin = require('vue-loader/lib/plugin') +const MiniCssExtractPlugin = require('mini-css-extract-plugin') +const TerserPlugin = require('terser-webpack-plugin') +const CssMinimizerPlugin = require('css-minimizer-webpack-plugin') + +const isProduction = process.env.NODE_ENV === 'production' +console.log('isProduction:', isProduction) // 调试用,确保正确输出环境变量 + +module.exports = { + entry: './main.js', + output: { + filename: 'main.js', + path: path.resolve(__dirname, '../'), + libraryTarget: 'commonjs' + }, + devtool: false, + resolve: { + extensions: ['.ts', '.js', '.vue'], + alias: { + vue$: 'vue/dist/vue.esm.js', // 确保使用完整版 Vue(包含模板编译器) + '@': path.resolve(__dirname, './src'), + stream: require.resolve('stream-browserify') + }, + fallback: { + string_decoder: require.resolve('string_decoder/'), + buffer: require.resolve('buffer/'), + util: require.resolve('util/') + } + }, + module: { + rules: [ + { + test: /\.vue$/, + loader: 'vue-loader' + }, + { + test: /\.css$/, + use: [ + isProduction ? MiniCssExtractPlugin.loader : 'vue-style-loader', + 'css-loader' + ] + }, + // 添加 SCSS/Sass 支持 + { + test: /\.scss$/, + use: [ + isProduction ? MiniCssExtractPlugin.loader : 'vue-style-loader', + 'css-loader', + { + loader: 'sass-loader', + options: { + sassOptions: { + warnDeps: true, // 忽略第三方库警告 + quietDeps: true, // 忽略第三方库警告 + resolveVariables: true // 实验性:尝试解析变量 + } + } + } + ] + }, + { + test: /\.less$/, + use: [ + isProduction ? MiniCssExtractPlugin.loader : 'vue-style-loader', + 'css-loader', + 'less-loader' + ] + }, + // 图片 + { + test: /\.(png|jpe?g|gif)$/i, + type: 'asset/inline' + }, + { + test: /\.(woff|woff2|eot|ttf|svg)$/, + type: 'asset/inline' + }, + { + test: /\.js$/, + loader: 'babel-loader', + exclude: /node_modules/ + } + ] + }, + plugins: [ + new VueLoaderPlugin(), + ...(isProduction + ? [ + new MiniCssExtractPlugin({ + filename: 'styles.css', + ignoreOrder: false + }) + ] + : []) + ], + optimization: { + minimize: isProduction, + minimizer: [ + new TerserPlugin({ + terserOptions: { + compress: { + pure_funcs: ['console.log'] // 仅移除 console.log + }, + format: { comments: false } + } + }), // 压缩 JS + new CssMinimizerPlugin() // 压缩 CSS + ] + }, + externals: { + obsidian: 'commonjs2 obsidian' // 排除 Obsidian API + } +}