├── .gitignore ├── .travis.yml ├── LICENSE.md ├── Makefile ├── assets └── tile.png ├── package-lock.json ├── package.json ├── readme.markdown ├── screenshot └── pinput.png └── src ├── css └── lib │ └── jquery-ui.custom.css ├── html ├── background.html ├── options.html └── popup.html ├── icons ├── icon128.png ├── icon16.png ├── icon19.png ├── icon38.png └── icon48.png ├── js ├── api.js ├── background.js ├── constant.js ├── lib │ └── jquery-ui.custom.min.js ├── mark.js ├── options.js ├── popup.js └── util.js └── manifest.json /.gitignore: -------------------------------------------------------------------------------- 1 | bower_components 2 | node_modules 3 | .idea 4 | .DS_Store 5 | tmp 6 | pinput.zip 7 | src/css/lib/* 8 | src/js/lib/* 9 | src/fonts 10 | dist/ 11 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: node_js 3 | node_js: 4 | - "stable" 5 | notifications: 6 | email: false 7 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # GNU GENERAL PUBLIC LICENSE 2 | 3 | Version 3, 29 June 2007 4 | 5 | Copyright © 2007 Free Software Foundation, Inc. <> 6 | 7 | Everyone is permitted to copy and distribute verbatim copies of this license 8 | document, but changing it is not allowed. 9 | 10 | ## Preamble 11 | 12 | The GNU General Public License is a free, copyleft license for software and other 13 | kinds of works. 14 | 15 | The licenses for most software and other practical works are designed to take away 16 | your freedom to share and change the works. By contrast, the GNU General Public 17 | License is intended to guarantee your freedom to share and change all versions of a 18 | program--to make sure it remains free software for all its users. We, the Free 19 | Software Foundation, use the GNU General Public License for most of our software; it 20 | applies also to any other work released this way by its authors. You can apply it to 21 | your programs, too. 22 | 23 | When we speak of free software, we are referring to freedom, not price. Our General 24 | Public Licenses are designed to make sure that you have the freedom to distribute 25 | copies of free software (and charge for them if you wish), that you receive source 26 | code or can get it if you want it, that you can change the software or use pieces of 27 | it in new free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you these rights or 30 | asking you to surrender the rights. Therefore, you have certain responsibilities if 31 | you distribute copies of the software, or if you modify it: responsibilities to 32 | respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether gratis or for a fee, 35 | you must pass on to the recipients the same freedoms that you received. You must make 36 | sure that they, too, receive or can get the source code. And you must show them these 37 | terms so they know their rights. 38 | 39 | Developers that use the GNU GPL protect your rights with two steps: (1) assert 40 | copyright on the software, and (2) offer you this License giving you legal permission 41 | to copy, distribute and/or modify it. 42 | 43 | For the developers' and authors' protection, the GPL clearly explains that there is 44 | no warranty for this free software. For both users' and authors' sake, the GPL 45 | requires that modified versions be marked as changed, so that their problems will not 46 | be attributed erroneously to authors of previous versions. 47 | 48 | Some devices are designed to deny users access to install or run modified versions of 49 | the software inside them, although the manufacturer can do so. This is fundamentally 50 | incompatible with the aim of protecting users' freedom to change the software. The 51 | systematic pattern of such abuse occurs in the area of products for individuals to 52 | use, which is precisely where it is most unacceptable. Therefore, we have designed 53 | this version of the GPL to prohibit the practice for those products. If such problems 54 | arise substantially in other domains, we stand ready to extend this provision to 55 | those domains in future versions of the GPL, as needed to protect the freedom of 56 | users. 57 | 58 | Finally, every program is threatened constantly by software patents. States should 59 | not allow patents to restrict development and use of software on general-purpose 60 | computers, but in those that do, we wish to avoid the special danger that patents 61 | applied to a free program could make it effectively proprietary. To prevent this, the 62 | GPL assures that patents cannot be used to render the program non-free. 63 | 64 | The precise terms and conditions for copying, distribution and modification follow. 65 | 66 | ## TERMS AND CONDITIONS 67 | 68 | ### 0. Definitions. 69 | 70 | “This License” refers to version 3 of the GNU General Public License. 71 | 72 | “Copyright” also means copyright-like laws that apply to other kinds of 73 | works, such as semiconductor masks. 74 | 75 | “The Program” refers to any copyrightable work licensed under this 76 | License. Each licensee is addressed as “you”. “Licensees” and 77 | “recipients” may be individuals or organizations. 78 | 79 | To “modify” a work means to copy from or adapt all or part of the work in 80 | a fashion requiring copyright permission, other than the making of an exact copy. The 81 | resulting work is called a “modified version” of the earlier work or a 82 | work “based on” the earlier work. 83 | 84 | A “covered work” means either the unmodified Program or a work based on 85 | the Program. 86 | 87 | To “propagate” a work means to do anything with it that, without 88 | permission, would make you directly or secondarily liable for infringement under 89 | applicable copyright law, except executing it on a computer or modifying a private 90 | copy. Propagation includes copying, distribution (with or without modification), 91 | making available to the public, and in some countries other activities as well. 92 | 93 | To “convey” a work means any kind of propagation that enables other 94 | parties to make or receive copies. Mere interaction with a user through a computer 95 | network, with no transfer of a copy, is not conveying. 96 | 97 | An interactive user interface displays “Appropriate Legal Notices” to the 98 | extent that it includes a convenient and prominently visible feature that (1) 99 | displays an appropriate copyright notice, and (2) tells the user that there is no 100 | warranty for the work (except to the extent that warranties are provided), that 101 | licensees may convey the work under this License, and how to view a copy of this 102 | License. If the interface presents a list of user commands or options, such as a 103 | menu, a prominent item in the list meets this criterion. 104 | 105 | ### 1. Source Code. 106 | 107 | The “source code” for a work means the preferred form of the work for 108 | making modifications to it. “Object code” means any non-source form of a 109 | work. 110 | 111 | A “Standard Interface” means an interface that either is an official 112 | standard defined by a recognized standards body, or, in the case of interfaces 113 | specified for a particular programming language, one that is widely used among 114 | developers working in that language. 115 | 116 | The “System Libraries” of an executable work include anything, other than 117 | the work as a whole, that (a) is included in the normal form of packaging a Major 118 | Component, but which is not part of that Major Component, and (b) serves only to 119 | enable use of the work with that Major Component, or to implement a Standard 120 | Interface for which an implementation is available to the public in source code form. 121 | A “Major Component”, in this context, means a major essential component 122 | (kernel, window system, and so on) of the specific operating system (if any) on which 123 | the executable work runs, or a compiler used to produce the work, or an object code 124 | interpreter used to run it. 125 | 126 | The “Corresponding Source” for a work in object code form means all the 127 | source code needed to generate, install, and (for an executable work) run the object 128 | code and to modify the work, including scripts to control those activities. However, 129 | it does not include the work's System Libraries, or general-purpose tools or 130 | generally available free programs which are used unmodified in performing those 131 | activities but which are not part of the work. For example, Corresponding Source 132 | includes interface definition files associated with source files for the work, and 133 | the source code for shared libraries and dynamically linked subprograms that the work 134 | is specifically designed to require, such as by intimate data communication or 135 | control flow between those subprograms and other parts of the work. 136 | 137 | The Corresponding Source need not include anything that users can regenerate 138 | automatically from other parts of the Corresponding Source. 139 | 140 | The Corresponding Source for a work in source code form is that same work. 141 | 142 | ### 2. Basic Permissions. 143 | 144 | All rights granted under this License are granted for the term of copyright on the 145 | Program, and are irrevocable provided the stated conditions are met. This License 146 | explicitly affirms your unlimited permission to run the unmodified Program. The 147 | output from running a covered work is covered by this License only if the output, 148 | given its content, constitutes a covered work. This License acknowledges your rights 149 | of fair use or other equivalent, as provided by copyright law. 150 | 151 | You may make, run and propagate covered works that you do not convey, without 152 | conditions so long as your license otherwise remains in force. You may convey covered 153 | works to others for the sole purpose of having them make modifications exclusively 154 | for you, or provide you with facilities for running those works, provided that you 155 | comply with the terms of this License in conveying all material for which you do not 156 | control copyright. Those thus making or running the covered works for you must do so 157 | exclusively on your behalf, under your direction and control, on terms that prohibit 158 | them from making any copies of your copyrighted material outside their relationship 159 | with you. 160 | 161 | Conveying under any other circumstances is permitted solely under the conditions 162 | stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 163 | 164 | ### 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 165 | 166 | No covered work shall be deemed part of an effective technological measure under any 167 | applicable law fulfilling obligations under article 11 of the WIPO copyright treaty 168 | adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention 169 | of such measures. 170 | 171 | When you convey a covered work, you waive any legal power to forbid circumvention of 172 | technological measures to the extent such circumvention is effected by exercising 173 | rights under this License with respect to the covered work, and you disclaim any 174 | intention to limit operation or modification of the work as a means of enforcing, 175 | against the work's users, your or third parties' legal rights to forbid circumvention 176 | of technological measures. 177 | 178 | ### 4. Conveying Verbatim Copies. 179 | 180 | You may convey verbatim copies of the Program's source code as you receive it, in any 181 | medium, provided that you conspicuously and appropriately publish on each copy an 182 | appropriate copyright notice; keep intact all notices stating that this License and 183 | any non-permissive terms added in accord with section 7 apply to the code; keep 184 | intact all notices of the absence of any warranty; and give all recipients a copy of 185 | this License along with the Program. 186 | 187 | You may charge any price or no price for each copy that you convey, and you may offer 188 | support or warranty protection for a fee. 189 | 190 | ### 5. Conveying Modified Source Versions. 191 | 192 | You may convey a work based on the Program, or the modifications to produce it from 193 | the Program, in the form of source code under the terms of section 4, provided that 194 | you also meet all of these conditions: 195 | 196 | * a) The work must carry prominent notices stating that you modified it, and giving a 197 | relevant date. 198 | * b) The work must carry prominent notices stating that it is released under this 199 | License and any conditions added under section 7. This requirement modifies the 200 | requirement in section 4 to “keep intact all notices”. 201 | * c) You must license the entire work, as a whole, under this License to anyone who 202 | comes into possession of a copy. This License will therefore apply, along with any 203 | applicable section 7 additional terms, to the whole of the work, and all its parts, 204 | regardless of how they are packaged. This License gives no permission to license the 205 | work in any other way, but it does not invalidate such permission if you have 206 | separately received it. 207 | * d) If the work has interactive user interfaces, each must display Appropriate Legal 208 | Notices; however, if the Program has interactive interfaces that do not display 209 | Appropriate Legal Notices, your work need not make them do so. 210 | 211 | A compilation of a covered work with other separate and independent works, which are 212 | not by their nature extensions of the covered work, and which are not combined with 213 | it such as to form a larger program, in or on a volume of a storage or distribution 214 | medium, is called an “aggregate” if the compilation and its resulting 215 | copyright are not used to limit the access or legal rights of the compilation's users 216 | beyond what the individual works permit. Inclusion of a covered work in an aggregate 217 | does not cause this License to apply to the other parts of the aggregate. 218 | 219 | ### 6. Conveying Non-Source Forms. 220 | 221 | You may convey a covered work in object code form under the terms of sections 4 and 222 | 5, provided that you also convey the machine-readable Corresponding Source under the 223 | terms of this License, in one of these ways: 224 | 225 | * a) Convey the object code in, or embodied in, a physical product (including a 226 | physical distribution medium), accompanied by the Corresponding Source fixed on a 227 | durable physical medium customarily used for software interchange. 228 | * b) Convey the object code in, or embodied in, a physical product (including a 229 | physical distribution medium), accompanied by a written offer, valid for at least 230 | three years and valid for as long as you offer spare parts or customer support for 231 | that product model, to give anyone who possesses the object code either (1) a copy of 232 | the Corresponding Source for all the software in the product that is covered by this 233 | License, on a durable physical medium customarily used for software interchange, for 234 | a price no more than your reasonable cost of physically performing this conveying of 235 | source, or (2) access to copy the Corresponding Source from a network server at no 236 | charge. 237 | * c) Convey individual copies of the object code with a copy of the written offer to 238 | provide the Corresponding Source. This alternative is allowed only occasionally and 239 | noncommercially, and only if you received the object code with such an offer, in 240 | accord with subsection 6b. 241 | * d) Convey the object code by offering access from a designated place (gratis or for 242 | a charge), and offer equivalent access to the Corresponding Source in the same way 243 | through the same place at no further charge. You need not require recipients to copy 244 | the Corresponding Source along with the object code. If the place to copy the object 245 | code is a network server, the Corresponding Source may be on a different server 246 | (operated by you or a third party) that supports equivalent copying facilities, 247 | provided you maintain clear directions next to the object code saying where to find 248 | the Corresponding Source. Regardless of what server hosts the Corresponding Source, 249 | you remain obligated to ensure that it is available for as long as needed to satisfy 250 | these requirements. 251 | * e) Convey the object code using peer-to-peer transmission, provided you inform 252 | other peers where the object code and Corresponding Source of the work are being 253 | offered to the general public at no charge under subsection 6d. 254 | 255 | A separable portion of the object code, whose source code is excluded from the 256 | Corresponding Source as a System Library, need not be included in conveying the 257 | object code work. 258 | 259 | A “User Product” is either (1) a “consumer product”, which 260 | means any tangible personal property which is normally used for personal, family, or 261 | household purposes, or (2) anything designed or sold for incorporation into a 262 | dwelling. In determining whether a product is a consumer product, doubtful cases 263 | shall be resolved in favor of coverage. For a particular product received by a 264 | particular user, “normally used” refers to a typical or common use of 265 | that class of product, regardless of the status of the particular user or of the way 266 | in which the particular user actually uses, or expects or is expected to use, the 267 | product. A product is a consumer product regardless of whether the product has 268 | substantial commercial, industrial or non-consumer uses, unless such uses represent 269 | the only significant mode of use of the product. 270 | 271 | “Installation Information” for a User Product means any methods, 272 | procedures, authorization keys, or other information required to install and execute 273 | modified versions of a covered work in that User Product from a modified version of 274 | its Corresponding Source. The information must suffice to ensure that the continued 275 | functioning of the modified object code is in no case prevented or interfered with 276 | solely because modification has been made. 277 | 278 | If you convey an object code work under this section in, or with, or specifically for 279 | use in, a User Product, and the conveying occurs as part of a transaction in which 280 | the right of possession and use of the User Product is transferred to the recipient 281 | in perpetuity or for a fixed term (regardless of how the transaction is 282 | characterized), the Corresponding Source conveyed under this section must be 283 | accompanied by the Installation Information. But this requirement does not apply if 284 | neither you nor any third party retains the ability to install modified object code 285 | on the User Product (for example, the work has been installed in ROM). 286 | 287 | The requirement to provide Installation Information does not include a requirement to 288 | continue to provide support service, warranty, or updates for a work that has been 289 | modified or installed by the recipient, or for the User Product in which it has been 290 | modified or installed. Access to a network may be denied when the modification itself 291 | materially and adversely affects the operation of the network or violates the rules 292 | and protocols for communication across the network. 293 | 294 | Corresponding Source conveyed, and Installation Information provided, in accord with 295 | this section must be in a format that is publicly documented (and with an 296 | implementation available to the public in source code form), and must require no 297 | special password or key for unpacking, reading or copying. 298 | 299 | ### 7. Additional Terms. 300 | 301 | “Additional permissions” are terms that supplement the terms of this 302 | License by making exceptions from one or more of its conditions. Additional 303 | permissions that are applicable to the entire Program shall be treated as though they 304 | were included in this License, to the extent that they are valid under applicable 305 | law. If additional permissions apply only to part of the Program, that part may be 306 | used separately under those permissions, but the entire Program remains governed by 307 | this License without regard to the additional permissions. 308 | 309 | When you convey a copy of a covered work, you may at your option remove any 310 | additional permissions from that copy, or from any part of it. (Additional 311 | permissions may be written to require their own removal in certain cases when you 312 | modify the work.) You may place additional permissions on material, added by you to a 313 | covered work, for which you have or can give appropriate copyright permission. 314 | 315 | Notwithstanding any other provision of this License, for material you add to a 316 | covered work, you may (if authorized by the copyright holders of that material) 317 | supplement the terms of this License with terms: 318 | 319 | * a) Disclaiming warranty or limiting liability differently from the terms of 320 | sections 15 and 16 of this License; or 321 | * b) Requiring preservation of specified reasonable legal notices or author 322 | attributions in that material or in the Appropriate Legal Notices displayed by works 323 | containing it; or 324 | * c) Prohibiting misrepresentation of the origin of that material, or requiring that 325 | modified versions of such material be marked in reasonable ways as different from the 326 | original version; or 327 | * d) Limiting the use for publicity purposes of names of licensors or authors of the 328 | material; or 329 | * e) Declining to grant rights under trademark law for use of some trade names, 330 | trademarks, or service marks; or 331 | * f) Requiring indemnification of licensors and authors of that material by anyone 332 | who conveys the material (or modified versions of it) with contractual assumptions of 333 | liability to the recipient, for any liability that these contractual assumptions 334 | directly impose on those licensors and authors. 335 | 336 | All other non-permissive additional terms are considered “further 337 | restrictions” within the meaning of section 10. If the Program as you received 338 | it, or any part of it, contains a notice stating that it is governed by this License 339 | along with a term that is a further restriction, you may remove that term. If a 340 | license document contains a further restriction but permits relicensing or conveying 341 | under this License, you may add to a covered work material governed by the terms of 342 | that license document, provided that the further restriction does not survive such 343 | relicensing or conveying. 344 | 345 | If you add terms to a covered work in accord with this section, you must place, in 346 | the relevant source files, a statement of the additional terms that apply to those 347 | files, or a notice indicating where to find the applicable terms. 348 | 349 | Additional terms, permissive or non-permissive, may be stated in the form of a 350 | separately written license, or stated as exceptions; the above requirements apply 351 | either way. 352 | 353 | ### 8. Termination. 354 | 355 | You may not propagate or modify a covered work except as expressly provided under 356 | this License. Any attempt otherwise to propagate or modify it is void, and will 357 | automatically terminate your rights under this License (including any patent licenses 358 | granted under the third paragraph of section 11). 359 | 360 | However, if you cease all violation of this License, then your license from a 361 | particular copyright holder is reinstated (a) provisionally, unless and until the 362 | copyright holder explicitly and finally terminates your license, and (b) permanently, 363 | if the copyright holder fails to notify you of the violation by some reasonable means 364 | prior to 60 days after the cessation. 365 | 366 | Moreover, your license from a particular copyright holder is reinstated permanently 367 | if the copyright holder notifies you of the violation by some reasonable means, this 368 | is the first time you have received notice of violation of this License (for any 369 | work) from that copyright holder, and you cure the violation prior to 30 days after 370 | your receipt of the notice. 371 | 372 | Termination of your rights under this section does not terminate the licenses of 373 | parties who have received copies or rights from you under this License. If your 374 | rights have been terminated and not permanently reinstated, you do not qualify to 375 | receive new licenses for the same material under section 10. 376 | 377 | ### 9. Acceptance Not Required for Having Copies. 378 | 379 | You are not required to accept this License in order to receive or run a copy of the 380 | Program. Ancillary propagation of a covered work occurring solely as a consequence of 381 | using peer-to-peer transmission to receive a copy likewise does not require 382 | acceptance. However, nothing other than this License grants you permission to 383 | propagate or modify any covered work. These actions infringe copyright if you do not 384 | accept this License. Therefore, by modifying or propagating a covered work, you 385 | indicate your acceptance of this License to do so. 386 | 387 | ### 10. Automatic Licensing of Downstream Recipients. 388 | 389 | Each time you convey a covered work, the recipient automatically receives a license 390 | from the original licensors, to run, modify and propagate that work, subject to this 391 | License. You are not responsible for enforcing compliance by third parties with this 392 | License. 393 | 394 | An “entity transaction” is a transaction transferring control of an 395 | organization, or substantially all assets of one, or subdividing an organization, or 396 | merging organizations. If propagation of a covered work results from an entity 397 | transaction, each party to that transaction who receives a copy of the work also 398 | receives whatever licenses to the work the party's predecessor in interest had or 399 | could give under the previous paragraph, plus a right to possession of the 400 | Corresponding Source of the work from the predecessor in interest, if the predecessor 401 | has it or can get it with reasonable efforts. 402 | 403 | You may not impose any further restrictions on the exercise of the rights granted or 404 | affirmed under this License. For example, you may not impose a license fee, royalty, 405 | or other charge for exercise of rights granted under this License, and you may not 406 | initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging 407 | that any patent claim is infringed by making, using, selling, offering for sale, or 408 | importing the Program or any portion of it. 409 | 410 | ### 11. Patents. 411 | 412 | A “contributor” is a copyright holder who authorizes use under this 413 | License of the Program or a work on which the Program is based. The work thus 414 | licensed is called the contributor's “contributor version”. 415 | 416 | A contributor's “essential patent claims” are all patent claims owned or 417 | controlled by the contributor, whether already acquired or hereafter acquired, that 418 | would be infringed by some manner, permitted by this License, of making, using, or 419 | selling its contributor version, but do not include claims that would be infringed 420 | only as a consequence of further modification of the contributor version. For 421 | purposes of this definition, “control” includes the right to grant patent 422 | sublicenses in a manner consistent with the requirements of this License. 423 | 424 | Each contributor grants you a non-exclusive, worldwide, royalty-free patent license 425 | under the contributor's essential patent claims, to make, use, sell, offer for sale, 426 | import and otherwise run, modify and propagate the contents of its contributor 427 | version. 428 | 429 | In the following three paragraphs, a “patent license” is any express 430 | agreement or commitment, however denominated, not to enforce a patent (such as an 431 | express permission to practice a patent or covenant not to sue for patent 432 | infringement). To “grant” such a patent license to a party means to make 433 | such an agreement or commitment not to enforce a patent against the party. 434 | 435 | If you convey a covered work, knowingly relying on a patent license, and the 436 | Corresponding Source of the work is not available for anyone to copy, free of charge 437 | and under the terms of this License, through a publicly available network server or 438 | other readily accessible means, then you must either (1) cause the Corresponding 439 | Source to be so available, or (2) arrange to deprive yourself of the benefit of the 440 | patent license for this particular work, or (3) arrange, in a manner consistent with 441 | the requirements of this License, to extend the patent license to downstream 442 | recipients. “Knowingly relying” means you have actual knowledge that, but 443 | for the patent license, your conveying the covered work in a country, or your 444 | recipient's use of the covered work in a country, would infringe one or more 445 | identifiable patents in that country that you have reason to believe are valid. 446 | 447 | If, pursuant to or in connection with a single transaction or arrangement, you 448 | convey, or propagate by procuring conveyance of, a covered work, and grant a patent 449 | license to some of the parties receiving the covered work authorizing them to use, 450 | propagate, modify or convey a specific copy of the covered work, then the patent 451 | license you grant is automatically extended to all recipients of the covered work and 452 | works based on it. 453 | 454 | A patent license is “discriminatory” if it does not include within the 455 | scope of its coverage, prohibits the exercise of, or is conditioned on the 456 | non-exercise of one or more of the rights that are specifically granted under this 457 | License. You may not convey a covered work if you are a party to an arrangement with 458 | a third party that is in the business of distributing software, under which you make 459 | payment to the third party based on the extent of your activity of conveying the 460 | work, and under which the third party grants, to any of the parties who would receive 461 | the covered work from you, a discriminatory patent license (a) in connection with 462 | copies of the covered work conveyed by you (or copies made from those copies), or (b) 463 | primarily for and in connection with specific products or compilations that contain 464 | the covered work, unless you entered into that arrangement, or that patent license 465 | was granted, prior to 28 March 2007. 466 | 467 | Nothing in this License shall be construed as excluding or limiting any implied 468 | license or other defenses to infringement that may otherwise be available to you 469 | under applicable patent law. 470 | 471 | ### 12. No Surrender of Others' Freedom. 472 | 473 | If conditions are imposed on you (whether by court order, agreement or otherwise) 474 | that contradict the conditions of this License, they do not excuse you from the 475 | conditions of this License. If you cannot convey a covered work so as to satisfy 476 | simultaneously your obligations under this License and any other pertinent 477 | obligations, then as a consequence you may not convey it at all. For example, if you 478 | agree to terms that obligate you to collect a royalty for further conveying from 479 | those to whom you convey the Program, the only way you could satisfy both those terms 480 | and this License would be to refrain entirely from conveying the Program. 481 | 482 | ### 13. Use with the GNU Affero General Public License. 483 | 484 | Notwithstanding any other provision of this License, you have permission to link or 485 | combine any covered work with a work licensed under version 3 of the GNU Affero 486 | General Public License into a single combined work, and to convey the resulting work. 487 | The terms of this License will continue to apply to the part which is the covered 488 | work, but the special requirements of the GNU Affero General Public License, section 489 | 13, concerning interaction through a network will apply to the combination as such. 490 | 491 | ### 14. Revised Versions of this License. 492 | 493 | The Free Software Foundation may publish revised and/or new versions of the GNU 494 | General Public License from time to time. Such new versions will be similar in spirit 495 | to the present version, but may differ in detail to address new problems or concerns. 496 | 497 | Each version is given a distinguishing version number. If the Program specifies that 498 | a certain numbered version of the GNU General Public License “or any later 499 | version” applies to it, you have the option of following the terms and 500 | conditions either of that numbered version or of any later version published by the 501 | Free Software Foundation. If the Program does not specify a version number of the GNU 502 | General Public License, you may choose any version ever published by the Free 503 | Software Foundation. 504 | 505 | If the Program specifies that a proxy can decide which future versions of the GNU 506 | General Public License can be used, that proxy's public statement of acceptance of a 507 | version permanently authorizes you to choose that version for the Program. 508 | 509 | Later license versions may give you additional or different permissions. However, no 510 | additional obligations are imposed on any author or copyright holder as a result of 511 | your choosing to follow a later version. 512 | 513 | ### 15. Disclaimer of Warranty. 514 | 515 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. 516 | EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 517 | PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER 518 | EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 519 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE 520 | QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE 521 | DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 522 | 523 | ### 16. Limitation of Liability. 524 | 525 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY 526 | COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS 527 | PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, 528 | INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE 529 | PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE 530 | OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE 531 | WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 532 | POSSIBILITY OF SUCH DAMAGES. 533 | 534 | ### 17. Interpretation of Sections 15 and 16. 535 | 536 | If the disclaimer of warranty and limitation of liability provided above cannot be 537 | given local legal effect according to their terms, reviewing courts shall apply local 538 | law that most closely approximates an absolute waiver of all civil liability in 539 | connection with the Program, unless a warranty or assumption of liability accompanies 540 | a copy of the Program in return for a fee. 541 | 542 | END OF TERMS AND CONDITIONS 543 | 544 | ## How to Apply These Terms to Your New Programs 545 | 546 | If you develop a new program, and you want it to be of the greatest possible use to 547 | the public, the best way to achieve this is to make it free software which everyone 548 | can redistribute and change under these terms. 549 | 550 | To do so, attach the following notices to the program. It is safest to attach them 551 | to the start of each source file to most effectively state the exclusion of warranty; 552 | and each file should have at least the “copyright” line and a pointer to 553 | where the full notice is found. 554 | 555 | 556 | Copyright (C) 557 | 558 | This program is free software: you can redistribute it and/or modify 559 | it under the terms of the GNU General Public License as published by 560 | the Free Software Foundation, either version 3 of the License, or 561 | (at your option) any later version. 562 | 563 | This program is distributed in the hope that it will be useful, 564 | but WITHOUT ANY WARRANTY; without even the implied warranty of 565 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 566 | GNU General Public License for more details. 567 | 568 | You should have received a copy of the GNU General Public License 569 | along with this program. If not, see . 570 | 571 | Also add information on how to contact you by electronic and paper mail. 572 | 573 | If the program does terminal interaction, make it output a short notice like this 574 | when it starts in an interactive mode: 575 | 576 | Copyright (C) 577 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 578 | This is free software, and you are welcome to redistribute it 579 | under certain conditions; type `show c' for details. 580 | 581 | The hypothetical commands `show w' and `show c' should show the appropriate parts of 582 | the General Public License. Of course, your program's commands might be different; 583 | for a GUI interface, you would use an “about box”. 584 | 585 | You should also get your employer (if you work as a programmer) or school, if any, to 586 | sign a “copyright disclaimer” for the program, if necessary. For more 587 | information on this, and how to apply and follow the GNU GPL, see 588 | <>. 589 | 590 | The GNU General Public License does not permit incorporating your program into 591 | proprietary programs. If your program is a subroutine library, you may consider it 592 | more useful to permit linking proprietary applications with the library. If this is 593 | what you want to do, use the GNU Lesser General Public License instead of this 594 | License. But first, please read 595 | <>. -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | PROJECTNAME="Pinput" 2 | 3 | all: prelogue build archive epilogue 4 | 5 | prelogue: 6 | @echo "" 7 | @echo ">>> $(PROJECTNAME) build started" 8 | @echo "" 9 | 10 | node_modules: package.json 11 | @npm install 12 | 13 | build: node_modules 14 | @npm run build 15 | 16 | archive: ./dist 17 | @zip pinput.zip -r ./dist 18 | 19 | epilogue: 20 | @echo "" 21 | @echo ">>> $(PROJECTNAME) build has successfully finished" 22 | @echo "" 23 | 24 | .PHONY: prelogue build archive epilogue 25 | -------------------------------------------------------------------------------- /assets/tile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ch/pinput/8b19aaa5046095e63cd67f0d972de11ca23ba3e4/assets/tile.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pinput", 3 | "requires": true, 4 | "lockfileVersion": 1, 5 | "dependencies": { 6 | "JSONStream": { 7 | "version": "1.3.5", 8 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", 9 | "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", 10 | "dev": true, 11 | "requires": { 12 | "jsonparse": "^1.2.0", 13 | "through": ">=2.2.7 <3" 14 | } 15 | }, 16 | "acorn": { 17 | "version": "6.4.1", 18 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", 19 | "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", 20 | "dev": true 21 | }, 22 | "acorn-dynamic-import": { 23 | "version": "4.0.0", 24 | "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", 25 | "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", 26 | "dev": true 27 | }, 28 | "acorn-node": { 29 | "version": "1.7.0", 30 | "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.7.0.tgz", 31 | "integrity": "sha512-XhahLSsCB6X6CJbe+uNu3Mn9sJBNFxtBN9NLgAOQovfS6Kh0lDUtmlclhjn9CvEK7A7YyRU13PXlNcpSiLI9Yw==", 32 | "dev": true, 33 | "requires": { 34 | "acorn": "^6.1.1", 35 | "acorn-dynamic-import": "^4.0.0", 36 | "acorn-walk": "^6.1.1", 37 | "xtend": "^4.0.1" 38 | } 39 | }, 40 | "acorn-walk": { 41 | "version": "6.1.1", 42 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", 43 | "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", 44 | "dev": true 45 | }, 46 | "ansi-regex": { 47 | "version": "2.0.0", 48 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", 49 | "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=", 50 | "dev": true 51 | }, 52 | "ansi-styles": { 53 | "version": "2.2.1", 54 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 55 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 56 | "dev": true 57 | }, 58 | "array-filter": { 59 | "version": "0.0.1", 60 | "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", 61 | "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", 62 | "dev": true 63 | }, 64 | "array-map": { 65 | "version": "0.0.0", 66 | "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", 67 | "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", 68 | "dev": true 69 | }, 70 | "array-reduce": { 71 | "version": "0.0.0", 72 | "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", 73 | "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", 74 | "dev": true 75 | }, 76 | "asn1.js": { 77 | "version": "4.10.1", 78 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", 79 | "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", 80 | "dev": true, 81 | "requires": { 82 | "bn.js": "^4.0.0", 83 | "inherits": "^2.0.1", 84 | "minimalistic-assert": "^1.0.0" 85 | } 86 | }, 87 | "assert": { 88 | "version": "1.5.0", 89 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", 90 | "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", 91 | "dev": true, 92 | "requires": { 93 | "object-assign": "^4.1.1", 94 | "util": "0.10.3" 95 | }, 96 | "dependencies": { 97 | "inherits": { 98 | "version": "2.0.1", 99 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 100 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", 101 | "dev": true 102 | }, 103 | "util": { 104 | "version": "0.10.3", 105 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 106 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", 107 | "dev": true, 108 | "requires": { 109 | "inherits": "2.0.1" 110 | } 111 | } 112 | } 113 | }, 114 | "babel-core": { 115 | "version": "6.26.3", 116 | "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", 117 | "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", 118 | "dev": true, 119 | "requires": { 120 | "babel-code-frame": "^6.26.0", 121 | "babel-generator": "^6.26.0", 122 | "babel-helpers": "^6.24.1", 123 | "babel-messages": "^6.23.0", 124 | "babel-register": "^6.26.0", 125 | "babel-runtime": "^6.26.0", 126 | "babel-template": "^6.26.0", 127 | "babel-traverse": "^6.26.0", 128 | "babel-types": "^6.26.0", 129 | "babylon": "^6.18.0", 130 | "convert-source-map": "^1.5.1", 131 | "debug": "^2.6.9", 132 | "json5": "^0.5.1", 133 | "lodash": "^4.17.4", 134 | "minimatch": "^3.0.4", 135 | "path-is-absolute": "^1.0.1", 136 | "private": "^0.1.8", 137 | "slash": "^1.0.0", 138 | "source-map": "^0.5.7" 139 | }, 140 | "dependencies": { 141 | "babel-code-frame": { 142 | "version": "6.26.0", 143 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 144 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 145 | "dev": true, 146 | "requires": { 147 | "chalk": "^1.1.3", 148 | "esutils": "^2.0.2", 149 | "js-tokens": "^3.0.2" 150 | } 151 | }, 152 | "babel-generator": { 153 | "version": "6.26.1", 154 | "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", 155 | "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", 156 | "dev": true, 157 | "requires": { 158 | "babel-messages": "^6.23.0", 159 | "babel-runtime": "^6.26.0", 160 | "babel-types": "^6.26.0", 161 | "detect-indent": "^4.0.0", 162 | "jsesc": "^1.3.0", 163 | "lodash": "^4.17.4", 164 | "source-map": "^0.5.7", 165 | "trim-right": "^1.0.1" 166 | } 167 | }, 168 | "babel-register": { 169 | "version": "6.26.0", 170 | "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", 171 | "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", 172 | "dev": true, 173 | "requires": { 174 | "babel-core": "^6.26.0", 175 | "babel-runtime": "^6.26.0", 176 | "core-js": "^2.5.0", 177 | "home-or-tmp": "^2.0.0", 178 | "lodash": "^4.17.4", 179 | "mkdirp": "^0.5.1", 180 | "source-map-support": "^0.4.15" 181 | }, 182 | "dependencies": { 183 | "core-js": { 184 | "version": "2.6.9", 185 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", 186 | "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", 187 | "dev": true 188 | } 189 | } 190 | }, 191 | "babel-runtime": { 192 | "version": "6.26.0", 193 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 194 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 195 | "dev": true, 196 | "requires": { 197 | "core-js": "^2.4.0", 198 | "regenerator-runtime": "^0.11.0" 199 | } 200 | }, 201 | "babel-traverse": { 202 | "version": "6.26.0", 203 | "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", 204 | "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", 205 | "dev": true, 206 | "requires": { 207 | "babel-code-frame": "^6.26.0", 208 | "babel-messages": "^6.23.0", 209 | "babel-runtime": "^6.26.0", 210 | "babel-types": "^6.26.0", 211 | "babylon": "^6.18.0", 212 | "debug": "^2.6.8", 213 | "globals": "^9.18.0", 214 | "invariant": "^2.2.2", 215 | "lodash": "^4.17.4" 216 | } 217 | }, 218 | "babel-types": { 219 | "version": "6.26.0", 220 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 221 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 222 | "dev": true, 223 | "requires": { 224 | "babel-runtime": "^6.26.0", 225 | "esutils": "^2.0.2", 226 | "lodash": "^4.17.4", 227 | "to-fast-properties": "^1.0.3" 228 | } 229 | }, 230 | "babylon": { 231 | "version": "6.18.0", 232 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 233 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", 234 | "dev": true 235 | }, 236 | "convert-source-map": { 237 | "version": "1.6.0", 238 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", 239 | "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", 240 | "dev": true, 241 | "requires": { 242 | "safe-buffer": "~5.1.1" 243 | } 244 | }, 245 | "debug": { 246 | "version": "2.6.9", 247 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 248 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 249 | "dev": true, 250 | "requires": { 251 | "ms": "2.0.0" 252 | } 253 | }, 254 | "invariant": { 255 | "version": "2.2.4", 256 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 257 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 258 | "dev": true, 259 | "requires": { 260 | "loose-envify": "^1.0.0" 261 | } 262 | }, 263 | "js-tokens": { 264 | "version": "3.0.2", 265 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 266 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 267 | "dev": true 268 | }, 269 | "ms": { 270 | "version": "2.0.0", 271 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 272 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 273 | "dev": true 274 | }, 275 | "path-is-absolute": { 276 | "version": "1.0.1", 277 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 278 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 279 | "dev": true 280 | }, 281 | "private": { 282 | "version": "0.1.8", 283 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", 284 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", 285 | "dev": true 286 | }, 287 | "regenerator-runtime": { 288 | "version": "0.11.1", 289 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 290 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", 291 | "dev": true 292 | }, 293 | "source-map": { 294 | "version": "0.5.7", 295 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 296 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 297 | "dev": true 298 | }, 299 | "to-fast-properties": { 300 | "version": "1.0.3", 301 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 302 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", 303 | "dev": true 304 | } 305 | } 306 | }, 307 | "babel-helpers": { 308 | "version": "6.24.1", 309 | "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", 310 | "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", 311 | "dev": true, 312 | "requires": { 313 | "babel-runtime": "^6.22.0", 314 | "babel-template": "^6.24.1" 315 | } 316 | }, 317 | "babel-messages": { 318 | "version": "6.23.0", 319 | "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 320 | "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", 321 | "dev": true, 322 | "requires": { 323 | "babel-runtime": "^6.22.0" 324 | } 325 | }, 326 | "babel-plugin-transform-es2015-modules-commonjs": { 327 | "version": "6.26.2", 328 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", 329 | "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", 330 | "dev": true, 331 | "requires": { 332 | "babel-plugin-transform-strict-mode": "^6.24.1", 333 | "babel-runtime": "^6.26.0", 334 | "babel-template": "^6.26.0", 335 | "babel-types": "^6.26.0" 336 | }, 337 | "dependencies": { 338 | "babel-runtime": { 339 | "version": "6.26.0", 340 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 341 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 342 | "dev": true, 343 | "requires": { 344 | "core-js": "^2.4.0", 345 | "regenerator-runtime": "^0.11.0" 346 | } 347 | }, 348 | "babel-types": { 349 | "version": "6.26.0", 350 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 351 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 352 | "dev": true, 353 | "requires": { 354 | "babel-runtime": "^6.26.0", 355 | "esutils": "^2.0.2", 356 | "lodash": "^4.17.4", 357 | "to-fast-properties": "^1.0.3" 358 | } 359 | }, 360 | "regenerator-runtime": { 361 | "version": "0.11.1", 362 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 363 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", 364 | "dev": true 365 | }, 366 | "to-fast-properties": { 367 | "version": "1.0.3", 368 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 369 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", 370 | "dev": true 371 | } 372 | } 373 | }, 374 | "babel-plugin-transform-strict-mode": { 375 | "version": "6.24.1", 376 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", 377 | "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", 378 | "dev": true, 379 | "requires": { 380 | "babel-runtime": "^6.22.0", 381 | "babel-types": "^6.24.1" 382 | } 383 | }, 384 | "babel-runtime": { 385 | "version": "6.25.0", 386 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz", 387 | "integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=", 388 | "dev": true, 389 | "requires": { 390 | "core-js": "^2.4.0", 391 | "regenerator-runtime": "^0.10.0" 392 | } 393 | }, 394 | "babel-template": { 395 | "version": "6.26.0", 396 | "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", 397 | "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", 398 | "dev": true, 399 | "requires": { 400 | "babel-runtime": "^6.26.0", 401 | "babel-traverse": "^6.26.0", 402 | "babel-types": "^6.26.0", 403 | "babylon": "^6.18.0", 404 | "lodash": "^4.17.4" 405 | }, 406 | "dependencies": { 407 | "babel-code-frame": { 408 | "version": "6.26.0", 409 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 410 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 411 | "dev": true, 412 | "requires": { 413 | "chalk": "^1.1.3", 414 | "esutils": "^2.0.2", 415 | "js-tokens": "^3.0.2" 416 | } 417 | }, 418 | "babel-runtime": { 419 | "version": "6.26.0", 420 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 421 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 422 | "dev": true, 423 | "requires": { 424 | "core-js": "^2.4.0", 425 | "regenerator-runtime": "^0.11.0" 426 | } 427 | }, 428 | "babel-traverse": { 429 | "version": "6.26.0", 430 | "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", 431 | "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", 432 | "dev": true, 433 | "requires": { 434 | "babel-code-frame": "^6.26.0", 435 | "babel-messages": "^6.23.0", 436 | "babel-runtime": "^6.26.0", 437 | "babel-types": "^6.26.0", 438 | "babylon": "^6.18.0", 439 | "debug": "^2.6.8", 440 | "globals": "^9.18.0", 441 | "invariant": "^2.2.2", 442 | "lodash": "^4.17.4" 443 | } 444 | }, 445 | "babel-types": { 446 | "version": "6.26.0", 447 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 448 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 449 | "dev": true, 450 | "requires": { 451 | "babel-runtime": "^6.26.0", 452 | "esutils": "^2.0.2", 453 | "lodash": "^4.17.4", 454 | "to-fast-properties": "^1.0.3" 455 | } 456 | }, 457 | "babylon": { 458 | "version": "6.18.0", 459 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 460 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", 461 | "dev": true 462 | }, 463 | "debug": { 464 | "version": "2.6.9", 465 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 466 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 467 | "dev": true, 468 | "requires": { 469 | "ms": "2.0.0" 470 | } 471 | }, 472 | "invariant": { 473 | "version": "2.2.4", 474 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 475 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 476 | "dev": true, 477 | "requires": { 478 | "loose-envify": "^1.0.0" 479 | } 480 | }, 481 | "js-tokens": { 482 | "version": "3.0.2", 483 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 484 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 485 | "dev": true 486 | }, 487 | "ms": { 488 | "version": "2.0.0", 489 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 490 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 491 | "dev": true 492 | }, 493 | "regenerator-runtime": { 494 | "version": "0.11.1", 495 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 496 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", 497 | "dev": true 498 | }, 499 | "to-fast-properties": { 500 | "version": "1.0.3", 501 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 502 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", 503 | "dev": true 504 | } 505 | } 506 | }, 507 | "babel-types": { 508 | "version": "6.25.0", 509 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", 510 | "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", 511 | "dev": true, 512 | "requires": { 513 | "babel-runtime": "^6.22.0", 514 | "esutils": "^2.0.2", 515 | "lodash": "^4.2.0", 516 | "to-fast-properties": "^1.0.1" 517 | } 518 | }, 519 | "babelify": { 520 | "version": "7.3.0", 521 | "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", 522 | "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", 523 | "dev": true, 524 | "requires": { 525 | "babel-core": "^6.0.14", 526 | "object-assign": "^4.0.0" 527 | }, 528 | "dependencies": { 529 | "object-assign": { 530 | "version": "4.1.1", 531 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 532 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 533 | "dev": true 534 | } 535 | } 536 | }, 537 | "balanced-match": { 538 | "version": "1.0.0", 539 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 540 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 541 | "dev": true 542 | }, 543 | "base64-js": { 544 | "version": "1.3.0", 545 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", 546 | "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", 547 | "dev": true 548 | }, 549 | "bn.js": { 550 | "version": "4.11.8", 551 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", 552 | "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", 553 | "dev": true 554 | }, 555 | "bootstrap": { 556 | "version": "3.4.1", 557 | "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", 558 | "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==" 559 | }, 560 | "brace-expansion": { 561 | "version": "1.1.11", 562 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 563 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 564 | "dev": true, 565 | "requires": { 566 | "balanced-match": "^1.0.0", 567 | "concat-map": "0.0.1" 568 | } 569 | }, 570 | "brorand": { 571 | "version": "1.1.0", 572 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 573 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", 574 | "dev": true 575 | }, 576 | "browser-pack": { 577 | "version": "6.1.0", 578 | "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", 579 | "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", 580 | "dev": true, 581 | "requires": { 582 | "JSONStream": "^1.0.3", 583 | "combine-source-map": "~0.8.0", 584 | "defined": "^1.0.0", 585 | "safe-buffer": "^5.1.1", 586 | "through2": "^2.0.0", 587 | "umd": "^3.0.0" 588 | } 589 | }, 590 | "browser-resolve": { 591 | "version": "1.11.3", 592 | "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", 593 | "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", 594 | "dev": true, 595 | "requires": { 596 | "resolve": "1.1.7" 597 | }, 598 | "dependencies": { 599 | "resolve": { 600 | "version": "1.1.7", 601 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", 602 | "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", 603 | "dev": true 604 | } 605 | } 606 | }, 607 | "browserify": { 608 | "version": "16.2.3", 609 | "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.2.3.tgz", 610 | "integrity": "sha512-zQt/Gd1+W+IY+h/xX2NYMW4orQWhqSwyV+xsblycTtpOuB27h1fZhhNQuipJ4t79ohw4P4mMem0jp/ZkISQtjQ==", 611 | "dev": true, 612 | "requires": { 613 | "JSONStream": "^1.0.3", 614 | "assert": "^1.4.0", 615 | "browser-pack": "^6.0.1", 616 | "browser-resolve": "^1.11.0", 617 | "browserify-zlib": "~0.2.0", 618 | "buffer": "^5.0.2", 619 | "cached-path-relative": "^1.0.0", 620 | "concat-stream": "^1.6.0", 621 | "console-browserify": "^1.1.0", 622 | "constants-browserify": "~1.0.0", 623 | "crypto-browserify": "^3.0.0", 624 | "defined": "^1.0.0", 625 | "deps-sort": "^2.0.0", 626 | "domain-browser": "^1.2.0", 627 | "duplexer2": "~0.1.2", 628 | "events": "^2.0.0", 629 | "glob": "^7.1.0", 630 | "has": "^1.0.0", 631 | "htmlescape": "^1.1.0", 632 | "https-browserify": "^1.0.0", 633 | "inherits": "~2.0.1", 634 | "insert-module-globals": "^7.0.0", 635 | "labeled-stream-splicer": "^2.0.0", 636 | "mkdirp": "^0.5.0", 637 | "module-deps": "^6.0.0", 638 | "os-browserify": "~0.3.0", 639 | "parents": "^1.0.1", 640 | "path-browserify": "~0.0.0", 641 | "process": "~0.11.0", 642 | "punycode": "^1.3.2", 643 | "querystring-es3": "~0.2.0", 644 | "read-only-stream": "^2.0.0", 645 | "readable-stream": "^2.0.2", 646 | "resolve": "^1.1.4", 647 | "shasum": "^1.0.0", 648 | "shell-quote": "^1.6.1", 649 | "stream-browserify": "^2.0.0", 650 | "stream-http": "^2.0.0", 651 | "string_decoder": "^1.1.1", 652 | "subarg": "^1.0.0", 653 | "syntax-error": "^1.1.1", 654 | "through2": "^2.0.0", 655 | "timers-browserify": "^1.0.1", 656 | "tty-browserify": "0.0.1", 657 | "url": "~0.11.0", 658 | "util": "~0.10.1", 659 | "vm-browserify": "^1.0.0", 660 | "xtend": "^4.0.0" 661 | } 662 | }, 663 | "browserify-aes": { 664 | "version": "1.2.0", 665 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", 666 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", 667 | "dev": true, 668 | "requires": { 669 | "buffer-xor": "^1.0.3", 670 | "cipher-base": "^1.0.0", 671 | "create-hash": "^1.1.0", 672 | "evp_bytestokey": "^1.0.3", 673 | "inherits": "^2.0.1", 674 | "safe-buffer": "^5.0.1" 675 | } 676 | }, 677 | "browserify-cipher": { 678 | "version": "1.0.1", 679 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", 680 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", 681 | "dev": true, 682 | "requires": { 683 | "browserify-aes": "^1.0.4", 684 | "browserify-des": "^1.0.0", 685 | "evp_bytestokey": "^1.0.0" 686 | } 687 | }, 688 | "browserify-des": { 689 | "version": "1.0.2", 690 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", 691 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", 692 | "dev": true, 693 | "requires": { 694 | "cipher-base": "^1.0.1", 695 | "des.js": "^1.0.0", 696 | "inherits": "^2.0.1", 697 | "safe-buffer": "^5.1.2" 698 | }, 699 | "dependencies": { 700 | "safe-buffer": { 701 | "version": "5.1.2", 702 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 703 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 704 | "dev": true 705 | } 706 | } 707 | }, 708 | "browserify-rsa": { 709 | "version": "4.0.1", 710 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", 711 | "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", 712 | "dev": true, 713 | "requires": { 714 | "bn.js": "^4.1.0", 715 | "randombytes": "^2.0.1" 716 | } 717 | }, 718 | "browserify-sign": { 719 | "version": "4.0.4", 720 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", 721 | "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", 722 | "dev": true, 723 | "requires": { 724 | "bn.js": "^4.1.1", 725 | "browserify-rsa": "^4.0.0", 726 | "create-hash": "^1.1.0", 727 | "create-hmac": "^1.1.2", 728 | "elliptic": "^6.0.0", 729 | "inherits": "^2.0.1", 730 | "parse-asn1": "^5.0.0" 731 | } 732 | }, 733 | "browserify-zlib": { 734 | "version": "0.2.0", 735 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", 736 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", 737 | "dev": true, 738 | "requires": { 739 | "pako": "~1.0.5" 740 | } 741 | }, 742 | "buffer": { 743 | "version": "5.2.1", 744 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", 745 | "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", 746 | "dev": true, 747 | "requires": { 748 | "base64-js": "^1.0.2", 749 | "ieee754": "^1.1.4" 750 | } 751 | }, 752 | "buffer-from": { 753 | "version": "1.1.1", 754 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 755 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 756 | "dev": true 757 | }, 758 | "buffer-xor": { 759 | "version": "1.0.3", 760 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 761 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", 762 | "dev": true 763 | }, 764 | "builtin-status-codes": { 765 | "version": "3.0.0", 766 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", 767 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", 768 | "dev": true 769 | }, 770 | "cached-path-relative": { 771 | "version": "1.0.2", 772 | "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz", 773 | "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==", 774 | "dev": true 775 | }, 776 | "camel-case": { 777 | "version": "3.0.0", 778 | "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", 779 | "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", 780 | "dev": true, 781 | "requires": { 782 | "no-case": "^2.2.0", 783 | "upper-case": "^1.1.1" 784 | } 785 | }, 786 | "chalk": { 787 | "version": "1.1.3", 788 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 789 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 790 | "dev": true, 791 | "requires": { 792 | "ansi-styles": "^2.2.1", 793 | "escape-string-regexp": "^1.0.2", 794 | "has-ansi": "^2.0.0", 795 | "strip-ansi": "^3.0.0", 796 | "supports-color": "^2.0.0" 797 | } 798 | }, 799 | "cipher-base": { 800 | "version": "1.0.4", 801 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 802 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 803 | "dev": true, 804 | "requires": { 805 | "inherits": "^2.0.1", 806 | "safe-buffer": "^5.0.1" 807 | } 808 | }, 809 | "clap": { 810 | "version": "1.2.0", 811 | "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", 812 | "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=", 813 | "dev": true, 814 | "requires": { 815 | "chalk": "^1.1.3" 816 | } 817 | }, 818 | "clean-css": { 819 | "version": "4.2.1", 820 | "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", 821 | "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", 822 | "dev": true, 823 | "requires": { 824 | "source-map": "~0.6.0" 825 | }, 826 | "dependencies": { 827 | "source-map": { 828 | "version": "0.6.1", 829 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 830 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 831 | "dev": true 832 | } 833 | } 834 | }, 835 | "combine-source-map": { 836 | "version": "0.8.0", 837 | "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", 838 | "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", 839 | "dev": true, 840 | "requires": { 841 | "convert-source-map": "~1.1.0", 842 | "inline-source-map": "~0.6.0", 843 | "lodash.memoize": "~3.0.3", 844 | "source-map": "~0.5.3" 845 | } 846 | }, 847 | "commander": { 848 | "version": "2.20.0", 849 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", 850 | "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", 851 | "dev": true 852 | }, 853 | "concat-map": { 854 | "version": "0.0.1", 855 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 856 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 857 | "dev": true 858 | }, 859 | "concat-stream": { 860 | "version": "1.6.2", 861 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 862 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 863 | "dev": true, 864 | "requires": { 865 | "buffer-from": "^1.0.0", 866 | "inherits": "^2.0.3", 867 | "readable-stream": "^2.2.2", 868 | "typedarray": "^0.0.6" 869 | } 870 | }, 871 | "console-browserify": { 872 | "version": "1.1.0", 873 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", 874 | "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", 875 | "dev": true, 876 | "requires": { 877 | "date-now": "^0.1.4" 878 | } 879 | }, 880 | "constants-browserify": { 881 | "version": "1.0.0", 882 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", 883 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", 884 | "dev": true 885 | }, 886 | "convert-source-map": { 887 | "version": "1.1.3", 888 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", 889 | "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", 890 | "dev": true 891 | }, 892 | "core-js": { 893 | "version": "2.4.0", 894 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.0.tgz", 895 | "integrity": "sha1-30CKtG0Br/kcAcPnlxk11CLFT4E=", 896 | "dev": true 897 | }, 898 | "core-util-is": { 899 | "version": "1.0.2", 900 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 901 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 902 | "dev": true 903 | }, 904 | "create-ecdh": { 905 | "version": "4.0.3", 906 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", 907 | "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", 908 | "dev": true, 909 | "requires": { 910 | "bn.js": "^4.1.0", 911 | "elliptic": "^6.0.0" 912 | } 913 | }, 914 | "create-hash": { 915 | "version": "1.2.0", 916 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 917 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 918 | "dev": true, 919 | "requires": { 920 | "cipher-base": "^1.0.1", 921 | "inherits": "^2.0.1", 922 | "md5.js": "^1.3.4", 923 | "ripemd160": "^2.0.1", 924 | "sha.js": "^2.4.0" 925 | } 926 | }, 927 | "create-hmac": { 928 | "version": "1.1.7", 929 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", 930 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", 931 | "dev": true, 932 | "requires": { 933 | "cipher-base": "^1.0.3", 934 | "create-hash": "^1.1.0", 935 | "inherits": "^2.0.1", 936 | "ripemd160": "^2.0.0", 937 | "safe-buffer": "^5.0.1", 938 | "sha.js": "^2.4.8" 939 | } 940 | }, 941 | "crypto-browserify": { 942 | "version": "3.12.0", 943 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", 944 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", 945 | "dev": true, 946 | "requires": { 947 | "browserify-cipher": "^1.0.0", 948 | "browserify-sign": "^4.0.0", 949 | "create-ecdh": "^4.0.0", 950 | "create-hash": "^1.1.0", 951 | "create-hmac": "^1.1.0", 952 | "diffie-hellman": "^5.0.0", 953 | "inherits": "^2.0.1", 954 | "pbkdf2": "^3.0.3", 955 | "public-encrypt": "^4.0.0", 956 | "randombytes": "^2.0.0", 957 | "randomfill": "^1.0.3" 958 | } 959 | }, 960 | "css-tree": { 961 | "version": "1.0.0-alpha19", 962 | "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha19.tgz", 963 | "integrity": "sha1-lJqoRsLBWzl5eS6PzgX2tuPrytQ=", 964 | "dev": true, 965 | "requires": { 966 | "source-map": "^0.5.3" 967 | } 968 | }, 969 | "csso": { 970 | "version": "3.1.1", 971 | "resolved": "https://registry.npmjs.org/csso/-/csso-3.1.1.tgz", 972 | "integrity": "sha1-q0J1hEhsLgLhgDJ1EbCwKpF5wnI=", 973 | "dev": true, 974 | "requires": { 975 | "css-tree": "1.0.0-alpha19" 976 | } 977 | }, 978 | "csso-cli": { 979 | "version": "1.0.0", 980 | "resolved": "https://registry.npmjs.org/csso-cli/-/csso-cli-1.0.0.tgz", 981 | "integrity": "sha1-UfUDuGVVNnU+4oJ4abTRpoW297o=", 982 | "dev": true, 983 | "requires": { 984 | "clap": "^1.0.9", 985 | "csso": "^3.0.0", 986 | "source-map": "^0.5.3" 987 | } 988 | }, 989 | "dash-ast": { 990 | "version": "1.0.0", 991 | "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", 992 | "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", 993 | "dev": true 994 | }, 995 | "date-now": { 996 | "version": "0.1.4", 997 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", 998 | "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", 999 | "dev": true 1000 | }, 1001 | "defined": { 1002 | "version": "1.0.0", 1003 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 1004 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", 1005 | "dev": true 1006 | }, 1007 | "deps-sort": { 1008 | "version": "2.0.0", 1009 | "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", 1010 | "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", 1011 | "dev": true, 1012 | "requires": { 1013 | "JSONStream": "^1.0.3", 1014 | "shasum": "^1.0.0", 1015 | "subarg": "^1.0.0", 1016 | "through2": "^2.0.0" 1017 | } 1018 | }, 1019 | "des.js": { 1020 | "version": "1.0.0", 1021 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", 1022 | "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", 1023 | "dev": true, 1024 | "requires": { 1025 | "inherits": "^2.0.1", 1026 | "minimalistic-assert": "^1.0.0" 1027 | } 1028 | }, 1029 | "detect-indent": { 1030 | "version": "4.0.0", 1031 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", 1032 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", 1033 | "dev": true, 1034 | "requires": { 1035 | "repeating": "^2.0.0" 1036 | } 1037 | }, 1038 | "detective": { 1039 | "version": "5.2.0", 1040 | "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", 1041 | "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", 1042 | "dev": true, 1043 | "requires": { 1044 | "acorn-node": "^1.6.1", 1045 | "defined": "^1.0.0", 1046 | "minimist": "^1.1.1" 1047 | } 1048 | }, 1049 | "diffie-hellman": { 1050 | "version": "5.0.3", 1051 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", 1052 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", 1053 | "dev": true, 1054 | "requires": { 1055 | "bn.js": "^4.1.0", 1056 | "miller-rabin": "^4.0.0", 1057 | "randombytes": "^2.0.0" 1058 | } 1059 | }, 1060 | "domain-browser": { 1061 | "version": "1.2.0", 1062 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", 1063 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", 1064 | "dev": true 1065 | }, 1066 | "duplexer2": { 1067 | "version": "0.1.4", 1068 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", 1069 | "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", 1070 | "dev": true, 1071 | "requires": { 1072 | "readable-stream": "^2.0.2" 1073 | } 1074 | }, 1075 | "elliptic": { 1076 | "version": "6.5.3", 1077 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", 1078 | "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", 1079 | "dev": true, 1080 | "requires": { 1081 | "bn.js": "^4.4.0", 1082 | "brorand": "^1.0.1", 1083 | "hash.js": "^1.0.0", 1084 | "hmac-drbg": "^1.0.0", 1085 | "inherits": "^2.0.1", 1086 | "minimalistic-assert": "^1.0.0", 1087 | "minimalistic-crypto-utils": "^1.0.0" 1088 | } 1089 | }, 1090 | "escape-string-regexp": { 1091 | "version": "1.0.5", 1092 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1093 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1094 | "dev": true 1095 | }, 1096 | "esutils": { 1097 | "version": "2.0.2", 1098 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 1099 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 1100 | "dev": true 1101 | }, 1102 | "events": { 1103 | "version": "2.1.0", 1104 | "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", 1105 | "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==", 1106 | "dev": true 1107 | }, 1108 | "evp_bytestokey": { 1109 | "version": "1.0.3", 1110 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", 1111 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", 1112 | "dev": true, 1113 | "requires": { 1114 | "md5.js": "^1.3.4", 1115 | "safe-buffer": "^5.1.1" 1116 | } 1117 | }, 1118 | "fs.realpath": { 1119 | "version": "1.0.0", 1120 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1121 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1122 | "dev": true 1123 | }, 1124 | "function-bind": { 1125 | "version": "1.1.1", 1126 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1127 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1128 | "dev": true 1129 | }, 1130 | "get-assigned-identifiers": { 1131 | "version": "1.2.0", 1132 | "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", 1133 | "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", 1134 | "dev": true 1135 | }, 1136 | "glob": { 1137 | "version": "7.1.4", 1138 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", 1139 | "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", 1140 | "dev": true, 1141 | "requires": { 1142 | "fs.realpath": "^1.0.0", 1143 | "inflight": "^1.0.4", 1144 | "inherits": "2", 1145 | "minimatch": "^3.0.4", 1146 | "once": "^1.3.0", 1147 | "path-is-absolute": "^1.0.0" 1148 | } 1149 | }, 1150 | "globals": { 1151 | "version": "9.18.0", 1152 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 1153 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", 1154 | "dev": true 1155 | }, 1156 | "has": { 1157 | "version": "1.0.3", 1158 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1159 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1160 | "dev": true, 1161 | "requires": { 1162 | "function-bind": "^1.1.1" 1163 | } 1164 | }, 1165 | "has-ansi": { 1166 | "version": "2.0.0", 1167 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1168 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1169 | "dev": true, 1170 | "requires": { 1171 | "ansi-regex": "^2.0.0" 1172 | } 1173 | }, 1174 | "hash-base": { 1175 | "version": "3.0.4", 1176 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", 1177 | "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", 1178 | "dev": true, 1179 | "requires": { 1180 | "inherits": "^2.0.1", 1181 | "safe-buffer": "^5.0.1" 1182 | } 1183 | }, 1184 | "hash.js": { 1185 | "version": "1.1.7", 1186 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", 1187 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", 1188 | "dev": true, 1189 | "requires": { 1190 | "inherits": "^2.0.3", 1191 | "minimalistic-assert": "^1.0.1" 1192 | } 1193 | }, 1194 | "he": { 1195 | "version": "1.2.0", 1196 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1197 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1198 | "dev": true 1199 | }, 1200 | "hmac-drbg": { 1201 | "version": "1.0.1", 1202 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 1203 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", 1204 | "dev": true, 1205 | "requires": { 1206 | "hash.js": "^1.0.3", 1207 | "minimalistic-assert": "^1.0.0", 1208 | "minimalistic-crypto-utils": "^1.0.1" 1209 | } 1210 | }, 1211 | "home-or-tmp": { 1212 | "version": "2.0.0", 1213 | "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", 1214 | "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", 1215 | "dev": true, 1216 | "requires": { 1217 | "os-homedir": "^1.0.0", 1218 | "os-tmpdir": "^1.0.1" 1219 | } 1220 | }, 1221 | "html-minifier": { 1222 | "version": "4.0.0", 1223 | "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", 1224 | "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", 1225 | "dev": true, 1226 | "requires": { 1227 | "camel-case": "^3.0.0", 1228 | "clean-css": "^4.2.1", 1229 | "commander": "^2.19.0", 1230 | "he": "^1.2.0", 1231 | "param-case": "^2.1.1", 1232 | "relateurl": "^0.2.7", 1233 | "uglify-js": "^3.5.1" 1234 | } 1235 | }, 1236 | "htmlescape": { 1237 | "version": "1.1.1", 1238 | "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", 1239 | "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", 1240 | "dev": true 1241 | }, 1242 | "https-browserify": { 1243 | "version": "1.0.0", 1244 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", 1245 | "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", 1246 | "dev": true 1247 | }, 1248 | "ieee754": { 1249 | "version": "1.1.13", 1250 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", 1251 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", 1252 | "dev": true 1253 | }, 1254 | "inflight": { 1255 | "version": "1.0.6", 1256 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1257 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1258 | "dev": true, 1259 | "requires": { 1260 | "once": "^1.3.0", 1261 | "wrappy": "1" 1262 | } 1263 | }, 1264 | "inherits": { 1265 | "version": "2.0.3", 1266 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1267 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1268 | "dev": true 1269 | }, 1270 | "inline-source-map": { 1271 | "version": "0.6.2", 1272 | "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", 1273 | "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", 1274 | "dev": true, 1275 | "requires": { 1276 | "source-map": "~0.5.3" 1277 | } 1278 | }, 1279 | "insert-module-globals": { 1280 | "version": "7.2.0", 1281 | "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz", 1282 | "integrity": "sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==", 1283 | "dev": true, 1284 | "requires": { 1285 | "JSONStream": "^1.0.3", 1286 | "acorn-node": "^1.5.2", 1287 | "combine-source-map": "^0.8.0", 1288 | "concat-stream": "^1.6.1", 1289 | "is-buffer": "^1.1.0", 1290 | "path-is-absolute": "^1.0.1", 1291 | "process": "~0.11.0", 1292 | "through2": "^2.0.0", 1293 | "undeclared-identifiers": "^1.1.2", 1294 | "xtend": "^4.0.0" 1295 | } 1296 | }, 1297 | "is-buffer": { 1298 | "version": "1.1.6", 1299 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1300 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1301 | "dev": true 1302 | }, 1303 | "is-finite": { 1304 | "version": "1.0.1", 1305 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", 1306 | "integrity": "sha1-ZDhgPq6+J5OUj/SkJi7I2z1iWXs=", 1307 | "dev": true, 1308 | "requires": { 1309 | "number-is-nan": "^1.0.0" 1310 | } 1311 | }, 1312 | "isarray": { 1313 | "version": "1.0.0", 1314 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1315 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1316 | "dev": true 1317 | }, 1318 | "jquery": { 1319 | "version": "2.2.4", 1320 | "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", 1321 | "integrity": "sha1-LInWiJterFIqfuoywUUhVZxsvwI=" 1322 | }, 1323 | "jquery-ui": { 1324 | "version": "1.12.1", 1325 | "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.12.1.tgz", 1326 | "integrity": "sha1-vLQEXI3QU5wTS8FIjN0+dop6nlE=" 1327 | }, 1328 | "js-tokens": { 1329 | "version": "1.0.3", 1330 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.3.tgz", 1331 | "integrity": "sha1-FOVutoyPGpLEPVn1AU7CncIPKuE=", 1332 | "dev": true 1333 | }, 1334 | "jsesc": { 1335 | "version": "1.3.0", 1336 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", 1337 | "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", 1338 | "dev": true 1339 | }, 1340 | "json-stable-stringify": { 1341 | "version": "0.0.1", 1342 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", 1343 | "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", 1344 | "dev": true, 1345 | "requires": { 1346 | "jsonify": "~0.0.0" 1347 | } 1348 | }, 1349 | "json5": { 1350 | "version": "0.5.1", 1351 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", 1352 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", 1353 | "dev": true 1354 | }, 1355 | "jsonify": { 1356 | "version": "0.0.0", 1357 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 1358 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 1359 | "dev": true 1360 | }, 1361 | "jsonparse": { 1362 | "version": "1.3.1", 1363 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", 1364 | "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", 1365 | "dev": true 1366 | }, 1367 | "labeled-stream-splicer": { 1368 | "version": "2.0.2", 1369 | "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", 1370 | "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", 1371 | "dev": true, 1372 | "requires": { 1373 | "inherits": "^2.0.1", 1374 | "stream-splicer": "^2.0.0" 1375 | } 1376 | }, 1377 | "lodash": { 1378 | "version": "4.17.19", 1379 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", 1380 | "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", 1381 | "dev": true 1382 | }, 1383 | "lodash.memoize": { 1384 | "version": "3.0.4", 1385 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", 1386 | "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", 1387 | "dev": true 1388 | }, 1389 | "loose-envify": { 1390 | "version": "1.2.0", 1391 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.2.0.tgz", 1392 | "integrity": "sha1-aaZarT3lQs9O4PT+dOjjPHCcyw8=", 1393 | "dev": true, 1394 | "requires": { 1395 | "js-tokens": "^1.0.1" 1396 | } 1397 | }, 1398 | "lower-case": { 1399 | "version": "1.1.4", 1400 | "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", 1401 | "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", 1402 | "dev": true 1403 | }, 1404 | "md5.js": { 1405 | "version": "1.3.5", 1406 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", 1407 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", 1408 | "dev": true, 1409 | "requires": { 1410 | "hash-base": "^3.0.0", 1411 | "inherits": "^2.0.1", 1412 | "safe-buffer": "^5.1.2" 1413 | }, 1414 | "dependencies": { 1415 | "safe-buffer": { 1416 | "version": "5.1.2", 1417 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1418 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1419 | "dev": true 1420 | } 1421 | } 1422 | }, 1423 | "miller-rabin": { 1424 | "version": "4.0.1", 1425 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", 1426 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", 1427 | "dev": true, 1428 | "requires": { 1429 | "bn.js": "^4.0.0", 1430 | "brorand": "^1.0.1" 1431 | } 1432 | }, 1433 | "minimalistic-assert": { 1434 | "version": "1.0.1", 1435 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 1436 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", 1437 | "dev": true 1438 | }, 1439 | "minimalistic-crypto-utils": { 1440 | "version": "1.0.1", 1441 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 1442 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", 1443 | "dev": true 1444 | }, 1445 | "minimatch": { 1446 | "version": "3.0.4", 1447 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1448 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1449 | "dev": true, 1450 | "requires": { 1451 | "brace-expansion": "^1.1.7" 1452 | } 1453 | }, 1454 | "minimist": { 1455 | "version": "1.2.0", 1456 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 1457 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 1458 | "dev": true 1459 | }, 1460 | "mkdirp": { 1461 | "version": "0.5.1", 1462 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1463 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1464 | "dev": true, 1465 | "requires": { 1466 | "minimist": "0.0.8" 1467 | }, 1468 | "dependencies": { 1469 | "minimist": { 1470 | "version": "0.0.8", 1471 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1472 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1473 | "dev": true 1474 | } 1475 | } 1476 | }, 1477 | "module-deps": { 1478 | "version": "6.2.1", 1479 | "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.1.tgz", 1480 | "integrity": "sha512-UnEn6Ah36Tu4jFiBbJVUtt0h+iXqxpLqDvPS8nllbw5RZFmNJ1+Mz5BjYnM9ieH80zyxHkARGLnMIHlPK5bu6A==", 1481 | "dev": true, 1482 | "requires": { 1483 | "JSONStream": "^1.0.3", 1484 | "browser-resolve": "^1.7.0", 1485 | "cached-path-relative": "^1.0.2", 1486 | "concat-stream": "~1.6.0", 1487 | "defined": "^1.0.0", 1488 | "detective": "^5.0.2", 1489 | "duplexer2": "^0.1.2", 1490 | "inherits": "^2.0.1", 1491 | "parents": "^1.0.0", 1492 | "readable-stream": "^2.0.2", 1493 | "resolve": "^1.4.0", 1494 | "stream-combiner2": "^1.1.1", 1495 | "subarg": "^1.0.0", 1496 | "through2": "^2.0.0", 1497 | "xtend": "^4.0.0" 1498 | } 1499 | }, 1500 | "no-case": { 1501 | "version": "2.3.2", 1502 | "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", 1503 | "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", 1504 | "dev": true, 1505 | "requires": { 1506 | "lower-case": "^1.1.1" 1507 | } 1508 | }, 1509 | "number-is-nan": { 1510 | "version": "1.0.0", 1511 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", 1512 | "integrity": "sha1-wCD1KcUoKt/dIz2R1LGBw9aG3Es=", 1513 | "dev": true 1514 | }, 1515 | "object-assign": { 1516 | "version": "4.1.1", 1517 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1518 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1519 | "dev": true 1520 | }, 1521 | "once": { 1522 | "version": "1.4.0", 1523 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1524 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1525 | "dev": true, 1526 | "requires": { 1527 | "wrappy": "1" 1528 | } 1529 | }, 1530 | "os-browserify": { 1531 | "version": "0.3.0", 1532 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", 1533 | "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", 1534 | "dev": true 1535 | }, 1536 | "os-homedir": { 1537 | "version": "1.0.1", 1538 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz", 1539 | "integrity": "sha1-DWK99EuRb9O73PLKsZGUj7CU8Ac=", 1540 | "dev": true 1541 | }, 1542 | "os-tmpdir": { 1543 | "version": "1.0.2", 1544 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1545 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1546 | "dev": true 1547 | }, 1548 | "pako": { 1549 | "version": "1.0.10", 1550 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", 1551 | "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", 1552 | "dev": true 1553 | }, 1554 | "param-case": { 1555 | "version": "2.1.1", 1556 | "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", 1557 | "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", 1558 | "dev": true, 1559 | "requires": { 1560 | "no-case": "^2.2.0" 1561 | } 1562 | }, 1563 | "parents": { 1564 | "version": "1.0.1", 1565 | "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", 1566 | "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", 1567 | "dev": true, 1568 | "requires": { 1569 | "path-platform": "~0.11.15" 1570 | } 1571 | }, 1572 | "parse-asn1": { 1573 | "version": "5.1.4", 1574 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", 1575 | "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", 1576 | "dev": true, 1577 | "requires": { 1578 | "asn1.js": "^4.0.0", 1579 | "browserify-aes": "^1.0.0", 1580 | "create-hash": "^1.1.0", 1581 | "evp_bytestokey": "^1.0.0", 1582 | "pbkdf2": "^3.0.3", 1583 | "safe-buffer": "^5.1.1" 1584 | } 1585 | }, 1586 | "path-browserify": { 1587 | "version": "0.0.1", 1588 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", 1589 | "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", 1590 | "dev": true 1591 | }, 1592 | "path-is-absolute": { 1593 | "version": "1.0.1", 1594 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1595 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1596 | "dev": true 1597 | }, 1598 | "path-parse": { 1599 | "version": "1.0.6", 1600 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1601 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 1602 | "dev": true 1603 | }, 1604 | "path-platform": { 1605 | "version": "0.11.15", 1606 | "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", 1607 | "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", 1608 | "dev": true 1609 | }, 1610 | "pbkdf2": { 1611 | "version": "3.0.17", 1612 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", 1613 | "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", 1614 | "dev": true, 1615 | "requires": { 1616 | "create-hash": "^1.1.2", 1617 | "create-hmac": "^1.1.4", 1618 | "ripemd160": "^2.0.1", 1619 | "safe-buffer": "^5.0.1", 1620 | "sha.js": "^2.4.8" 1621 | } 1622 | }, 1623 | "process": { 1624 | "version": "0.11.10", 1625 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 1626 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", 1627 | "dev": true 1628 | }, 1629 | "process-nextick-args": { 1630 | "version": "2.0.0", 1631 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 1632 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", 1633 | "dev": true 1634 | }, 1635 | "public-encrypt": { 1636 | "version": "4.0.3", 1637 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", 1638 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", 1639 | "dev": true, 1640 | "requires": { 1641 | "bn.js": "^4.1.0", 1642 | "browserify-rsa": "^4.0.0", 1643 | "create-hash": "^1.1.0", 1644 | "parse-asn1": "^5.0.0", 1645 | "randombytes": "^2.0.1", 1646 | "safe-buffer": "^5.1.2" 1647 | }, 1648 | "dependencies": { 1649 | "safe-buffer": { 1650 | "version": "5.1.2", 1651 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1652 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1653 | "dev": true 1654 | } 1655 | } 1656 | }, 1657 | "punycode": { 1658 | "version": "1.4.1", 1659 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 1660 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", 1661 | "dev": true 1662 | }, 1663 | "querystring": { 1664 | "version": "0.2.0", 1665 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 1666 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", 1667 | "dev": true 1668 | }, 1669 | "querystring-es3": { 1670 | "version": "0.2.1", 1671 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 1672 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", 1673 | "dev": true 1674 | }, 1675 | "randombytes": { 1676 | "version": "2.1.0", 1677 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1678 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1679 | "dev": true, 1680 | "requires": { 1681 | "safe-buffer": "^5.1.0" 1682 | } 1683 | }, 1684 | "randomfill": { 1685 | "version": "1.0.4", 1686 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", 1687 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", 1688 | "dev": true, 1689 | "requires": { 1690 | "randombytes": "^2.0.5", 1691 | "safe-buffer": "^5.1.0" 1692 | } 1693 | }, 1694 | "read-only-stream": { 1695 | "version": "2.0.0", 1696 | "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", 1697 | "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", 1698 | "dev": true, 1699 | "requires": { 1700 | "readable-stream": "^2.0.2" 1701 | } 1702 | }, 1703 | "readable-stream": { 1704 | "version": "2.3.6", 1705 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 1706 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 1707 | "dev": true, 1708 | "requires": { 1709 | "core-util-is": "~1.0.0", 1710 | "inherits": "~2.0.3", 1711 | "isarray": "~1.0.0", 1712 | "process-nextick-args": "~2.0.0", 1713 | "safe-buffer": "~5.1.1", 1714 | "string_decoder": "~1.1.1", 1715 | "util-deprecate": "~1.0.1" 1716 | }, 1717 | "dependencies": { 1718 | "string_decoder": { 1719 | "version": "1.1.1", 1720 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1721 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1722 | "dev": true, 1723 | "requires": { 1724 | "safe-buffer": "~5.1.0" 1725 | } 1726 | } 1727 | } 1728 | }, 1729 | "regenerator-runtime": { 1730 | "version": "0.10.5", 1731 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", 1732 | "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", 1733 | "dev": true 1734 | }, 1735 | "relateurl": { 1736 | "version": "0.2.7", 1737 | "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", 1738 | "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", 1739 | "dev": true 1740 | }, 1741 | "repeating": { 1742 | "version": "2.0.1", 1743 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 1744 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 1745 | "dev": true, 1746 | "requires": { 1747 | "is-finite": "^1.0.0" 1748 | } 1749 | }, 1750 | "resolve": { 1751 | "version": "1.11.0", 1752 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", 1753 | "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", 1754 | "dev": true, 1755 | "requires": { 1756 | "path-parse": "^1.0.6" 1757 | } 1758 | }, 1759 | "ripemd160": { 1760 | "version": "2.0.2", 1761 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 1762 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", 1763 | "dev": true, 1764 | "requires": { 1765 | "hash-base": "^3.0.0", 1766 | "inherits": "^2.0.1" 1767 | } 1768 | }, 1769 | "safe-buffer": { 1770 | "version": "5.1.1", 1771 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1772 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", 1773 | "dev": true 1774 | }, 1775 | "sha.js": { 1776 | "version": "2.4.11", 1777 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 1778 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 1779 | "dev": true, 1780 | "requires": { 1781 | "inherits": "^2.0.1", 1782 | "safe-buffer": "^5.0.1" 1783 | } 1784 | }, 1785 | "shasum": { 1786 | "version": "1.0.2", 1787 | "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", 1788 | "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", 1789 | "dev": true, 1790 | "requires": { 1791 | "json-stable-stringify": "~0.0.0", 1792 | "sha.js": "~2.4.4" 1793 | } 1794 | }, 1795 | "shell-quote": { 1796 | "version": "1.6.1", 1797 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", 1798 | "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", 1799 | "dev": true, 1800 | "requires": { 1801 | "array-filter": "~0.0.0", 1802 | "array-map": "~0.0.0", 1803 | "array-reduce": "~0.0.0", 1804 | "jsonify": "~0.0.0" 1805 | } 1806 | }, 1807 | "simple-concat": { 1808 | "version": "1.0.0", 1809 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", 1810 | "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=", 1811 | "dev": true 1812 | }, 1813 | "slash": { 1814 | "version": "1.0.0", 1815 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 1816 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", 1817 | "dev": true 1818 | }, 1819 | "source-map": { 1820 | "version": "0.5.6", 1821 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", 1822 | "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", 1823 | "dev": true 1824 | }, 1825 | "source-map-support": { 1826 | "version": "0.4.15", 1827 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", 1828 | "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", 1829 | "dev": true, 1830 | "requires": { 1831 | "source-map": "^0.5.6" 1832 | } 1833 | }, 1834 | "stream-browserify": { 1835 | "version": "2.0.2", 1836 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", 1837 | "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", 1838 | "dev": true, 1839 | "requires": { 1840 | "inherits": "~2.0.1", 1841 | "readable-stream": "^2.0.2" 1842 | } 1843 | }, 1844 | "stream-combiner2": { 1845 | "version": "1.1.1", 1846 | "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", 1847 | "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", 1848 | "dev": true, 1849 | "requires": { 1850 | "duplexer2": "~0.1.0", 1851 | "readable-stream": "^2.0.2" 1852 | } 1853 | }, 1854 | "stream-http": { 1855 | "version": "2.8.3", 1856 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", 1857 | "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", 1858 | "dev": true, 1859 | "requires": { 1860 | "builtin-status-codes": "^3.0.0", 1861 | "inherits": "^2.0.1", 1862 | "readable-stream": "^2.3.6", 1863 | "to-arraybuffer": "^1.0.0", 1864 | "xtend": "^4.0.0" 1865 | } 1866 | }, 1867 | "stream-splicer": { 1868 | "version": "2.0.1", 1869 | "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", 1870 | "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", 1871 | "dev": true, 1872 | "requires": { 1873 | "inherits": "^2.0.1", 1874 | "readable-stream": "^2.0.2" 1875 | } 1876 | }, 1877 | "string_decoder": { 1878 | "version": "1.2.0", 1879 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", 1880 | "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", 1881 | "dev": true, 1882 | "requires": { 1883 | "safe-buffer": "~5.1.0" 1884 | } 1885 | }, 1886 | "strip-ansi": { 1887 | "version": "3.0.1", 1888 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1889 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1890 | "dev": true, 1891 | "requires": { 1892 | "ansi-regex": "^2.0.0" 1893 | } 1894 | }, 1895 | "subarg": { 1896 | "version": "1.0.0", 1897 | "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", 1898 | "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", 1899 | "dev": true, 1900 | "requires": { 1901 | "minimist": "^1.1.0" 1902 | } 1903 | }, 1904 | "supports-color": { 1905 | "version": "2.0.0", 1906 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1907 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1908 | "dev": true 1909 | }, 1910 | "syntax-error": { 1911 | "version": "1.4.0", 1912 | "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", 1913 | "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", 1914 | "dev": true, 1915 | "requires": { 1916 | "acorn-node": "^1.2.0" 1917 | } 1918 | }, 1919 | "through": { 1920 | "version": "2.3.8", 1921 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1922 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 1923 | "dev": true 1924 | }, 1925 | "through2": { 1926 | "version": "2.0.5", 1927 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 1928 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 1929 | "dev": true, 1930 | "requires": { 1931 | "readable-stream": "~2.3.6", 1932 | "xtend": "~4.0.1" 1933 | } 1934 | }, 1935 | "timers-browserify": { 1936 | "version": "1.4.2", 1937 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", 1938 | "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", 1939 | "dev": true, 1940 | "requires": { 1941 | "process": "~0.11.0" 1942 | } 1943 | }, 1944 | "to-arraybuffer": { 1945 | "version": "1.0.1", 1946 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 1947 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", 1948 | "dev": true 1949 | }, 1950 | "to-fast-properties": { 1951 | "version": "1.0.2", 1952 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.2.tgz", 1953 | "integrity": "sha1-8/XAw7pymafvmUJ+RGMyV63kMyA=", 1954 | "dev": true 1955 | }, 1956 | "trim-right": { 1957 | "version": "1.0.1", 1958 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 1959 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 1960 | "dev": true 1961 | }, 1962 | "tty-browserify": { 1963 | "version": "0.0.1", 1964 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", 1965 | "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", 1966 | "dev": true 1967 | }, 1968 | "typedarray": { 1969 | "version": "0.0.6", 1970 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 1971 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 1972 | "dev": true 1973 | }, 1974 | "uglify-js": { 1975 | "version": "3.6.0", 1976 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", 1977 | "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", 1978 | "dev": true, 1979 | "requires": { 1980 | "commander": "~2.20.0", 1981 | "source-map": "~0.6.1" 1982 | }, 1983 | "dependencies": { 1984 | "source-map": { 1985 | "version": "0.6.1", 1986 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1987 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1988 | "dev": true 1989 | } 1990 | } 1991 | }, 1992 | "umd": { 1993 | "version": "3.0.3", 1994 | "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", 1995 | "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", 1996 | "dev": true 1997 | }, 1998 | "undeclared-identifiers": { 1999 | "version": "1.1.3", 2000 | "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", 2001 | "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", 2002 | "dev": true, 2003 | "requires": { 2004 | "acorn-node": "^1.3.0", 2005 | "dash-ast": "^1.0.0", 2006 | "get-assigned-identifiers": "^1.2.0", 2007 | "simple-concat": "^1.0.0", 2008 | "xtend": "^4.0.1" 2009 | } 2010 | }, 2011 | "upper-case": { 2012 | "version": "1.1.3", 2013 | "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", 2014 | "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", 2015 | "dev": true 2016 | }, 2017 | "url": { 2018 | "version": "0.11.0", 2019 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 2020 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", 2021 | "dev": true, 2022 | "requires": { 2023 | "punycode": "1.3.2", 2024 | "querystring": "0.2.0" 2025 | }, 2026 | "dependencies": { 2027 | "punycode": { 2028 | "version": "1.3.2", 2029 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 2030 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", 2031 | "dev": true 2032 | } 2033 | } 2034 | }, 2035 | "util": { 2036 | "version": "0.10.4", 2037 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", 2038 | "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", 2039 | "dev": true, 2040 | "requires": { 2041 | "inherits": "2.0.3" 2042 | } 2043 | }, 2044 | "util-deprecate": { 2045 | "version": "1.0.2", 2046 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2047 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2048 | "dev": true 2049 | }, 2050 | "vm-browserify": { 2051 | "version": "1.1.0", 2052 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", 2053 | "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", 2054 | "dev": true 2055 | }, 2056 | "wrappy": { 2057 | "version": "1.0.2", 2058 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2059 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2060 | "dev": true 2061 | }, 2062 | "xtend": { 2063 | "version": "4.0.1", 2064 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 2065 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 2066 | "dev": true 2067 | } 2068 | } 2069 | } 2070 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pinput", 3 | "description": "Light-weight chrome extension for Pinboard.", 4 | "config": { 5 | "browserify": "--transform [ babelify --plugins [ transform-es2015-modules-commonjs ] ]", 6 | "htmlmin": "--remove-comments --collapse-whitespace" 7 | }, 8 | "scripts": { 9 | "build": "npm run html && npm run css && npm run js && npm run copy", 10 | "html": "mkdir -p dist/html && npm run html:background && npm run html:options && npm run html:popup", 11 | "html:background": "html-minifier $npm_package_config_htmlmin -o dist/html/background.html src/html/background.html", 12 | "html:options": "html-minifier $npm_package_config_htmlmin -o dist/html/options.html src/html/options.html", 13 | "html:popup": "html-minifier $npm_package_config_htmlmin -o dist/html/popup.html src/html/popup.html", 14 | "css": "mkdir -p dist/css/lib && npm run css:jquery-ui && npm run css:bootstrap", 15 | "css:jquery-ui": "csso src/css/lib/jquery-ui.custom.css -o dist/css/lib/jquery-ui.custom.css", 16 | "css:bootstrap": "csso node_modules/bootstrap/dist/css/bootstrap.min.css -o dist/css/lib/bootstrap.min.css", 17 | "js": "mkdir -p dist/js/lib && npm run js:background && npm run js:options && npm run js:popup", 18 | "js:background": "browserify $npm_package_config_browserify -o dist/js/background.js src/js/background.js", 19 | "js:options": "browserify $npm_package_config_browserify -o dist/js/options.js src/js/options.js", 20 | "js:popup": "browserify $npm_package_config_browserify -o dist/js/popup.js src/js/popup.js", 21 | "copy": "npm run copy:manifest && npm run copy:icons && npm run copy:fonts && npm run copy:jquery && npm run copy:jquery-ui && npm run copy:bootstrap", 22 | "copy:manifest": "cp src/manifest.json dist", 23 | "copy:icons": "mkdir -p dist/icons && cp src/icons/*.png dist/icons", 24 | "copy:fonts": "mkdir -p dist/fonts && cp node_modules/bootstrap/dist/fonts/* dist/fonts", 25 | "copy:jquery": "cp node_modules/jquery/dist/jquery.min.js dist/js/lib", 26 | "copy:jquery-ui": "cp src/js/lib/jquery-ui.custom.min.js dist/js/lib", 27 | "copy:bootstrap": "cp node_modules/bootstrap/dist/js/bootstrap.min.js dist/js/lib" 28 | }, 29 | "repository": { 30 | "type": "git", 31 | "url": "git://github.com/1000ch/pinput.git" 32 | }, 33 | "keywords": [ 34 | "pinboard" 35 | ], 36 | "author": { 37 | "name": "1000ch", 38 | "email": "shogo.sensui@gmail.com", 39 | "url": "https://github.com/1000ch" 40 | }, 41 | "license": "GPL-3.0", 42 | "bugs": { 43 | "url": "https://github.com/1000ch/pinput/issues" 44 | }, 45 | "dependencies": { 46 | "bootstrap": "^3.3.6", 47 | "jquery": "^2.2.4", 48 | "jquery-ui": "^1.11.4" 49 | }, 50 | "devDependencies": { 51 | "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", 52 | "babelify": "^7.3.0", 53 | "browserify": "^16.2.3", 54 | "csso-cli": "^1.0.0", 55 | "html-minifier": "^4.0.0" 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /readme.markdown: -------------------------------------------------------------------------------- 1 | # Pinput [![Build Status](https://travis-ci.org/1000ch/pinput.svg?branch=master)](https://travis-ci.org/1000ch/pinput) [![devDependency Status](https://david-dm.org/1000ch/pinput/dev-status.svg)](https://david-dm.org/1000ch/pinput#info=devDependencies) 2 | 3 | Light-weight chrome extension for [Pinboard](http://pinboard.in/). 4 | 5 | ![](assets/tile.png) 6 | 7 | ## Usage 8 | 9 | ### Just click 10 | 11 | To open popup window. 12 | 13 | ![Screen Shot](screenshot/pinput.png) 14 | 15 | ### Shortcut keys 16 | 17 | | | Mac / Windows | 18 | |---|---| 19 | | Open popup window | Ctrl + B | 20 | | Bookmark directly | Ctrl + Shift + B | 21 | 22 | You can configure those keyboard shortcuts from **Keyboard shortcuts** on `chrome://extensions/` (at bottom of page). 23 | 24 | ## Settings 25 | 26 | You need to set **Pinboard API token** on setting page before using this extension. You can open setting page with right click on icon, or from extensions page. 27 | 28 | ## License 29 | 30 | Copyright [@1000ch](https://github.com/1000ch) 31 | 32 | Icons by [@t32k](https://github.com/t32k) 33 | 34 | Licensed under the GPL License version 3. 35 | -------------------------------------------------------------------------------- /screenshot/pinput.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ch/pinput/8b19aaa5046095e63cd67f0d972de11ca23ba3e4/screenshot/pinput.png -------------------------------------------------------------------------------- /src/css/lib/jquery-ui.custom.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.10.3 - 2013-11-14 2 | * http://jqueryui.com 3 | * Includes: jquery.ui.core.css, jquery.ui.autocomplete.css, jquery.ui.menu.css, jquery.ui.theme.css 4 | * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px 5 | * Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ 6 | 7 | /* Layout helpers 8 | ----------------------------------*/ 9 | .ui-helper-hidden { 10 | display: none; 11 | } 12 | .ui-helper-hidden-accessible { 13 | border: 0; 14 | clip: rect(0 0 0 0); 15 | height: 1px; 16 | margin: -1px; 17 | overflow: hidden; 18 | padding: 0; 19 | position: absolute; 20 | width: 1px; 21 | } 22 | .ui-helper-reset { 23 | margin: 0; 24 | padding: 0; 25 | border: 0; 26 | outline: 0; 27 | line-height: 1.3; 28 | text-decoration: none; 29 | font-size: 100%; 30 | list-style: none; 31 | } 32 | .ui-helper-clearfix:before, 33 | .ui-helper-clearfix:after { 34 | content: ""; 35 | display: table; 36 | border-collapse: collapse; 37 | } 38 | .ui-helper-clearfix:after { 39 | clear: both; 40 | } 41 | .ui-helper-clearfix { 42 | min-height: 0; /* support: IE7 */ 43 | } 44 | .ui-helper-zfix { 45 | width: 100%; 46 | height: 100%; 47 | top: 0; 48 | left: 0; 49 | position: absolute; 50 | opacity: 0; 51 | } 52 | 53 | .ui-front { 54 | z-index: 100; 55 | } 56 | 57 | 58 | /* Interaction Cues 59 | ----------------------------------*/ 60 | .ui-state-disabled { 61 | cursor: default !important; 62 | } 63 | 64 | 65 | /* Misc visuals 66 | ----------------------------------*/ 67 | 68 | /* Overlays */ 69 | .ui-widget-overlay { 70 | position: fixed; 71 | top: 0; 72 | left: 0; 73 | width: 100%; 74 | height: 100%; 75 | } 76 | .ui-autocomplete { 77 | position: absolute; 78 | top: 0; 79 | left: 0; 80 | cursor: default; 81 | } 82 | .ui-menu { 83 | list-style: none; 84 | padding: 2px; 85 | margin: 0; 86 | display: block; 87 | outline: none; 88 | } 89 | .ui-menu .ui-menu { 90 | margin-top: -3px; 91 | position: absolute; 92 | } 93 | .ui-menu .ui-menu-item { 94 | margin: 0; 95 | padding: 0; 96 | width: 100%; 97 | /* support: IE10, see #8844 */ 98 | list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); 99 | } 100 | .ui-menu .ui-menu-divider { 101 | margin: 5px -2px 5px -2px; 102 | height: 0; 103 | font-size: 0; 104 | line-height: 0; 105 | border-width: 1px 0 0 0; 106 | } 107 | .ui-menu .ui-menu-item a { 108 | text-decoration: none; 109 | display: block; 110 | padding: 5px 10px; 111 | line-height: 1.5; 112 | min-height: 0; /* support: IE7 */ 113 | font-weight: normal; 114 | } 115 | .ui-menu .ui-menu-item a.ui-state-focus, 116 | .ui-menu .ui-menu-item a.ui-state-active { 117 | font-weight: normal; 118 | margin: -1px; 119 | } 120 | 121 | .ui-menu .ui-state-disabled { 122 | font-weight: normal; 123 | margin: .4em 0 .2em; 124 | line-height: 1.5; 125 | } 126 | .ui-menu .ui-state-disabled a { 127 | cursor: default; 128 | } 129 | 130 | /* Component containers 131 | ----------------------------------*/ 132 | .ui-widget { 133 | font-family: inherit; 134 | font-size: 1.1em; 135 | } 136 | .ui-widget .ui-widget { 137 | font-size: 1em; 138 | } 139 | .ui-widget input, 140 | .ui-widget select, 141 | .ui-widget textarea, 142 | .ui-widget button { 143 | font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; 144 | font-size: 1em; 145 | } 146 | .ui-widget-content { 147 | border: 1px solid rgba(0,0,0,.2); 148 | -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2); 149 | box-shadow: 0 5px 10px rgba(0,0,0,.2); 150 | -webkit-background-clip: padding-box; 151 | background-clip: padding-box; 152 | background: #fff; 153 | color: #333333; 154 | } 155 | .ui-widget-content a { 156 | color: #333333; 157 | } 158 | 159 | /* Interaction states 160 | ----------------------------------*/ 161 | .ui-state-default, 162 | .ui-widget-content .ui-state-default, 163 | .ui-widget-header .ui-state-default { 164 | border: 1px solid #cccccc; 165 | background: #f6f6f6; 166 | font-weight: bold; 167 | color: #1c94c4; 168 | } 169 | .ui-state-default a, 170 | .ui-state-default a:link, 171 | .ui-state-default a:visited { 172 | color: #1c94c4; 173 | text-decoration: none; 174 | } 175 | .ui-state-hover, 176 | .ui-widget-content .ui-state-hover, 177 | .ui-widget-header .ui-state-hover, 178 | .ui-state-focus, 179 | .ui-widget-content .ui-state-focus, 180 | .ui-widget-header .ui-state-focus { 181 | border: 1px solid #0081c2; 182 | color: #fff; 183 | background-color: #0081c2; 184 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); 185 | background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); 186 | background-image: linear-gradient(to bottom, #0088cc, #0077b3); 187 | background-repeat: repeat-x; 188 | } 189 | .ui-state-active, 190 | .ui-widget-content .ui-state-active, 191 | .ui-widget-header .ui-state-active { 192 | border: 1px solid #0081c2; 193 | color: #fff; 194 | background-color: #0081c2; 195 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); 196 | background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); 197 | background-image: linear-gradient(to bottom, #0088cc, #0077b3); 198 | background-repeat: repeat-x; 199 | } 200 | 201 | /* Misc visuals 202 | ----------------------------------*/ 203 | 204 | /* Corner radius */ 205 | .ui-corner-all, 206 | .ui-corner-top, 207 | .ui-corner-left, 208 | .ui-corner-tl { 209 | border-top-left-radius: 6px; 210 | } 211 | .ui-corner-all, 212 | .ui-corner-top, 213 | .ui-corner-right, 214 | .ui-corner-tr { 215 | border-top-right-radius: 6px; 216 | } 217 | .ui-corner-all, 218 | .ui-corner-bottom, 219 | .ui-corner-left, 220 | .ui-corner-bl { 221 | border-bottom-left-radius: 6px; 222 | } 223 | .ui-corner-all, 224 | .ui-corner-bottom, 225 | .ui-corner-right, 226 | .ui-corner-br { 227 | border-bottom-right-radius: 6px; 228 | } -------------------------------------------------------------------------------- /src/html/background.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Pinput Background 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/html/options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Pinput Settings 6 | 7 | 8 | 9 |
10 |
11 |

12 | Pinput requires Pinboard API Token that is available at settings > password. This token will be saved at chrome sync storage. 13 |

14 |
15 |
16 |
17 | 18 |
19 | 20 | 21 | 22 | 23 |
24 |
25 |
26 |
27 |
28 |
29 |
Please input API token and save it.
30 |
31 |
32 |
33 |
34 | 38 |
39 |
40 |
41 |
42 | 46 |
47 |
48 |
49 |
50 | 54 |
55 |
56 |
57 |
58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /src/html/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Pinput 7 | 8 | 9 | 28 | 29 | 30 |
31 |
32 |
33 | 36 | 39 |
40 |
41 |
42 | 43 | 47 | 50 |
51 |
52 |
53 |
54 |
55 | 56 |
57 |
58 | 59 |
60 |
61 |
62 |
63 | 64 |
65 |
66 | 67 |
68 |
69 |
70 |
71 | 72 |
73 |
74 | 75 |
76 |
77 |
78 |
79 | 80 |
81 |
82 |
83 |
84 |
Add to Pinboard...
85 |
86 |
87 |
88 | 89 | 90 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /src/icons/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ch/pinput/8b19aaa5046095e63cd67f0d972de11ca23ba3e4/src/icons/icon128.png -------------------------------------------------------------------------------- /src/icons/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ch/pinput/8b19aaa5046095e63cd67f0d972de11ca23ba3e4/src/icons/icon16.png -------------------------------------------------------------------------------- /src/icons/icon19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ch/pinput/8b19aaa5046095e63cd67f0d972de11ca23ba3e4/src/icons/icon19.png -------------------------------------------------------------------------------- /src/icons/icon38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ch/pinput/8b19aaa5046095e63cd67f0d972de11ca23ba3e4/src/icons/icon38.png -------------------------------------------------------------------------------- /src/icons/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1000ch/pinput/8b19aaa5046095e63cd67f0d972de11ca23ba3e4/src/icons/icon48.png -------------------------------------------------------------------------------- /src/js/api.js: -------------------------------------------------------------------------------- 1 | import * as util from './util'; 2 | 3 | /** 4 | * Check API Token 5 | * @param {String} authToken 6 | * @returns {Promise} 7 | */ 8 | export function checkToken(authToken) { 9 | let queryString = util.serialize({ 10 | format : 'json', 11 | 'auth_token' : authToken, 12 | url : '', 13 | _ : Date.now() 14 | }); 15 | let requestURL = `https://api.pinboard.in/v1/posts/get?${queryString}`; 16 | 17 | return fetch(requestURL).then(response => { 18 | if (response.ok) { 19 | return response.json(); 20 | } 21 | 22 | throw new Error('Network Error'); 23 | }); 24 | } 25 | 26 | /** 27 | * Add a bookmark. 28 | * @see https://pinboard.in/api#posts_add 29 | * @param {String} url [required] 30 | * @param {String} title [required] 31 | * @param {String} description 32 | * @param {String} tags 33 | * @param {String} shared 34 | * @param {String} toread 35 | * @param {String} authToken 36 | * @returns {Promise} 37 | */ 38 | export function addPost(url, title, description, tags, shared, toread, authToken) { 39 | let queryString = util.serialize({ 40 | format : 'json', 41 | 'auth_token' : authToken, 42 | url : encodeURIComponent(url), 43 | description : encodeURIComponent(title), 44 | extended : encodeURIComponent(description), 45 | tags : encodeURIComponent(tags), 46 | shared : shared, 47 | toread : toread, 48 | _ : Date.now() 49 | }); 50 | let requestURL = `https://api.pinboard.in/v1/posts/add?${queryString}`; 51 | 52 | return fetch(requestURL).then(response => { 53 | if (response.ok) { 54 | return response.json(); 55 | } 56 | 57 | throw new Error('Network Error'); 58 | }); 59 | } 60 | 61 | /** 62 | * Delete a bookmark. 63 | * @see https://pinboard.in/api#posts_delete 64 | * @param {String} url 65 | * @param {String} authToken 66 | * @returns {Promise} 67 | */ 68 | export function deletePost(url, authToken) { 69 | let queryString = util.serialize({ 70 | format : 'json', 71 | 'auth_token' : authToken, 72 | url : encodeURIComponent(url), 73 | _ : Date.now() 74 | }); 75 | let requestURL = `https://api.pinboard.in/v1/posts/delete?${queryString}`; 76 | 77 | return fetch(requestURL).then(response => { 78 | if (response.ok) { 79 | return response.json(); 80 | } 81 | 82 | throw new Error('Network Error'); 83 | }); 84 | } 85 | 86 | /** 87 | * Returns one or more posts on a single day matching the arguments. 88 | * If no date or url is given, date of most recent bookmark will be used. 89 | * @see https://pinboard.in/api#posts_get 90 | * @param {String} url 91 | * @param {String} authToken 92 | * @returns {Promise} 93 | */ 94 | export function getPost(url, authToken) { 95 | let queryString = util.serialize({ 96 | format : 'json', 97 | 'auth_token' : authToken, 98 | url : encodeURIComponent(url), 99 | _ : Date.now() 100 | }); 101 | let requestURL = `https://api.pinboard.in/v1/posts/get?${queryString}`; 102 | 103 | return fetch(requestURL).then(response => { 104 | if (response.ok) { 105 | return response.json(); 106 | } 107 | 108 | throw new Error('Network Error'); 109 | }); 110 | } 111 | 112 | /** 113 | * Returns a list of popular tags and recommended tags for a given URL. 114 | * Popular tags are tags used site-wide for the url; 115 | * recommended tags are drawn from the user's own tags. 116 | * @see https://pinboard.in/api#posts_suggest 117 | * @param {String} url [required] 118 | * @param {String} authToken 119 | * @returns {Promise} 120 | */ 121 | export function suggestPost(url, authToken) { 122 | let queryString = util.serialize({ 123 | format : 'json', 124 | 'auth_token' : authToken, 125 | url : encodeURIComponent(url), 126 | _ : Date.now() 127 | }); 128 | let requestURL = `https://api.pinboard.in/v1/posts/suggest?${queryString}`; 129 | 130 | return fetch(requestURL).then(response => { 131 | if (response.ok) { 132 | return response.json(); 133 | } 134 | 135 | throw new Error('Network Error'); 136 | }); 137 | } 138 | 139 | /** 140 | * Returns a full list of the user's tags along with the number of times they were used. 141 | * @see https://pinboard.in/api#tags_get 142 | * @param {String} authToken 143 | * @returns {Promise} 144 | */ 145 | export function getTags(authToken) { 146 | let queryString = util.serialize({ 147 | format : 'json', 148 | 'auth_token' : authToken, 149 | _ : Date.now() 150 | }); 151 | let requestURL = `https://api.pinboard.in/v1/tags/get?${queryString}`; 152 | 153 | return fetch(requestURL).then(response => { 154 | if (response.ok) { 155 | return response.json(); 156 | } 157 | 158 | throw new Error('Network Error'); 159 | }); 160 | } 161 | -------------------------------------------------------------------------------- /src/js/background.js: -------------------------------------------------------------------------------- 1 | import * as constant from './constant'; 2 | import * as mark from './mark'; 3 | import * as API from './api'; 4 | import * as util from './util'; 5 | 6 | let activeTabId = 0; 7 | let activeTabUrl = ''; 8 | let activeTabTitle = ''; 9 | let bookmarkedURLs = new Set(); 10 | 11 | const keys = [ 12 | constant.authToken, 13 | constant.isAuthenticated, 14 | constant.defaultPrivate, 15 | constant.defaultReadLater 16 | ]; 17 | 18 | let authToken; 19 | let isAuthenticated; 20 | let defaultPrivate; 21 | let defaultReadLater; 22 | 23 | // check token authentication 24 | chrome.storage.sync.get(keys, item => { 25 | authToken = String(item[constant.authToken]); 26 | isAuthenticated = Boolean(item[constant.isAuthenticated]); 27 | defaultPrivate = Boolean(item[constant.defaultPrivate]); 28 | defaultReadLater = Boolean(item[constant.defaultReadLater]); 29 | }); 30 | 31 | /** 32 | * Cache active tab information 33 | * @param {Number} tabId 34 | */ 35 | function cacheActiveTab(tabId) { 36 | activeTabId = tabId; 37 | chrome.tabs.get(tabId, tab => { 38 | activeTabUrl = tab.url; 39 | activeTabTitle = tab.title; 40 | updateIcon(activeTabId, activeTabUrl); 41 | }); 42 | } 43 | 44 | /** 45 | * Check an URL is bookmarked or not 46 | **/ 47 | function isBookmarked(url) { 48 | // remove hash 49 | let u = new URL(url); 50 | return new Promise((resolve, reject) => { 51 | API.getPost(`${u.origin}${u.pathname}`, authToken).then(data => { 52 | if (data.posts.length !== 0) { 53 | resolve(); 54 | } else { 55 | reject(); 56 | } 57 | }).catch(error => reject(error)); 58 | }); 59 | } 60 | 61 | /** 62 | * Check an URL is already bookmarked or not 63 | * @param {Number} tabId 64 | * @param {String} url 65 | */ 66 | function updateIcon(tabId, url) { 67 | // if schema is chrome related 68 | if (!util.isBookmarkable(url)) { 69 | setIcon(tabId, url, false); 70 | return; 71 | } 72 | 73 | // if API token is authenticated 74 | if (isAuthenticated) { 75 | // set background 76 | chrome.browserAction.setBadgeBackgroundColor({ 77 | color : '#66cc33' 78 | }); 79 | 80 | if (bookmarkedURLs.has(url)) { 81 | chrome.browserAction.setBadgeText({ 82 | text : mark.bookmarked, 83 | tabId : tabId 84 | }); 85 | return; 86 | } 87 | 88 | isBookmarked(url).then(() => { 89 | bookmarkedURLs.add(url); 90 | chrome.browserAction.setBadgeText({ 91 | text : mark.bookmarked, 92 | tabId : tabId 93 | }); 94 | }).catch(() => { 95 | bookmarkedURLs.delete(url); 96 | chrome.browserAction.setBadgeText({ 97 | text : mark.notYet, 98 | tabId : tabId 99 | }); 100 | }); 101 | } 102 | } 103 | 104 | /** 105 | * Set extension icon checked or not 106 | * @param {Number} tabId 107 | * @param {String} url 108 | * @param {Boolean} isChecked 109 | */ 110 | function setIcon(tabId, url, isChecked) { 111 | // if schema is chrome related 112 | if (!util.isBookmarkable(url)) { 113 | chrome.browserAction.setBadgeText({ 114 | text : mark.notYet, 115 | tabId : tabId 116 | }); 117 | return; 118 | } 119 | 120 | // if API token is authenticated 121 | if (isAuthenticated) { 122 | // set background 123 | chrome.browserAction.setBadgeBackgroundColor({ 124 | color : '#66cc33' 125 | }); 126 | 127 | // set icon checked 128 | chrome.browserAction.setBadgeText({ 129 | text : isChecked ? mark.bookmarked : mark.notYet, 130 | tabId : tabId 131 | }); 132 | } 133 | } 134 | 135 | // when the active tab is changed 136 | chrome.tabs.onActivated.addListener(activeInfo => { 137 | cacheActiveTab(activeInfo.tabId); 138 | }); 139 | 140 | // when a tab is updated 141 | chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => { 142 | if (tab.highlighted) { 143 | cacheActiveTab(tabId); 144 | } 145 | }); 146 | 147 | // when current window is switched 148 | chrome.windows.onFocusChanged.addListener(() => { 149 | chrome.windows.getCurrent({ 150 | populate : true 151 | }, window => { 152 | if (window && Array.isArray(window.tabs)) { 153 | for (let tab of window.tabs) { 154 | if (tab.highlighted) { 155 | cacheActiveTab(tab.id); 156 | } 157 | } 158 | } 159 | }); 160 | }); 161 | 162 | // when received message, 163 | // return the url and title of active tab 164 | chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { 165 | if (message.isBookmarked) { 166 | bookmarkedURLs.add(activeTabUrl); 167 | } else { 168 | bookmarkedURLs.delete(activeTabUrl); 169 | } 170 | 171 | if (message.useStrict) { 172 | updateIcon(activeTabId, activeTabUrl); 173 | } else { 174 | setIcon(activeTabId, activeTabUrl, !!message.isBookmarked); 175 | } 176 | 177 | sendResponse({ 178 | url : activeTabUrl, 179 | title : activeTabTitle 180 | }); 181 | }); 182 | 183 | chrome.commands.onCommand.addListener(command => { 184 | if (command === 'direct-bookmark') { 185 | API.addPost( 186 | activeTabUrl, 187 | activeTabTitle, 188 | '', 189 | '', 190 | defaultPrivate ? 'no' : 'yes', 191 | defaultReadLater ? 'yes' : 'no', 192 | authToken 193 | ).then(data => { 194 | if (data.result_code === 'done') { 195 | bookmarkedURLs.add(activeTabUrl); 196 | setIcon(activeTabId, activeTabUrl, true); 197 | } else { 198 | bookmarkedURLs.delete(activeTabUrl); 199 | setIcon(activeTabId, activeTabUrl, false); 200 | } 201 | }).catch(() => { 202 | bookmarkedURLs.delete(activeTabUrl); 203 | setIcon(activeTabId, activeTabUrl, false); 204 | }); 205 | } 206 | }); 207 | 208 | // launch options.html on installation 209 | chrome.runtime.onInstalled.addListener(details => { 210 | if (details.reason === 'install') { 211 | chrome.tabs.create({ 212 | url : '../html/options.html' 213 | }); 214 | } 215 | }); 216 | -------------------------------------------------------------------------------- /src/js/constant.js: -------------------------------------------------------------------------------- 1 | export const authToken = 'pinput_authToken'; 2 | export const isAuthenticated = 'pinput_isAuthenticated'; 3 | export const defaultPrivate = 'pinput_defaultPrivate'; 4 | export const defaultReadLater = 'pinput_defaultReadLater'; 5 | export const useTagSuggestion = 'pinput_useTagSuggestion'; 6 | -------------------------------------------------------------------------------- /src/js/lib/jquery-ui.custom.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.10.3 - 2013-11-12 2 | * http://jqueryui.com 3 | * Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.position.js, jquery.ui.autocomplete.js, jquery.ui.menu.js 4 | * Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ 5 | 6 | (function(e,t){function i(t,i){var s,n,r,o=t.nodeName.toLowerCase();return"area"===o?(s=t.parentNode,n=s.name,t.href&&n&&"map"===s.nodeName.toLowerCase()?(r=e("img[usemap=#"+n+"]")[0],!!r&&a(r)):!1):(/input|select|textarea|button|object/.test(o)?!t.disabled:"a"===o?t.href||i:i)&&a(t)}function a(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var s=0,n=/^ui-id-\d+$/;e.ui=e.ui||{},e.extend(e.ui,{version:"1.10.3",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({focus:function(t){return function(i,a){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),a&&a.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var a,s,n=e(this[0]);n.length&&n[0]!==document;){if(a=n.css("position"),("absolute"===a||"relative"===a||"fixed"===a)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++s)})},removeUniqueId:function(){return this.each(function(){n.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,a){return!!e.data(t,a[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var a=e.attr(t,"tabindex"),s=isNaN(a);return(s||a>=0)&&i(t,!s)}}),e("").outerWidth(1).jquery||e.each(["Width","Height"],function(i,a){function s(t,i,a,s){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,a&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===a?["Left","Right"]:["Top","Bottom"],r=a.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+a]=function(i){return i===t?o["inner"+a].call(this):this.each(function(){e(this).css(r,s(this,i)+"px")})},e.fn["outer"+a]=function(t,i){return"number"!=typeof t?o["outer"+a].call(this,t):this.each(function(){e(this).css(r,s(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,a){var s,n=e.ui[t].prototype;for(s in a)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([i,a[s]])},call:function(e,t,i){var a,s=e.plugins[t];if(s&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(a=0;s.length>a;a++)e.options[s[a][0]]&&s[a][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var a=i&&"left"===i?"scrollLeft":"scrollTop",s=!1;return t[a]>0?!0:(t[a]=1,s=t[a]>0,t[a]=0,s)}})})(jQuery);(function(e,t){var i=0,s=Array.prototype.slice,a=e.cleanData;e.cleanData=function(t){for(var i,s=0;null!=(i=t[s]);s++)try{e(i).triggerHandler("remove")}catch(n){}a(t)},e.widget=function(i,s,a){var n,r,o,h,l={},u=i.split(".")[0];i=i.split(".")[1],n=u+"-"+i,a||(a=s,s=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[u]=e[u]||{},r=e[u][i],o=e[u][i]=function(e,i){return this._createWidget?(arguments.length&&this._createWidget(e,i),t):new o(e,i)},e.extend(o,r,{version:a.version,_proto:e.extend({},a),_childConstructors:[]}),h=new s,h.options=e.widget.extend({},h.options),e.each(a,function(i,a){return e.isFunction(a)?(l[i]=function(){var e=function(){return s.prototype[i].apply(this,arguments)},t=function(e){return s.prototype[i].apply(this,e)};return function(){var i,s=this._super,n=this._superApply;return this._super=e,this._superApply=t,i=a.apply(this,arguments),this._super=s,this._superApply=n,i}}(),t):(l[i]=a,t)}),o.prototype=e.widget.extend(h,{widgetEventPrefix:r?h.widgetEventPrefix:i},l,{constructor:o,namespace:u,widgetName:i,widgetFullName:n}),r?(e.each(r._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete r._childConstructors):s._childConstructors.push(o),e.widget.bridge(i,o)},e.widget.extend=function(i){for(var a,n,r=s.call(arguments,1),o=0,h=r.length;h>o;o++)for(a in r[o])n=r[o][a],r[o].hasOwnProperty(a)&&n!==t&&(i[a]=e.isPlainObject(n)?e.isPlainObject(i[a])?e.widget.extend({},i[a],n):e.widget.extend({},n):n);return i},e.widget.bridge=function(i,a){var n=a.prototype.widgetFullName||i;e.fn[i]=function(r){var o="string"==typeof r,h=s.call(arguments,1),l=this;return r=!o&&h.length?e.widget.extend.apply(null,[r].concat(h)):r,o?this.each(function(){var s,a=e.data(this,n);return a?e.isFunction(a[r])&&"_"!==r.charAt(0)?(s=a[r].apply(a,h),s!==a&&s!==t?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):t):e.error("no such method '"+r+"' for "+i+" widget instance"):e.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+r+"'")}):this.each(function(){var t=e.data(this,n);t?t.option(r||{})._init():e.data(this,n,new a(r,this))}),l}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{disabled:!1,create:null},_createWidget:function(t,s){s=e(s||this.defaultElement||this)[0],this.element=e(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),s!==this&&(e.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===s&&this.destroy()}}),this.document=e(s.style?s.ownerDocument:s.document||s),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(i,s){var a,n,r,o=i;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof i)if(o={},a=i.split("."),i=a.shift(),a.length){for(n=o[i]=e.widget.extend({},this.options[i]),r=0;a.length-1>r;r++)n[a[r]]=n[a[r]]||{},n=n[a[r]];if(i=a.pop(),s===t)return n[i]===t?null:n[i];n[i]=s}else{if(s===t)return this.options[i]===t?null:this.options[i];o[i]=s}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,a){var n,r=this;"boolean"!=typeof i&&(a=s,s=i,i=!1),a?(s=n=e(s),this.bindings=this.bindings.add(s)):(a=s,s=this.element,n=this.widget()),e.each(a,function(a,o){function h(){return i||r.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?r[o]:o).apply(r,arguments):t}"string"!=typeof o&&(h.guid=o.guid=o.guid||h.guid||e.guid++);var l=a.match(/^(\w+)\s*(.*)$/),u=l[1]+r.eventNamespace,c=l[2];c?n.delegate(c,u,h):s.bind(u,h)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var a,n,r=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],n=i.originalEvent)for(a in n)a in i||(i[a]=n[a]);return this.element.trigger(i,s),!(e.isFunction(r)&&r.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,a,n){"string"==typeof a&&(a={effect:a});var r,o=a?a===!0||"number"==typeof a?i:a.effect||i:t;a=a||{},"number"==typeof a&&(a={duration:a}),r=!e.isEmptyObject(a),a.complete=n,a.delay&&s.delay(a.delay),r&&e.effects&&e.effects.effect[o]?s[t](a):o!==t&&s[o]?s[o](a.duration,a.easing,n):s.queue(function(i){e(this)[t](),n&&n.call(s[0]),i()})}})})(jQuery);(function(e,t){function i(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function s(t,i){return parseInt(e.css(t,i),10)||0}function a(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,r=Math.max,o=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,c=/[\+\-]\d+(\.[\d]+)?%?/,d=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var i,s,a=e("
"),r=a.children()[0];return e("body").append(a),i=r.offsetWidth,a.css("overflow","scroll"),s=r.offsetWidth,i===s&&(s=a[0].clientWidth),a.remove(),n=i-s},getScrollInfo:function(t){var i=t.isWindow?"":t.element.css("overflow-x"),s=t.isWindow?"":t.element.css("overflow-y"),a="scroll"===i||"auto"===i&&t.widths?"left":i>0?"right":"center",vertical:0>n?"top":a>0?"bottom":"middle"};c>p&&p>o(i+s)&&(h.horizontal="center"),d>m&&m>o(a+n)&&(h.vertical="middle"),h.important=r(o(i),o(s))>r(o(a),o(n))?"horizontal":"vertical",t.using.call(this,e,h)}),u.offset(e.extend(M,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollLeft:s.offset.left,n=s.width,o=e.left-t.collisionPosition.marginLeft,h=a-o,l=o+t.collisionWidth-n-a;t.collisionWidth>n?h>0&&0>=l?(i=e.left+h+t.collisionWidth-n-a,e.left+=h-i):e.left=l>0&&0>=h?a:h>l?a+n-t.collisionWidth:a:h>0?e.left+=h:l>0?e.left-=l:e.left=r(e.left-o,e.left)},top:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollTop:s.offset.top,n=t.within.height,o=e.top-t.collisionPosition.marginTop,h=a-o,l=o+t.collisionHeight-n-a;t.collisionHeight>n?h>0&&0>=l?(i=e.top+h+t.collisionHeight-n-a,e.top+=h-i):e.top=l>0&&0>=h?a:h>l?a+n-t.collisionHeight:a:h>0?e.top+=h:l>0?e.top-=l:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var i,s,a=t.within,n=a.offset.left+a.scrollLeft,r=a.width,h=a.isWindow?a.scrollLeft:a.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,c=l+t.collisionWidth-r-h,d="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+d+p+f+t.collisionWidth-r-n,(0>i||o(u)>i)&&(e.left+=d+p+f)):c>0&&(s=e.left-t.collisionPosition.marginLeft+d+p+f-h,(s>0||c>o(s))&&(e.left+=d+p+f))},top:function(e,t){var i,s,a=t.within,n=a.offset.top+a.scrollTop,r=a.height,h=a.isWindow?a.scrollTop:a.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,c=l+t.collisionHeight-r-h,d="top"===t.my[1],p=d?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-r-n,e.top+p+f+m>u&&(0>s||o(u)>s)&&(e.top+=p+f+m)):c>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,e.top+p+f+m>c&&(i>0||c>o(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,a,n,r=document.getElementsByTagName("body")[0],o=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(n in s)t.style[n]=s[n];t.appendChild(o),i=r||document.documentElement,i.insertBefore(t,i.firstChild),o.style.cssText="position: absolute; left: 10.7432222px;",a=e(o).offset().left,e.support.offsetFractions=a>10&&11>a,t.innerHTML="",i.removeChild(t)}()})(jQuery);(function(e){var t=0;e.widget("ui.autocomplete",{version:"1.10.3",defaultElement:"",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,i,a,s=this.element[0].nodeName.toLowerCase(),n="textarea"===s,r="input"===s;this.isMultiLine=n?!0:r?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[n||r?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(s){if(this.element.prop("readOnly"))return t=!0,a=!0,i=!0,undefined;t=!1,a=!1,i=!1;var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:t=!0,this._move("previousPage",s);break;case n.PAGE_DOWN:t=!0,this._move("nextPage",s);break;case n.UP:t=!0,this._keyEvent("previous",s);break;case n.DOWN:t=!0,this._keyEvent("next",s);break;case n.ENTER:case n.NUMPAD_ENTER:this.menu.active&&(t=!0,s.preventDefault(),this.menu.select(s));break;case n.TAB:this.menu.active&&this.menu.select(s);break;case n.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(s),s.preventDefault());break;default:i=!0,this._searchTimeout(s)}},keypress:function(a){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&a.preventDefault(),undefined;if(!i){var s=e.ui.keyCode;switch(a.keyCode){case s.PAGE_UP:this._move("previousPage",a);break;case s.PAGE_DOWN:this._move("nextPage",a);break;case s.UP:this._keyEvent("previous",a);break;case s.DOWN:this._keyEvent("next",a)}}},input:function(e){return a?(a=!1,e.preventDefault(),undefined):(this._searchTimeout(e),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(e),this._change(e),undefined)}}),this._initSource(),this.menu=e("