ag-psd 30.1.0 → 30.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.v8-cache/v24.13.1-x64-cf738c9d/009dd0f9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/00b1f5b3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/00c6cb60 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/012a5efb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0139d484 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/017325ac +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0177a40e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/01b3f3f4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/01bdeed3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/01f7b9de +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0236a758 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/02a30dfa +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/031f460b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0333d7ea +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/034093e8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/039f982e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/04176846 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/043c7b90 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/04b14496 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/04d897f8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/04e05fdc +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/05135617 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0561f0be +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/056407a9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0585b7bb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/059f8558 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/061ebf08 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/063a346e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/064f1d49 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/06ba9920 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/06cc3e45 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/07041e8e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0706ecb8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/079604d9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/08974114 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/092e59e1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/09310bc7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/09f3c2a8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/09fc8723 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/09feaf7d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0a1ba216 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0a49cac0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0aa8bbea +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0ab1f804 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0aba29f8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0b8c6a90 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0bdcb794 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0c4430ac +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0c9093b8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0d34de12 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0d38cfd1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0d70b7b0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0d87ffc1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0dad9f05 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0db754a7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0e15ac0b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0e41911c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0e897f0a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0ec2e273 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0f0a2045 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0fa99ede +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/106347f0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1065c98c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/10a8a753 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1130885f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/119193a0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/11b78352 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/12673319 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/12804b67 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/12beb862 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1307c983 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/13aac3d1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/14015561 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/14cc39f9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1527d78f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/15453dd8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/15c2367e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/15c56ccd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/15cdfde8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/15f0e479 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/15fa490d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/16335fd7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/16b272b6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/16b8f2ef +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1736ded7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/18b392e3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/18ff51f0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/190065fe +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1952de1c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1984fc07 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/198cbb75 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/19f197ad +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1a1a9288 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1a706b3a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1adc81af +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1ba735e4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1bfd6921 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1c0093b3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1c5927f8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1cb18bda +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1cd3fbd2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1cf4fa03 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1cf76c75 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1d25c7c3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1dfadf76 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1e01f894 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1e380a67 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1e45c155 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1ee5b179 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1f18235c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1f73dfa6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1fb8f4f3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1ff009c0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/20477c23 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/205c8d02 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/20dfa422 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/213b633e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/21499fa6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2199f144 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/21bbd1a3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/21c45924 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2202150b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2227a346 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/225be800 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2279b968 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/227b9002 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/22b26067 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2345c812 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/235d70e1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/23ec1c98 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/23fa616f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/24011fb1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/24827a8b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/248ec463 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/24962a7d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/249d7114 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/24a17b0e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/24b9377d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/24fd2500 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/25457eb9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2629d78c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2669ca76 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/26f5e7e4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/274aed80 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2751ff58 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/27fb2f1a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/28cdd8c1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/28ffbc1d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/29251634 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/292ec490 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/294ed662 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/298ea736 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/29a97453 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2a19133e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2a3698c0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2b009cbc +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2b069ee0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2b0e69c4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2b1ee578 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2c13aee1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2c9c08f1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2d3d90e6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2dac7892 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2dbff7fb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2de09439 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2e0a55d8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2e370869 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2e44f5f0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2f6fabd1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2fb229a9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/31300574 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3144b401 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/317ae0d4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3201dcd0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/320dd8dd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3294059a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/32e3b62d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/330fd82d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3322d88a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3348c916 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3348e276 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/336576f5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/33764eac +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/339314da +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/340f9315 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/342c77d2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/347b6177 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/34b6fd2d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/34c54738 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/34cb7184 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/356622b9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/35fef963 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3603e10e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/36185631 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3634e753 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/36ae29db +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/37481985 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/37742c37 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3820c8c0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/387fb0ff +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/38e9bdfd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/394a60fb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/39714119 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/399c1ab6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/39e0ae03 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/39f6ef83 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3ab47fb5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3b1cee61 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3b4063c0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3b489018 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3bb077a9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3c9ec024 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3d4e7bc3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3d8e182d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3df413b6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3dfbce0f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3e51b96f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3eca45f7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3ed4ad9f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3f0830f9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3f144a4d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3f4a10a4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3f4c8384 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3f71ab30 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3fb24e11 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3fb61831 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/400e6cf6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/40765571 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/409c7c13 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/40c82fae +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/411e98e3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4217fe8d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/42686149 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/42856082 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/42d38f49 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/42e206b2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4352d5f1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/437a9e59 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/43964317 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/43e12804 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/43fdeeec +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4446168f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/44795769 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/447f0340 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4511bacf +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/45543795 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/455e7876 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/45e61dc2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/45ec2e66 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/45fa217d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4638c1db +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/463dd272 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/46b235d2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/46b5351a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/46d1f5b9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4710b21d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/474c8493 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/490172a9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/49726501 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4995c0b1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/49d22b79 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/49f938d6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/49ff164c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4a183420 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4ab9082a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4ac3fb9e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4ace1785 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4aed9772 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4b1199d5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4b356f9b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4b3da816 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4c1d2edf +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4ca5a788 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4cbda706 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4ce607f0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4d365bf4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4d495a5d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4d730019 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4e1d2a71 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4ef2a13d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4f5702bd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4fc36e57 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4feb5610 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/501e77a5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/505db7d5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/50ad7efb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/514cc428 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/51a39ff2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/51d30dd4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/51f49f29 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/521513e1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/523d6845 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/528e7353 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/532d1925 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/533f1f72 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/534e6847 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/535532ea +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/537a1162 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5428aebe +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/54326f6e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5478a1e3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/54d564f4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5590be3b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/55cba4b4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/55d54880 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/55e129df +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/56094390 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/56193de5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/56292b7c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/564fad02 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/56ef5751 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/578dce6e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/57d3380b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/57eba46b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5842e92c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5851fcad +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/58b3dc20 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/590c3151 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/597241c0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/59a01bfc +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/59dade53 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5a00835c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5a6e8a36 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5a94b2d4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5aa233d1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5aaed4b5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5ac52fda +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5b058fc0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5b9982e1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5bf0ebb3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5c067259 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5c519b2e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5c58cf52 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5c860b06 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5ca35af7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5cc2a5f2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5dbf0efa +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5dcf8815 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5df98dff +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5e0084dd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5e0ade49 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5e3254b7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5e3d9351 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5ef36bb9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/5f7e2d51 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6003d22a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6024ce3f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/603d1a09 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6099b85c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/60c098f5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/61735b23 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/61baeade +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/61eaf84a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/61f394a9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/63b7b86c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/63dbdb75 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/642efab6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/64576716 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/64feda57 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6727e91e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/676dd1c7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6785b651 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/680f87b7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/684fc8f0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/68b405be +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6934e31c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/69ebf1f8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6a4adaa4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6ab75ab9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6aedce9c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6b22f01c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6b6ea009 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6b964097 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6bebb7f2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6c2dc97b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6c323752 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6c419a62 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6c8191df +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6cbfc0ec +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6d0ed167 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6d38b642 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6e07c342 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6ee04204 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6f08372c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6ff27b81 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/70a89c43 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7100ee08 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/711557af +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/71df9cb3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/71e82eb3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/721bcb05 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/73353274 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/73a7e632 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/73eb8d30 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/745708c8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/745a3f3f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7480f11b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/74ba3a2a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/750e2446 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/755be999 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/75d38e6f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/75e41e43 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/76098d14 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/767481d0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/768ba9a5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7695e4ef +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/76acfbad +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/77b3177e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/77e1cf2d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/77fc558f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/782e025a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/79348a96 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7999ceb5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/79cb00a3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/79d1fd4f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/79e9b74f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/79fbbd38 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7a49530a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7a7e7427 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7ae33d88 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7bace88a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7bb47bcb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7bc2abb7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7c5571fd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7c85800f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7ca4a550 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7d30017d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7dc31703 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7dc41c02 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7df6f53b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7e0c196c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7ea06cea +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7eb7072b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7f05c6bd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7f1a5577 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7f33fee5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7f8ed7c6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7fe0e38a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/802505aa +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8050e4de +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/807976df +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/80eb87a8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/80f57bae +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/813658cd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/81576ef6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/817f3f23 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/823b7456 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/825036eb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/827728c6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8355397b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8405c894 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/84be2a1f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/84c0614e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/851e3a3d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8568576b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/85b22357 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/85d87999 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/862d95a0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/863b37e7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8688c78e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/86f29b9c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8721b262 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/87372817 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/87486dd9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/877ba975 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/87815309 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/87cf2209 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8860e0d2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8867ad36 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8881536d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/88f399e4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8909e62b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/89d161f1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/89df437d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8a0422da +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8a0d857e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8a3f3a1c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8a7beab5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8a9de363 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8ac7c507 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8b02de67 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8c1780f5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8c2e23c4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8c35505b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8c842f00 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8ccefbfd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8cd2f7f5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8d6f2d62 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8d8378fb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8de50400 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8ee4e5aa +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8f19f1de +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8f7edf28 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8fc31d85 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8fde8b3a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8fe80334 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8ffe9d57 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/90071ef9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/903a4bb6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/90844771 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/90f6f6bf +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/90f9b5fe +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/90fca974 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/912cdd18 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9139eed6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9193c92b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/91ad8cbd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/91bef22e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9257d0ef +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/925f6c1c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/932f0770 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/93d1898a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/93d40c73 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/947e284a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9487bf0b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/94ff362e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/95045a9e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/957fe9a8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/95b0d444 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9754e44f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/97725d49 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9779e811 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/97b2bbde +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9914411b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9934c131 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/99ae9d9d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9a829968 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9a879959 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9ae44aeb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9b052f8a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9b0b0a85 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9b37b511 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9b489257 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9b599cfd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9c516c0d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9c57e9fb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9c8e932f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9d5899b0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9e44e752 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9e700c38 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9ed20890 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9ed80ba5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9f31e885 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a01ad988 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a038e1c6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a054b701 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a0c45d7e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a156a552 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a1704c20 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a20e8d0d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a23f6312 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a28c9a6e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a2b26ae5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a2f3e3bd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a329e7f2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a33e7cec +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a33fd10a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a3863874 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a3c3d444 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a3dac76a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a4610c62 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a4f1e349 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a52e9465 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a54946ab +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a59de33d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a621f48c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a6643a14 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a6748667 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a71680c9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a741626b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a79a40bb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a7e80865 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a84bb8a8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a8b08033 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/aa55d7ae +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/aaa1cacc +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ab0dca28 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ab8acc36 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ab904af9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ac65aea2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ac8e683e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/acafde5a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/acc36e66 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/adbb59d4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ae733a80 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/af61c24b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/afe43898 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b09da533 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b09f6c72 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b0a4cf3f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b0c9765d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b0ebcd80 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b10f835a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b11838e7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b1387b41 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b16865d3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b189a7f9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b1f3b076 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b22c223f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b2feaa00 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b3a6c531 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b3c2fab7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b4312d40 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b43ffb33 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b468f772 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b51de2d5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b52c0115 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b52d8a11 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b53e2053 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b5da2388 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b69ed3a3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b71dff43 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b7d39291 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b831da0f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b877c965 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b89ea4a8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b8bce506 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b8cddc1e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b918c238 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b91a27f4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b9b8683e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ba4a953e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ba9eb6f6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bab0ab08 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bb13d80d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bb39d88f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bb670cca +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bb771b62 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bb822c27 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bb82cac9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bbab69fa +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bc038f08 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bca8d4e0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bd1335d4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bdc97c9e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bdff1628 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/be235b31 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/be50dd51 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/be613c21 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bf45892f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bf6130ff +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bf836239 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bfcff297 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c0b789d2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c195fd89 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c1f269f7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c2254bb3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c2bd6730 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c314aece +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c33c2aa8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c4053fa6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c471f274 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c4cfcc74 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c4fb2446 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c5850517 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c6023a8e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c67edaca +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c694546d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c6b149df +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c6be9b35 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c6d587af +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c71aa102 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c78311fc +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c78cdc5c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c830c057 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c857ade6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c863f7f0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c987c99d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/caa1d7ed +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cc28d401 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cc2fce0a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cc5a5d99 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ccd0bbc3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cd9559de +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ce23b596 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ce2d8321 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ce41c404 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cee21910 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cefcae6a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cf57e0e4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cfc49f4f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cfe58471 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cff9434a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d0250ad2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d02dd6f7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d0507bf3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d0566353 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d078d90c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d089df65 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d0c678c2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d0cc0a90 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d11193a4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d1361d27 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d1385879 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d14ad268 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d156db90 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d169f713 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d1749d4d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d1bbe640 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d247c094 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d2669cbd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d2f890e2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d3141599 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d324b6b9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d340a85c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d3446c23 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d354c66c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d371b748 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d3782cec +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d4359216 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d462f4c1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d47ab838 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d4a032a1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d50a5380 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d52796e4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d616784e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d65a0463 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d6cd18fa +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d6e08a91 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d72a4a2a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d74b7025 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d7723939 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d7d7317a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d7e8c85c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d7ff2df5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d8d03a3f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d8e695f3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d907092d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d93904b7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d97861bc +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d9844a1f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/da597b1c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/da6779d2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/da98dfd4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/dab50408 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/dae56480 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/db007bb9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/dc86f000 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/dcd928a5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/dd7f0187 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/de6ad39d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/de74e659 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/de8a4a0e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/defd1f27 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/df03018c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/df3204a7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e0040528 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e021b2f2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e0357dd1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e03e2acd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e0cb7de8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e11f9dfb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e1462058 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e15267d7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e158d332 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e1616ae8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e2210767 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e232108b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e24bbefe +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e25926db +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e26c8da2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e3b505c0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e3c62c17 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e42cea44 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e440f416 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e46d0e12 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e46df96c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e50b7476 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e5a3e062 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e6150736 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e6381699 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e6735171 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e6745c2b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e69a71f1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e6b99945 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e6e52474 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e7094c15 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e745da28 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e75354fd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e76c5b05 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e7ffa8e0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e83f7a76 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e8b287c3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e8c0d4c4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e8d24ab7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ea0c093a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ea7fb92f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/eb64b5cd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ec139485 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ec3b7323 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ec52b361 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ec78b82f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ecc029f4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ecff06c1 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ed0bd7bb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/edd7edbc +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/eeeebdfe +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f020f5bb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f172e4e2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f1b3b480 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f2aaf71b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f313ac1d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f40eb761 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f4468094 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f45935dc +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f4599b90 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f46cec47 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f58007fa +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f5975606 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f59beb2e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f6062e44 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f6aa419b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f6c5f0ab +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f6fc9c2e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f7639b46 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f7c8f5b4 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f7fdd15c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f80ff713 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f858e63e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f8c03da6 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f925bc46 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f9759b03 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/f9ade3cd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/faad30b7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fbca6276 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fc2213f2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fc35d6bb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fc5a7fb3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fc76c4a0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fc97d72d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fd0a2987 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fd548eb2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fd70478c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fd7e8217 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fdb12365 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fe85d215 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fe87f03f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fea2f346 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fedd4c35 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ff2d0778 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ff7c87a7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ff930c42 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ff967e9d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/ffe90523 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fff715f6 +0 -0
- package/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/README_PSD.md +1 -1
- package/dist/abr.js +43 -56
- package/dist/abr.js.map +1 -1
- package/dist/additionalInfo.js +770 -808
- package/dist/additionalInfo.js.map +1 -1
- package/dist/ase.js +21 -21
- package/dist/ase.js.map +1 -1
- package/dist/bundle.js +2599 -2779
- package/dist/csh.js +18 -29
- package/dist/csh.js.map +1 -1
- package/dist/descriptor.js +234 -269
- package/dist/descriptor.js.map +1 -1
- package/dist/effectsHelpers.js +91 -112
- package/dist/effectsHelpers.js.map +1 -1
- package/dist/engineData.js +45 -51
- package/dist/engineData.js.map +1 -1
- package/dist/engineData2.js +8 -9
- package/dist/engineData2.js.map +1 -1
- package/dist/helpers.js +75 -81
- package/dist/helpers.js.map +1 -1
- package/dist/imageResources.js +342 -381
- package/dist/imageResources.js.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/initializeCanvas.js +2 -2
- package/dist/initializeCanvas.js.map +1 -1
- package/dist/jpeg.js +279 -279
- package/dist/jpeg.js.map +1 -1
- package/dist/psdReader.d.ts +1 -1
- package/dist/psdReader.js +343 -348
- package/dist/psdReader.js.map +1 -1
- package/dist/psdWriter.d.ts +2 -1
- package/dist/psdWriter.js +225 -206
- package/dist/psdWriter.js.map +1 -1
- package/dist/text.js +98 -122
- package/dist/text.js.map +1 -1
- package/dist/utf8.js +22 -22
- package/dist/utf8.js.map +1 -1
- package/dist-es/abr.js +41 -54
- package/dist-es/abr.js.map +1 -1
- package/dist-es/additionalInfo.js +765 -803
- package/dist-es/additionalInfo.js.map +1 -1
- package/dist-es/ase.js +20 -20
- package/dist-es/ase.js.map +1 -1
- package/dist-es/csh.js +16 -27
- package/dist-es/csh.js.map +1 -1
- package/dist-es/descriptor.js +284 -319
- package/dist-es/descriptor.js.map +1 -1
- package/dist-es/effectsHelpers.js +88 -109
- package/dist-es/effectsHelpers.js.map +1 -1
- package/dist-es/engineData.js +45 -51
- package/dist-es/engineData.js.map +1 -1
- package/dist-es/engineData2.js +8 -9
- package/dist-es/engineData2.js.map +1 -1
- package/dist-es/helpers.js +79 -85
- package/dist-es/helpers.js.map +1 -1
- package/dist-es/imageResources.js +338 -377
- package/dist-es/imageResources.js.map +1 -1
- package/dist-es/index.js +4 -4
- package/dist-es/index.js.map +1 -1
- package/dist-es/jpeg.js +279 -279
- package/dist-es/jpeg.js.map +1 -1
- package/dist-es/psdReader.d.ts +1 -1
- package/dist-es/psdReader.js +340 -345
- package/dist-es/psdReader.js.map +1 -1
- package/dist-es/psdWriter.d.ts +2 -1
- package/dist-es/psdWriter.js +220 -202
- package/dist-es/psdWriter.js.map +1 -1
- package/dist-es/text.js +98 -122
- package/dist-es/text.js.map +1 -1
- package/dist-es/utf8.js +22 -22
- package/dist-es/utf8.js.map +1 -1
- package/package.json +1 -1
- package/publish.js +24 -0
- package/src/additionalInfo.ts +15 -11
- package/src/psdReader.ts +9 -2
- package/src/psdWriter.ts +76 -1
- package/tsconfig.json +4 -3
package/dist-es/psdReader.js
CHANGED
|
@@ -13,19 +13,19 @@ import { inflate as inflateSync } from 'pako';
|
|
|
13
13
|
import { resetImageData, offsetForChannel, decodeBitmap, createImageData, toBlendMode, RAW_IMAGE_DATA, largeAdditionalInfoKeys, imageDataToCanvas } from './helpers';
|
|
14
14
|
import { infoHandlersMap } from './additionalInfo';
|
|
15
15
|
import { resourceHandlersMap } from './imageResources';
|
|
16
|
-
export
|
|
17
|
-
|
|
16
|
+
export const supportedColorModes = [0 /* ColorMode.Bitmap */, 1 /* ColorMode.Grayscale */, 3 /* ColorMode.RGB */, 2 /* ColorMode.Indexed */];
|
|
17
|
+
const colorModes = ['bitmap', 'grayscale', 'indexed', 'RGB', 'CMYK', 'multichannel', 'duotone', 'lab'];
|
|
18
18
|
function setupGrayscale(data) {
|
|
19
|
-
|
|
20
|
-
for (
|
|
21
|
-
|
|
19
|
+
const size = data.width * data.height * 4;
|
|
20
|
+
for (let i = 0; i < size; i += 4) {
|
|
21
|
+
const c = data.data[i];
|
|
22
22
|
data.data[i + 1] = c;
|
|
23
23
|
data.data[i + 2] = c;
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
export function createReader(buffer, offset, length) {
|
|
27
|
-
|
|
28
|
-
return { view
|
|
27
|
+
const view = new DataView(buffer, offset, length);
|
|
28
|
+
return { view, offset: 0, strict: false, debug: false, large: false, globalAlpha: false, log: console.log };
|
|
29
29
|
}
|
|
30
30
|
export function warnOrThrow(reader, message) {
|
|
31
31
|
if (reader.strict)
|
|
@@ -81,15 +81,15 @@ export function readFixedPointPath32(reader) {
|
|
|
81
81
|
return readInt32(reader) / (1 << 24);
|
|
82
82
|
}
|
|
83
83
|
export function readBytes(reader, length) {
|
|
84
|
-
|
|
84
|
+
const start = reader.view.byteOffset + reader.offset;
|
|
85
85
|
reader.offset += length;
|
|
86
86
|
if ((start + length) > reader.view.buffer.byteLength) {
|
|
87
87
|
// fix for broken PSD files that are missing part of file at the end
|
|
88
88
|
warnOrThrow(reader, 'Reading bytes exceeding buffer length');
|
|
89
89
|
if (length > (100 * 1024 * 1024))
|
|
90
90
|
throw new Error('Reading past end of file'); // limit to 100MB
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
const result = new Uint8Array(length);
|
|
92
|
+
const len = Math.min(length, reader.view.byteLength - start);
|
|
93
93
|
if (len > 0)
|
|
94
94
|
result.set(new Uint8Array(reader.view.buffer, start, len));
|
|
95
95
|
return result;
|
|
@@ -102,28 +102,28 @@ export function readSignature(reader) {
|
|
|
102
102
|
return readShortString(reader, 4);
|
|
103
103
|
}
|
|
104
104
|
export function validSignatureAt(reader, offset) {
|
|
105
|
-
|
|
105
|
+
const sig = String.fromCharCode(reader.view.getUint8(offset))
|
|
106
106
|
+ String.fromCharCode(reader.view.getUint8(offset + 1))
|
|
107
107
|
+ String.fromCharCode(reader.view.getUint8(offset + 2))
|
|
108
108
|
+ String.fromCharCode(reader.view.getUint8(offset + 3));
|
|
109
109
|
return sig == '8BIM' || sig == '8B64';
|
|
110
110
|
}
|
|
111
111
|
export function readPascalString(reader, padTo) {
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
let length = readUint8(reader);
|
|
113
|
+
const text = length ? readShortString(reader, length) : '';
|
|
114
114
|
while (++length % padTo) { // starts with length + 1 so we count the size byte too
|
|
115
115
|
reader.offset++;
|
|
116
116
|
}
|
|
117
117
|
return text;
|
|
118
118
|
}
|
|
119
119
|
export function readUnicodeString(reader) {
|
|
120
|
-
|
|
120
|
+
const length = readUint32(reader);
|
|
121
121
|
return readUnicodeStringWithLength(reader, length);
|
|
122
122
|
}
|
|
123
123
|
export function readUnicodeStringWithLength(reader, length) {
|
|
124
|
-
|
|
124
|
+
let text = '';
|
|
125
125
|
while (length--) {
|
|
126
|
-
|
|
126
|
+
const value = readUint16(reader);
|
|
127
127
|
if (value || length > 0) { // remove trailing \0
|
|
128
128
|
text += String.fromCharCode(value);
|
|
129
129
|
}
|
|
@@ -131,9 +131,9 @@ export function readUnicodeStringWithLength(reader, length) {
|
|
|
131
131
|
return text;
|
|
132
132
|
}
|
|
133
133
|
export function readUnicodeStringWithLengthLE(reader, length) {
|
|
134
|
-
|
|
134
|
+
let text = '';
|
|
135
135
|
while (length--) {
|
|
136
|
-
|
|
136
|
+
const value = readUint16LE(reader);
|
|
137
137
|
if (value || length > 0) { // remove trailing \0
|
|
138
138
|
text += String.fromCharCode(value);
|
|
139
139
|
}
|
|
@@ -141,7 +141,7 @@ export function readUnicodeStringWithLengthLE(reader, length) {
|
|
|
141
141
|
return text;
|
|
142
142
|
}
|
|
143
143
|
export function readAsciiString(reader, length) {
|
|
144
|
-
|
|
144
|
+
let text = '';
|
|
145
145
|
while (length--) {
|
|
146
146
|
text += String.fromCharCode(readUint8(reader));
|
|
147
147
|
}
|
|
@@ -151,16 +151,16 @@ export function skipBytes(reader, count) {
|
|
|
151
151
|
reader.offset += count;
|
|
152
152
|
}
|
|
153
153
|
export function checkSignature(reader, a, b) {
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
const offset = reader.offset;
|
|
155
|
+
const signature = readSignature(reader);
|
|
156
156
|
if (signature !== a && signature !== b) {
|
|
157
|
-
throw new Error(
|
|
157
|
+
throw new Error(`Invalid signature: '${signature}' at 0x${offset.toString(16)}`);
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
160
|
function readShortString(reader, length) {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
for (
|
|
161
|
+
const buffer = readBytes(reader, length);
|
|
162
|
+
let result = '';
|
|
163
|
+
for (let i = 0; i < buffer.length; i++) {
|
|
164
164
|
result += String.fromCharCode(buffer[i]);
|
|
165
165
|
}
|
|
166
166
|
return result;
|
|
@@ -168,35 +168,34 @@ function readShortString(reader, length) {
|
|
|
168
168
|
function isValidSignature(sig) {
|
|
169
169
|
return sig === '8BIM' || sig === 'MeSa' || sig === 'AgHg' || sig === 'PHUT' || sig === 'DCSR';
|
|
170
170
|
}
|
|
171
|
-
export function readPsd(reader, readOptions) {
|
|
171
|
+
export function readPsd(reader, readOptions = {}) {
|
|
172
172
|
var _a;
|
|
173
|
-
if (readOptions === void 0) { readOptions = {}; }
|
|
174
173
|
// header
|
|
175
174
|
checkSignature(reader, '8BPS');
|
|
176
|
-
|
|
175
|
+
const version = readUint16(reader);
|
|
177
176
|
if (version !== 1 && version !== 2)
|
|
178
|
-
throw new Error(
|
|
177
|
+
throw new Error(`Invalid PSD file version: ${version}`);
|
|
179
178
|
skipBytes(reader, 6);
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
179
|
+
const channels = readUint16(reader);
|
|
180
|
+
const height = readUint32(reader);
|
|
181
|
+
const width = readUint32(reader);
|
|
182
|
+
const bitsPerChannel = readUint16(reader);
|
|
183
|
+
const colorMode = readUint16(reader);
|
|
184
|
+
const maxSize = version === 1 ? 30000 : 300000;
|
|
186
185
|
if (width > maxSize || height > maxSize)
|
|
187
|
-
throw new Error(
|
|
186
|
+
throw new Error(`Invalid size: ${width}x${height}`);
|
|
188
187
|
if (channels > 16)
|
|
189
|
-
throw new Error(
|
|
188
|
+
throw new Error(`Invalid channel count: ${channels}`);
|
|
190
189
|
if (![1, 8, 16, 32].includes(bitsPerChannel))
|
|
191
|
-
throw new Error(
|
|
190
|
+
throw new Error(`Invalid bitsPerChannel: ${bitsPerChannel}`);
|
|
192
191
|
if (supportedColorModes.indexOf(colorMode) === -1)
|
|
193
|
-
throw new Error(
|
|
194
|
-
|
|
192
|
+
throw new Error(`Color mode not supported: ${(_a = colorModes[colorMode]) !== null && _a !== void 0 ? _a : colorMode}`);
|
|
193
|
+
const psd = { width, height, channels, bitsPerChannel, colorMode };
|
|
195
194
|
Object.assign(reader, readOptions);
|
|
196
195
|
reader.large = version === 2;
|
|
197
196
|
reader.globalAlpha = false;
|
|
198
197
|
// color mode data
|
|
199
|
-
readSection(reader, 1,
|
|
198
|
+
readSection(reader, 1, left => {
|
|
200
199
|
if (!left())
|
|
201
200
|
return;
|
|
202
201
|
if (colorMode === 2 /* ColorMode.Indexed */) {
|
|
@@ -204,11 +203,11 @@ export function readPsd(reader, readOptions) {
|
|
|
204
203
|
if (left() != 768)
|
|
205
204
|
throw new Error('Invalid color palette size');
|
|
206
205
|
psd.palette = [];
|
|
207
|
-
for (
|
|
206
|
+
for (let i = 0; i < 256; i++)
|
|
208
207
|
psd.palette.push({ r: readUint8(reader), g: 0, b: 0 });
|
|
209
|
-
for (
|
|
208
|
+
for (let i = 0; i < 256; i++)
|
|
210
209
|
psd.palette[i].g = readUint8(reader);
|
|
211
|
-
for (
|
|
210
|
+
for (let i = 0; i < 256; i++)
|
|
212
211
|
psd.palette[i].b = readUint8(reader);
|
|
213
212
|
}
|
|
214
213
|
else {
|
|
@@ -218,15 +217,15 @@ export function readPsd(reader, readOptions) {
|
|
|
218
217
|
skipBytes(reader, left());
|
|
219
218
|
});
|
|
220
219
|
// image resources
|
|
221
|
-
|
|
222
|
-
readSection(reader, 1,
|
|
223
|
-
|
|
220
|
+
const imageResources = {};
|
|
221
|
+
readSection(reader, 1, left => {
|
|
222
|
+
while (left() > 0) {
|
|
224
223
|
realignWithSignature(reader, isValidSignature);
|
|
225
|
-
|
|
224
|
+
const id = readUint16(reader);
|
|
226
225
|
readPascalString(reader, 2); // name
|
|
227
|
-
readSection(reader, 2,
|
|
228
|
-
|
|
229
|
-
|
|
226
|
+
readSection(reader, 2, left => {
|
|
227
|
+
const handler = resourceHandlersMap[id];
|
|
228
|
+
const skip = id === 1036 && !!reader.skipThumbnail;
|
|
230
229
|
if (handler && !skip) {
|
|
231
230
|
try {
|
|
232
231
|
handler.read(reader, imageResources, left);
|
|
@@ -242,24 +241,21 @@ export function readPsd(reader, readOptions) {
|
|
|
242
241
|
skipBytes(reader, left());
|
|
243
242
|
}
|
|
244
243
|
});
|
|
245
|
-
};
|
|
246
|
-
while (left() > 0) {
|
|
247
|
-
_loop_1();
|
|
248
244
|
}
|
|
249
245
|
});
|
|
250
|
-
|
|
246
|
+
const { layersGroup, layerGroupsEnabledId } = imageResources, rest = __rest(imageResources, ["layersGroup", "layerGroupsEnabledId"]);
|
|
251
247
|
if (Object.keys(rest)) {
|
|
252
248
|
psd.imageResources = rest;
|
|
253
249
|
}
|
|
254
250
|
// layer and mask info
|
|
255
|
-
readSection(reader, 1,
|
|
256
|
-
readSection(reader, 2,
|
|
251
|
+
readSection(reader, 1, left => {
|
|
252
|
+
readSection(reader, 2, left => {
|
|
257
253
|
readLayerInfo(reader, psd, imageResources);
|
|
258
254
|
skipBytes(reader, left());
|
|
259
255
|
}, undefined, reader.large);
|
|
260
256
|
// SAI does not include this section
|
|
261
257
|
if (left() > 0) {
|
|
262
|
-
|
|
258
|
+
const globalLayerMaskInfo = readGlobalLayerMaskInfo(reader);
|
|
263
259
|
if (globalLayerMaskInfo)
|
|
264
260
|
psd.globalLayerMaskInfo = globalLayerMaskInfo;
|
|
265
261
|
}
|
|
@@ -283,8 +279,8 @@ export function readPsd(reader, readOptions) {
|
|
|
283
279
|
}
|
|
284
280
|
}
|
|
285
281
|
}, undefined, reader.large);
|
|
286
|
-
|
|
287
|
-
|
|
282
|
+
const hasChildren = psd.children && psd.children.length;
|
|
283
|
+
const skipComposite = reader.skipCompositeImageData && (reader.skipLayerImageData || hasChildren);
|
|
288
284
|
if (!skipComposite) {
|
|
289
285
|
readImageData(reader, psd);
|
|
290
286
|
}
|
|
@@ -295,16 +291,16 @@ export function readPsd(reader, readOptions) {
|
|
|
295
291
|
}
|
|
296
292
|
export function readLayerInfo(reader, psd, imageResources) {
|
|
297
293
|
var _a, _b;
|
|
298
|
-
|
|
299
|
-
|
|
294
|
+
const { layersGroup = [], layerGroupsEnabledId = [] } = imageResources;
|
|
295
|
+
let layerCount = readInt16(reader);
|
|
300
296
|
if (layerCount < 0) {
|
|
301
297
|
reader.globalAlpha = true;
|
|
302
298
|
layerCount = -layerCount;
|
|
303
299
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
for (
|
|
307
|
-
|
|
300
|
+
const layers = [];
|
|
301
|
+
const layerChannels = [];
|
|
302
|
+
for (let i = 0; i < layerCount; i++) {
|
|
303
|
+
const { layer, channels } = readLayerRecord(reader, psd, imageResources);
|
|
308
304
|
if (layersGroup[i] !== undefined)
|
|
309
305
|
layer.linkGroup = layersGroup[i];
|
|
310
306
|
if (layerGroupsEnabledId[i] !== undefined)
|
|
@@ -312,15 +308,15 @@ export function readLayerInfo(reader, psd, imageResources) {
|
|
|
312
308
|
layers.push(layer);
|
|
313
309
|
layerChannels.push(channels);
|
|
314
310
|
}
|
|
315
|
-
for (
|
|
311
|
+
for (let i = 0; i < layerCount; i++) {
|
|
316
312
|
readLayerChannelImageData(reader, psd, layers[i], layerChannels[i]);
|
|
317
313
|
}
|
|
318
314
|
if (!psd.children)
|
|
319
315
|
psd.children = [];
|
|
320
|
-
|
|
321
|
-
for (
|
|
322
|
-
|
|
323
|
-
|
|
316
|
+
const stack = [psd];
|
|
317
|
+
for (let i = layers.length - 1; i >= 0; i--) {
|
|
318
|
+
const l = layers[i];
|
|
319
|
+
const type = l.sectionDivider ? l.sectionDivider.type : 0 /* SectionDividerType.Other */;
|
|
324
320
|
if (type === 1 /* SectionDividerType.OpenFolder */ || type === 2 /* SectionDividerType.ClosedFolder */) {
|
|
325
321
|
l.opened = type === 1 /* SectionDividerType.OpenFolder */;
|
|
326
322
|
l.children = [];
|
|
@@ -343,31 +339,31 @@ export function readLayerInfo(reader, psd, imageResources) {
|
|
|
343
339
|
}
|
|
344
340
|
}
|
|
345
341
|
function readLayerRecord(reader, psd, imageResources) {
|
|
346
|
-
|
|
342
|
+
const layer = {};
|
|
347
343
|
layer.top = readInt32(reader);
|
|
348
344
|
layer.left = readInt32(reader);
|
|
349
345
|
layer.bottom = readInt32(reader);
|
|
350
346
|
layer.right = readInt32(reader);
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
for (
|
|
354
|
-
|
|
355
|
-
|
|
347
|
+
const channelCount = readUint16(reader);
|
|
348
|
+
const channels = [];
|
|
349
|
+
for (let i = 0; i < channelCount; i++) {
|
|
350
|
+
let id = readInt16(reader);
|
|
351
|
+
let length = readUint32(reader);
|
|
356
352
|
if (reader.large) {
|
|
357
|
-
if (
|
|
353
|
+
if (length !== 0)
|
|
358
354
|
throw new Error('Sizes larger than 4GB are not supported');
|
|
359
|
-
|
|
355
|
+
length = readUint32(reader);
|
|
360
356
|
}
|
|
361
|
-
channels.push({ id
|
|
357
|
+
channels.push({ id, length });
|
|
362
358
|
}
|
|
363
359
|
checkSignature(reader, '8BIM');
|
|
364
|
-
|
|
360
|
+
const blendMode = readSignature(reader);
|
|
365
361
|
if (!toBlendMode[blendMode])
|
|
366
|
-
throw new Error(
|
|
362
|
+
throw new Error(`Invalid blend mode: '${blendMode}'`);
|
|
367
363
|
layer.blendMode = toBlendMode[blendMode];
|
|
368
364
|
layer.opacity = readUint8(reader) / 0xff;
|
|
369
365
|
layer.clipping = readUint8(reader) === 1;
|
|
370
|
-
|
|
366
|
+
const flags = readUint8(reader);
|
|
371
367
|
layer.transparencyProtected = (flags & 0x01) !== 0;
|
|
372
368
|
layer.hidden = (flags & 0x02) !== 0;
|
|
373
369
|
if (flags & 0x20)
|
|
@@ -377,9 +373,9 @@ function readLayerRecord(reader, psd, imageResources) {
|
|
|
377
373
|
// 0x10 - pixel data irrelevant to appearance of document
|
|
378
374
|
// 0x20 - effects/filters panel is expanded
|
|
379
375
|
skipBytes(reader, 1);
|
|
380
|
-
readSection(reader, 1,
|
|
376
|
+
readSection(reader, 1, left => {
|
|
381
377
|
readLayerMaskData(reader, layer);
|
|
382
|
-
|
|
378
|
+
const blendingRanges = readLayerBlendingRanges(reader);
|
|
383
379
|
if (blendingRanges)
|
|
384
380
|
layer.blendingRanges = blendingRanges;
|
|
385
381
|
layer.name = readPascalString(reader, 1); // should be padded to 4, but is not sometimes
|
|
@@ -390,27 +386,27 @@ function readLayerRecord(reader, psd, imageResources) {
|
|
|
390
386
|
readAdditionalLayerInfo(reader, layer, psd, imageResources);
|
|
391
387
|
skipBytes(reader, left());
|
|
392
388
|
});
|
|
393
|
-
return { layer
|
|
389
|
+
return { layer, channels };
|
|
394
390
|
}
|
|
395
391
|
function readLayerMaskData(reader, layer) {
|
|
396
|
-
return readSection(reader, 1,
|
|
392
|
+
return readSection(reader, 1, left => {
|
|
397
393
|
if (!left())
|
|
398
394
|
return undefined;
|
|
399
|
-
|
|
395
|
+
const mask = {};
|
|
400
396
|
layer.mask = mask;
|
|
401
397
|
mask.top = readInt32(reader);
|
|
402
398
|
mask.left = readInt32(reader);
|
|
403
399
|
mask.bottom = readInt32(reader);
|
|
404
400
|
mask.right = readInt32(reader);
|
|
405
401
|
mask.defaultColor = readUint8(reader);
|
|
406
|
-
|
|
402
|
+
const flags = readUint8(reader);
|
|
407
403
|
mask.positionRelativeToLayer = (flags & 1 /* LayerMaskFlags.PositionRelativeToLayer */) !== 0;
|
|
408
404
|
mask.disabled = (flags & 2 /* LayerMaskFlags.LayerMaskDisabled */) !== 0;
|
|
409
405
|
mask.fromVectorData = (flags & 8 /* LayerMaskFlags.LayerMaskFromRenderingOtherData */) !== 0;
|
|
410
406
|
if (left() >= 18) {
|
|
411
|
-
|
|
407
|
+
const realMask = {};
|
|
412
408
|
layer.realMask = realMask;
|
|
413
|
-
|
|
409
|
+
const realFlags = readUint8(reader);
|
|
414
410
|
realMask.positionRelativeToLayer = (realFlags & 1 /* LayerMaskFlags.PositionRelativeToLayer */) !== 0;
|
|
415
411
|
realMask.disabled = (realFlags & 2 /* LayerMaskFlags.LayerMaskDisabled */) !== 0;
|
|
416
412
|
realMask.fromVectorData = (realFlags & 8 /* LayerMaskFlags.LayerMaskFromRenderingOtherData */) !== 0;
|
|
@@ -421,7 +417,7 @@ function readLayerMaskData(reader, layer) {
|
|
|
421
417
|
realMask.right = readInt32(reader);
|
|
422
418
|
}
|
|
423
419
|
if (flags & 16 /* LayerMaskFlags.MaskHasParametersAppliedToIt */) {
|
|
424
|
-
|
|
420
|
+
const params = readUint8(reader);
|
|
425
421
|
if (params & 1 /* MaskParams.UserMaskDensity */)
|
|
426
422
|
mask.userMaskDensity = readUint8(reader) / 0xff;
|
|
427
423
|
if (params & 2 /* MaskParams.UserMaskFeather */)
|
|
@@ -438,28 +434,27 @@ function readBlendingRange(reader) {
|
|
|
438
434
|
return [readUint8(reader), readUint8(reader), readUint8(reader), readUint8(reader)];
|
|
439
435
|
}
|
|
440
436
|
function readLayerBlendingRanges(reader) {
|
|
441
|
-
return readSection(reader, 1,
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
437
|
+
return readSection(reader, 1, left => {
|
|
438
|
+
const compositeGrayBlendSource = readBlendingRange(reader);
|
|
439
|
+
const compositeGraphBlendDestinationRange = readBlendingRange(reader);
|
|
440
|
+
const ranges = [];
|
|
445
441
|
while (left() > 0) {
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
ranges.push({ sourceRange
|
|
442
|
+
const sourceRange = readBlendingRange(reader);
|
|
443
|
+
const destRange = readBlendingRange(reader);
|
|
444
|
+
ranges.push({ sourceRange, destRange });
|
|
449
445
|
}
|
|
450
|
-
return { compositeGrayBlendSource
|
|
446
|
+
return { compositeGrayBlendSource, compositeGraphBlendDestinationRange, ranges };
|
|
451
447
|
});
|
|
452
448
|
}
|
|
453
449
|
function readLayerChannelImageData(reader, psd, layer, channels) {
|
|
454
450
|
if (reader.skipLayerImageData)
|
|
455
451
|
return;
|
|
456
|
-
|
|
457
|
-
layer.rawData = { colorMode
|
|
458
|
-
for (
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
var data = undefined;
|
|
452
|
+
const { colorMode = 3 /* ColorMode.RGB */, bitsPerChannel = 8 } = psd;
|
|
453
|
+
layer.rawData = { colorMode, bitsPerChannel, channels: [], large: reader.large };
|
|
454
|
+
for (const channel of channels) {
|
|
455
|
+
const start = reader.offset;
|
|
456
|
+
let compression = 0 /* Compression.RawData */;
|
|
457
|
+
let data = undefined;
|
|
463
458
|
if (channel.length === 1)
|
|
464
459
|
throw new Error('Invalid channel length');
|
|
465
460
|
if (channel.length) {
|
|
@@ -475,37 +470,36 @@ function readLayerChannelImageData(reader, psd, layer, channels) {
|
|
|
475
470
|
compression = readUint16(reader);
|
|
476
471
|
}
|
|
477
472
|
if (compression > 3)
|
|
478
|
-
throw new Error(
|
|
473
|
+
throw new Error(`Invalid compression: ${compression}`);
|
|
479
474
|
if (channel.length > 2) {
|
|
480
475
|
data = readBytes(reader, channel.length - 2);
|
|
481
476
|
}
|
|
482
477
|
}
|
|
483
478
|
reader.offset = start + channel.length;
|
|
484
|
-
layer.rawData.channels.push({ id: channel.id, compression
|
|
479
|
+
layer.rawData.channels.push({ id: channel.id, compression, data });
|
|
485
480
|
}
|
|
486
481
|
if (!reader.useRawData) {
|
|
487
482
|
decodeLayerImageData(layer, !!reader.useImageData, !!reader.throwForMissingFeatures);
|
|
488
483
|
}
|
|
489
484
|
}
|
|
490
|
-
function resetAlpha(
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
for (var p = offset; p < length; p = (p + step) | 0) {
|
|
485
|
+
function resetAlpha({ data }, cmyk) {
|
|
486
|
+
const alpha = (data instanceof Float32Array) ? 1.0 : ((data instanceof Uint16Array) ? 0xffff : 0xff);
|
|
487
|
+
const offset = (cmyk ? 4 : 3) | 0;
|
|
488
|
+
const length = data.length | 0;
|
|
489
|
+
const step = (cmyk ? 5 : 4) | 0;
|
|
490
|
+
for (let p = offset; p < length; p = (p + step) | 0) {
|
|
497
491
|
data[p] = alpha;
|
|
498
492
|
}
|
|
499
493
|
}
|
|
500
494
|
export function decodeLayerImageData(layer, useImageData, throwForMissingFeatures) {
|
|
501
495
|
if (!layer.rawData)
|
|
502
496
|
return;
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
497
|
+
const { colorMode, bitsPerChannel, channels, large } = layer.rawData;
|
|
498
|
+
const layerWidth = (layer.right || 0) - (layer.left || 0);
|
|
499
|
+
const layerHeight = (layer.bottom || 0) - (layer.top || 0);
|
|
500
|
+
const cmyk = colorMode === 4 /* ColorMode.CMYK */;
|
|
501
|
+
let imageData;
|
|
502
|
+
let initializedAlpha = false;
|
|
509
503
|
if (layerWidth && layerHeight) {
|
|
510
504
|
if (cmyk) {
|
|
511
505
|
if (bitsPerChannel !== 8)
|
|
@@ -520,21 +514,20 @@ export function decodeLayerImageData(layer, useImageData, throwForMissingFeature
|
|
|
520
514
|
layer.imageDataRaw = [];
|
|
521
515
|
layer.imageDataRawCompression = [];
|
|
522
516
|
}
|
|
523
|
-
for (
|
|
524
|
-
var _b = channels_2[_i], id = _b.id, compression = _b.compression, data = _b.data;
|
|
517
|
+
for (const { id, compression, data } of channels) {
|
|
525
518
|
if (!data)
|
|
526
519
|
continue;
|
|
527
|
-
|
|
520
|
+
const dataReader = createReader(data.buffer, data.byteOffset, data.byteLength);
|
|
528
521
|
if (id === -2 /* ChannelID.UserMask */ || id === -3 /* ChannelID.RealUserMask */) {
|
|
529
|
-
|
|
522
|
+
const mask = id === -2 /* ChannelID.UserMask */ ? layer.mask : layer.realMask;
|
|
530
523
|
if (!mask)
|
|
531
|
-
throw new Error(
|
|
532
|
-
|
|
533
|
-
|
|
524
|
+
throw new Error(`Missing layer ${id === -2 /* ChannelID.UserMask */ ? 'mask' : 'real mask'} data`);
|
|
525
|
+
const maskWidth = (mask.right || 0) - (mask.left || 0);
|
|
526
|
+
const maskHeight = (mask.bottom || 0) - (mask.top || 0);
|
|
534
527
|
if (maskWidth < 0 || maskHeight < 0 || maskWidth > 30000 || maskHeight > 30000)
|
|
535
528
|
throw new Error('Invalid mask size');
|
|
536
529
|
if (maskWidth && maskHeight) {
|
|
537
|
-
|
|
530
|
+
const maskData = createImageDataBitDepth(maskWidth, maskHeight, bitsPerChannel);
|
|
538
531
|
readData(dataReader, data.byteLength, maskData, compression, maskWidth, maskHeight, bitsPerChannel, 0, large, 4);
|
|
539
532
|
if (RAW_IMAGE_DATA) { // TODO: use layer.rawData instead
|
|
540
533
|
if (id === -2 /* ChannelID.UserMask */) {
|
|
@@ -557,12 +550,12 @@ export function decodeLayerImageData(layer, useImageData, throwForMissingFeature
|
|
|
557
550
|
}
|
|
558
551
|
}
|
|
559
552
|
else {
|
|
560
|
-
|
|
561
|
-
|
|
553
|
+
const offset = offsetForChannel(id, cmyk);
|
|
554
|
+
let targetData = imageData;
|
|
562
555
|
if (offset < 0) {
|
|
563
556
|
targetData = undefined;
|
|
564
557
|
if (throwForMissingFeatures) {
|
|
565
|
-
throw new Error(
|
|
558
|
+
throw new Error(`Channel not supported: ${id}`);
|
|
566
559
|
}
|
|
567
560
|
}
|
|
568
561
|
readData(dataReader, data.byteLength, targetData, compression, layerWidth, layerHeight, bitsPerChannel, offset, large, cmyk ? 5 : 4);
|
|
@@ -582,7 +575,7 @@ export function decodeLayerImageData(layer, useImageData, throwForMissingFeature
|
|
|
582
575
|
if (!initializedAlpha)
|
|
583
576
|
resetAlpha(imageData, cmyk);
|
|
584
577
|
if (cmyk) {
|
|
585
|
-
|
|
578
|
+
const cmykData = imageData;
|
|
586
579
|
imageData = createImageData(cmykData.width, cmykData.height);
|
|
587
580
|
cmykToRgb(cmykData, imageData, false);
|
|
588
581
|
}
|
|
@@ -600,9 +593,9 @@ function readData(reader, length, pixels, compression, width, height, bitDepth,
|
|
|
600
593
|
return;
|
|
601
594
|
if (compression === 0 /* Compression.RawData */) {
|
|
602
595
|
if (length !== (width * height * Math.floor(bitDepth / 8))) {
|
|
603
|
-
reader.log(
|
|
596
|
+
reader.log(`Invalid length (${length}, ${width * height * Math.floor(bitDepth / 8)})`);
|
|
604
597
|
}
|
|
605
|
-
|
|
598
|
+
const data = readBytes(reader, length);
|
|
606
599
|
readDataRaw(data, pixels, bitDepth, step, offset);
|
|
607
600
|
}
|
|
608
601
|
else if (compression === 1 /* Compression.RleCompressed */) {
|
|
@@ -610,39 +603,38 @@ function readData(reader, length, pixels, compression, width, height, bitDepth,
|
|
|
610
603
|
readDataRLE(reader, pixels, width, height, bitDepth, step, [offset], large);
|
|
611
604
|
}
|
|
612
605
|
else if (compression === 2 /* Compression.ZipWithoutPrediction */) {
|
|
613
|
-
|
|
606
|
+
const data = readBytes(reader, length);
|
|
614
607
|
readDataZip(data, pixels, width, height, bitDepth, step, offset, false);
|
|
615
608
|
}
|
|
616
609
|
else if (compression === 3 /* Compression.ZipWithPrediction */) {
|
|
617
|
-
|
|
610
|
+
const data = readBytes(reader, length);
|
|
618
611
|
readDataZip(data, pixels, width, height, bitDepth, step, offset, true);
|
|
619
612
|
}
|
|
620
613
|
else {
|
|
621
|
-
throw new Error(
|
|
614
|
+
throw new Error(`Invalid Compression type: ${compression}`);
|
|
622
615
|
}
|
|
623
616
|
}
|
|
624
617
|
export function readGlobalLayerMaskInfo(reader) {
|
|
625
|
-
return readSection(reader, 1,
|
|
618
|
+
return readSection(reader, 1, left => {
|
|
626
619
|
if (!left())
|
|
627
620
|
return undefined;
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
621
|
+
const overlayColorSpace = readUint16(reader);
|
|
622
|
+
const colorSpace1 = readUint16(reader);
|
|
623
|
+
const colorSpace2 = readUint16(reader);
|
|
624
|
+
const colorSpace3 = readUint16(reader);
|
|
625
|
+
const colorSpace4 = readUint16(reader);
|
|
626
|
+
const opacity = readUint16(reader) / 0xff;
|
|
627
|
+
const kind = readUint8(reader);
|
|
635
628
|
skipBytes(reader, left()); // 3 bytes of padding ?
|
|
636
|
-
return { overlayColorSpace
|
|
629
|
+
return { overlayColorSpace, colorSpace1, colorSpace2, colorSpace3, colorSpace4, opacity, kind };
|
|
637
630
|
});
|
|
638
631
|
}
|
|
639
|
-
|
|
632
|
+
const fixOffsets = [0, 1, -1, 2, -2, 3, -3, 4, -4];
|
|
640
633
|
function realignWithSignature(reader, isValid) {
|
|
641
|
-
|
|
642
|
-
|
|
634
|
+
const sigOffset = reader.offset;
|
|
635
|
+
let sig = '';
|
|
643
636
|
// attempt to fix broken document by realigning with the signature
|
|
644
|
-
for (
|
|
645
|
-
var offset = fixOffsets_1[_i];
|
|
637
|
+
for (const offset of fixOffsets) {
|
|
646
638
|
try {
|
|
647
639
|
reader.offset = sigOffset + offset;
|
|
648
640
|
sig = readSignature(reader);
|
|
@@ -652,7 +644,7 @@ function realignWithSignature(reader, isValid) {
|
|
|
652
644
|
break;
|
|
653
645
|
}
|
|
654
646
|
if (!isValid(sig)) {
|
|
655
|
-
throw new Error(
|
|
647
|
+
throw new Error(`Invalid signature: '${sig}' at 0x${(sigOffset).toString(16)}`);
|
|
656
648
|
}
|
|
657
649
|
return sig;
|
|
658
650
|
}
|
|
@@ -660,12 +652,12 @@ function isValidAdditionalInfoSignature(sig) {
|
|
|
660
652
|
return sig === '8BIM' || sig === '8B64';
|
|
661
653
|
}
|
|
662
654
|
export function readAdditionalLayerInfo(reader, target, psd, imageResources) {
|
|
663
|
-
|
|
664
|
-
|
|
655
|
+
const sig = realignWithSignature(reader, isValidAdditionalInfoSignature);
|
|
656
|
+
const key = readSignature(reader);
|
|
665
657
|
// `largeAdditionalInfoKeys` fallback, because some keys don't have 8B64 signature even when they are 64bit
|
|
666
|
-
|
|
667
|
-
readSection(reader, 2,
|
|
668
|
-
|
|
658
|
+
const u64 = sig === '8B64' || (reader.large && largeAdditionalInfoKeys.indexOf(key) !== -1);
|
|
659
|
+
readSection(reader, 2, left => {
|
|
660
|
+
const handler = infoHandlersMap[key];
|
|
669
661
|
if (handler) {
|
|
670
662
|
try {
|
|
671
663
|
handler.read(reader, target, left, psd, imageResources);
|
|
@@ -676,50 +668,49 @@ export function readAdditionalLayerInfo(reader, target, psd, imageResources) {
|
|
|
676
668
|
}
|
|
677
669
|
}
|
|
678
670
|
else {
|
|
679
|
-
reader.logMissingFeatures && reader.log(
|
|
671
|
+
reader.logMissingFeatures && reader.log(`Unhandled additional info: ${key}`);
|
|
680
672
|
skipBytes(reader, left());
|
|
681
673
|
}
|
|
682
674
|
if (left()) {
|
|
683
|
-
reader.logMissingFeatures && reader.log(
|
|
675
|
+
reader.logMissingFeatures && reader.log(`Unread ${left()} bytes left for additional info: ${key}`);
|
|
684
676
|
skipBytes(reader, left());
|
|
685
677
|
}
|
|
686
678
|
}, false, u64);
|
|
687
679
|
}
|
|
688
|
-
export function createImageDataBitDepth(width, height, bitDepth, channels) {
|
|
689
|
-
if (channels === void 0) { channels = 4; }
|
|
680
|
+
export function createImageDataBitDepth(width, height, bitDepth, channels = 4) {
|
|
690
681
|
if (bitDepth === 1 || bitDepth === 8) {
|
|
691
682
|
if (channels === 4) {
|
|
692
683
|
return createImageData(width, height);
|
|
693
684
|
}
|
|
694
685
|
else {
|
|
695
|
-
return { width
|
|
686
|
+
return { width, height, data: new Uint8ClampedArray(width * height * channels) };
|
|
696
687
|
}
|
|
697
688
|
}
|
|
698
689
|
else if (bitDepth === 16) {
|
|
699
|
-
return { width
|
|
690
|
+
return { width, height, data: new Uint16Array(width * height * channels) };
|
|
700
691
|
}
|
|
701
692
|
else if (bitDepth === 32) {
|
|
702
|
-
return { width
|
|
693
|
+
return { width, height, data: new Float32Array(width * height * channels) };
|
|
703
694
|
}
|
|
704
695
|
else {
|
|
705
|
-
throw new Error(
|
|
696
|
+
throw new Error(`Invalid bitDepth (${bitDepth})`);
|
|
706
697
|
}
|
|
707
698
|
}
|
|
708
699
|
function readImageData(reader, psd) {
|
|
709
700
|
var _a;
|
|
710
|
-
|
|
711
|
-
|
|
701
|
+
const compression = readUint16(reader);
|
|
702
|
+
const bitsPerChannel = (_a = psd.bitsPerChannel) !== null && _a !== void 0 ? _a : 8;
|
|
712
703
|
if (supportedColorModes.indexOf(psd.colorMode) === -1)
|
|
713
|
-
throw new Error(
|
|
704
|
+
throw new Error(`Color mode not supported: ${psd.colorMode}`);
|
|
714
705
|
if (compression !== 0 /* Compression.RawData */ && compression !== 1 /* Compression.RleCompressed */)
|
|
715
|
-
throw new Error(
|
|
716
|
-
|
|
706
|
+
throw new Error(`Compression type not supported: ${compression}`);
|
|
707
|
+
const imageData = createImageDataBitDepth(psd.width, psd.height, bitsPerChannel);
|
|
717
708
|
resetImageData(imageData);
|
|
718
709
|
switch (psd.colorMode) {
|
|
719
710
|
case 0 /* ColorMode.Bitmap */: {
|
|
720
711
|
if (bitsPerChannel !== 1)
|
|
721
712
|
throw new Error('Invalid bitsPerChannel for bitmap color mode');
|
|
722
|
-
|
|
713
|
+
let bytes;
|
|
723
714
|
if (compression === 0 /* Compression.RawData */) {
|
|
724
715
|
bytes = readBytes(reader, Math.ceil(psd.width / 8) * psd.height);
|
|
725
716
|
}
|
|
@@ -728,16 +719,16 @@ function readImageData(reader, psd) {
|
|
|
728
719
|
readDataRLE(reader, { data: bytes, width: psd.width, height: psd.height }, psd.width, psd.height, 8, 1, [0], reader.large);
|
|
729
720
|
}
|
|
730
721
|
else {
|
|
731
|
-
throw new Error(
|
|
722
|
+
throw new Error(`Bitmap compression not supported: ${compression}`);
|
|
732
723
|
}
|
|
733
724
|
decodeBitmap(bytes, imageData.data, psd.width, psd.height);
|
|
734
725
|
break;
|
|
735
726
|
}
|
|
736
727
|
case 3 /* ColorMode.RGB */:
|
|
737
728
|
case 1 /* ColorMode.Grayscale */: {
|
|
738
|
-
|
|
729
|
+
const channels = psd.colorMode === 1 /* ColorMode.Grayscale */ ? [0] : [0, 1, 2];
|
|
739
730
|
if (psd.channels && psd.channels > 3) {
|
|
740
|
-
for (
|
|
731
|
+
for (let i = 3; i < psd.channels; i++) {
|
|
741
732
|
// TODO: store these channels in additional image data
|
|
742
733
|
channels.push(i);
|
|
743
734
|
}
|
|
@@ -746,13 +737,13 @@ function readImageData(reader, psd) {
|
|
|
746
737
|
channels.push(3);
|
|
747
738
|
}
|
|
748
739
|
if (compression === 0 /* Compression.RawData */) {
|
|
749
|
-
for (
|
|
750
|
-
|
|
740
|
+
for (let i = 0; i < channels.length; i++) {
|
|
741
|
+
const data = readBytes(reader, psd.width * psd.height * Math.floor(bitsPerChannel / 8));
|
|
751
742
|
readDataRaw(data, imageData, bitsPerChannel, 4, channels[i]);
|
|
752
743
|
}
|
|
753
744
|
}
|
|
754
745
|
else if (compression === 1 /* Compression.RleCompressed */) {
|
|
755
|
-
|
|
746
|
+
const start = reader.offset;
|
|
756
747
|
readDataRLE(reader, imageData, psd.width, psd.height, bitsPerChannel, 4, channels, reader.large);
|
|
757
748
|
if (RAW_IMAGE_DATA)
|
|
758
749
|
psd.imageDataRaw = new Uint8Array(reader.view.buffer, reader.view.byteOffset + start, reader.offset - start);
|
|
@@ -770,10 +761,10 @@ function readImageData(reader, psd) {
|
|
|
770
761
|
if (!psd.palette)
|
|
771
762
|
throw new Error('Missing color palette');
|
|
772
763
|
if (compression === 0 /* Compression.RawData */) {
|
|
773
|
-
throw new Error(
|
|
764
|
+
throw new Error(`Not implemented`);
|
|
774
765
|
}
|
|
775
766
|
else if (compression === 1 /* Compression.RleCompressed */) {
|
|
776
|
-
|
|
767
|
+
const indexedImageData = {
|
|
777
768
|
width: imageData.width,
|
|
778
769
|
height: imageData.height,
|
|
779
770
|
data: new Uint8Array(imageData.width * imageData.height),
|
|
@@ -782,7 +773,7 @@ function readImageData(reader, psd) {
|
|
|
782
773
|
indexedToRgb(indexedImageData, imageData, psd.palette);
|
|
783
774
|
}
|
|
784
775
|
else {
|
|
785
|
-
throw new Error(
|
|
776
|
+
throw new Error(`Not implemented`);
|
|
786
777
|
}
|
|
787
778
|
break;
|
|
788
779
|
}
|
|
@@ -790,48 +781,48 @@ function readImageData(reader, psd) {
|
|
|
790
781
|
if (bitsPerChannel !== 8)
|
|
791
782
|
throw new Error('bitsPerChannel Not supproted');
|
|
792
783
|
if (psd.channels !== 4)
|
|
793
|
-
throw new Error(
|
|
794
|
-
|
|
784
|
+
throw new Error(`Invalid channel count`);
|
|
785
|
+
const channels = [0, 1, 2, 3];
|
|
795
786
|
if (reader.globalAlpha)
|
|
796
787
|
channels.push(4);
|
|
797
788
|
if (compression === 0 /* Compression.RawData */) {
|
|
798
|
-
throw new Error(
|
|
789
|
+
throw new Error(`Not implemented`);
|
|
799
790
|
// TODO: ...
|
|
800
791
|
// for (let i = 0; i < channels.length; i++) {
|
|
801
792
|
// readDataRaw(reader, imageData, channels[i], psd.width, psd.height);
|
|
802
793
|
// }
|
|
803
794
|
}
|
|
804
795
|
else if (compression === 1 /* Compression.RleCompressed */) {
|
|
805
|
-
|
|
796
|
+
const cmykImageData = {
|
|
806
797
|
width: imageData.width,
|
|
807
798
|
height: imageData.height,
|
|
808
799
|
data: new Uint8Array(imageData.width * imageData.height * 5),
|
|
809
800
|
};
|
|
810
|
-
|
|
801
|
+
const start = reader.offset;
|
|
811
802
|
readDataRLE(reader, cmykImageData, psd.width, psd.height, bitsPerChannel, 5, channels, reader.large);
|
|
812
803
|
cmykToRgb(cmykImageData, imageData, true);
|
|
813
804
|
if (RAW_IMAGE_DATA)
|
|
814
805
|
psd.imageDataRaw = new Uint8Array(reader.view.buffer, reader.view.byteOffset + start, reader.offset - start);
|
|
815
806
|
}
|
|
816
807
|
else {
|
|
817
|
-
throw new Error(
|
|
808
|
+
throw new Error(`Not implemented`);
|
|
818
809
|
}
|
|
819
810
|
break;
|
|
820
811
|
}
|
|
821
|
-
default: throw new Error(
|
|
812
|
+
default: throw new Error(`Color mode not supported: ${psd.colorMode}`);
|
|
822
813
|
}
|
|
823
814
|
// remove weird white matte
|
|
824
815
|
if (reader.globalAlpha) {
|
|
825
816
|
if (psd.bitsPerChannel !== 8)
|
|
826
817
|
throw new Error('bitsPerChannel Not supproted');
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
for (
|
|
830
|
-
|
|
818
|
+
const p = imageData.data;
|
|
819
|
+
const size = imageData.width * imageData.height * 4;
|
|
820
|
+
for (let i = 0; i < size; i += 4) {
|
|
821
|
+
const pa = p[i + 3];
|
|
831
822
|
if (pa != 0 && pa != 255) {
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
823
|
+
const a = pa / 255;
|
|
824
|
+
const ra = 1 / a;
|
|
825
|
+
const invA = 255 * (1 - ra);
|
|
835
826
|
p[i + 0] = p[i + 0] * ra + invA;
|
|
836
827
|
p[i + 1] = p[i + 1] * ra + invA;
|
|
837
828
|
p[i + 2] = p[i + 2] * ra + invA;
|
|
@@ -846,14 +837,14 @@ function readImageData(reader, psd) {
|
|
|
846
837
|
}
|
|
847
838
|
}
|
|
848
839
|
function cmykToRgb(cmyk, rgb, reverseAlpha) {
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
for (
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
840
|
+
const size = rgb.width * rgb.height * 4;
|
|
841
|
+
const srcData = cmyk.data;
|
|
842
|
+
const dstData = rgb.data;
|
|
843
|
+
for (let src = 0, dst = 0; dst < size; src += 5, dst += 4) {
|
|
844
|
+
const c = srcData[src];
|
|
845
|
+
const m = srcData[src + 1];
|
|
846
|
+
const y = srcData[src + 2];
|
|
847
|
+
const k = srcData[src + 3];
|
|
857
848
|
dstData[dst] = ((((c * k) | 0) / 255) | 0);
|
|
858
849
|
dstData[dst + 1] = ((((m * k) | 0) / 255) | 0);
|
|
859
850
|
dstData[dst + 2] = ((((y * k) | 0) / 255) | 0);
|
|
@@ -871,11 +862,11 @@ function cmykToRgb(cmyk, rgb, reverseAlpha) {
|
|
|
871
862
|
// }
|
|
872
863
|
}
|
|
873
864
|
function indexedToRgb(indexed, rgb, palette) {
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
for (
|
|
878
|
-
|
|
865
|
+
const size = indexed.width * indexed.height;
|
|
866
|
+
const srcData = indexed.data;
|
|
867
|
+
const dstData = rgb.data;
|
|
868
|
+
for (let src = 0, dst = 0; src < size; src++, dst += 4) {
|
|
869
|
+
const c = palette[srcData[src]];
|
|
879
870
|
dstData[dst + 0] = c.r;
|
|
880
871
|
dstData[dst + 1] = c.g;
|
|
881
872
|
dstData[dst + 2] = c.b;
|
|
@@ -892,8 +883,15 @@ function bytesToArray(bytes, bitDepth) {
|
|
|
892
883
|
return bytes;
|
|
893
884
|
}
|
|
894
885
|
else if (bitDepth === 16) {
|
|
886
|
+
// PSD files store 16-bit channel data in big-endian byte order.
|
|
887
|
+
// Swap each pair of bytes so that Uint16Array (native-endian) reads the correct values.
|
|
888
|
+
for (let i = 0; i < bytes.byteLength; i += 2) {
|
|
889
|
+
const tmp = bytes[i];
|
|
890
|
+
bytes[i] = bytes[i + 1];
|
|
891
|
+
bytes[i + 1] = tmp;
|
|
892
|
+
}
|
|
895
893
|
if (bytes.byteOffset % 2) {
|
|
896
|
-
|
|
894
|
+
const result = new Uint16Array(bytes.byteLength / 2);
|
|
897
895
|
new Uint8Array(result.buffer, result.byteOffset, result.byteLength).set(bytes);
|
|
898
896
|
return result;
|
|
899
897
|
}
|
|
@@ -903,7 +901,7 @@ function bytesToArray(bytes, bitDepth) {
|
|
|
903
901
|
}
|
|
904
902
|
else if (bitDepth === 32) {
|
|
905
903
|
if (bytes.byteOffset % 4) {
|
|
906
|
-
|
|
904
|
+
const result = new Float32Array(bytes.byteLength / 4);
|
|
907
905
|
new Uint8Array(result.buffer, result.byteOffset, result.byteLength).set(bytes);
|
|
908
906
|
return result;
|
|
909
907
|
}
|
|
@@ -912,47 +910,47 @@ function bytesToArray(bytes, bitDepth) {
|
|
|
912
910
|
}
|
|
913
911
|
}
|
|
914
912
|
else {
|
|
915
|
-
throw new Error(
|
|
913
|
+
throw new Error(`Invalid bitDepth (${bitDepth})`);
|
|
916
914
|
}
|
|
917
915
|
}
|
|
918
916
|
function copyChannelToPixelData(pixelData, channel, offset, step) {
|
|
919
917
|
verifyCompatible(pixelData.data, channel);
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
for (
|
|
918
|
+
const size = pixelData.width * pixelData.height;
|
|
919
|
+
const data = pixelData.data;
|
|
920
|
+
for (let i = 0, p = offset | 0; i < size; i++, p = (p + step) | 0) {
|
|
923
921
|
data[p] = channel[i];
|
|
924
922
|
}
|
|
925
923
|
}
|
|
926
924
|
function readDataRaw(buffer, pixelData, bitDepth, step, offset) {
|
|
927
925
|
if (bitDepth == 32) {
|
|
928
|
-
for (
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
926
|
+
for (let i = 0; i < buffer.byteLength; i += 4) {
|
|
927
|
+
const a = buffer[i + 0];
|
|
928
|
+
const b = buffer[i + 1];
|
|
929
|
+
const c = buffer[i + 2];
|
|
930
|
+
const d = buffer[i + 3];
|
|
933
931
|
buffer[i + 0] = d;
|
|
934
932
|
buffer[i + 1] = c;
|
|
935
933
|
buffer[i + 2] = b;
|
|
936
934
|
buffer[i + 3] = a;
|
|
937
935
|
}
|
|
938
936
|
}
|
|
939
|
-
|
|
937
|
+
const array = bytesToArray(buffer, bitDepth);
|
|
940
938
|
if (pixelData && offset < step) {
|
|
941
939
|
copyChannelToPixelData(pixelData, array, offset, step);
|
|
942
940
|
}
|
|
943
941
|
}
|
|
944
942
|
function decodePredicted(data, width, height, mod) {
|
|
945
|
-
for (
|
|
946
|
-
|
|
947
|
-
for (
|
|
943
|
+
for (let y = 0; y < height; y++) {
|
|
944
|
+
const offset = y * width;
|
|
945
|
+
for (let x = 1, o = offset + 1; x < width; x++, o++) {
|
|
948
946
|
data[o] = (data[o - 1] + data[o]) % mod;
|
|
949
947
|
}
|
|
950
948
|
}
|
|
951
949
|
}
|
|
952
950
|
export function readDataZip(compressed, pixelData, width, height, bitDepth, step, offset, prediction) {
|
|
953
|
-
|
|
951
|
+
const decompressed = inflateSync(compressed);
|
|
954
952
|
if (pixelData && offset < step) {
|
|
955
|
-
|
|
953
|
+
const array = bytesToArray(decompressed, bitDepth);
|
|
956
954
|
if (bitDepth === 8) {
|
|
957
955
|
if (prediction)
|
|
958
956
|
decodePredicted(decompressed, width, height, 0x100);
|
|
@@ -966,14 +964,14 @@ export function readDataZip(compressed, pixelData, width, height, bitDepth, step
|
|
|
966
964
|
else if (bitDepth === 32) {
|
|
967
965
|
if (prediction)
|
|
968
966
|
decodePredicted(decompressed, width * 4, height, 0x100);
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
for (
|
|
972
|
-
|
|
973
|
-
for (
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
967
|
+
let di = offset;
|
|
968
|
+
const dst = new Uint32Array(pixelData.data.buffer, pixelData.data.byteOffset, pixelData.data.length);
|
|
969
|
+
for (let y = 0; y < height; y++) {
|
|
970
|
+
let a = width * 4 * y;
|
|
971
|
+
for (let x = 0; x < width; x++, a++, di += step) {
|
|
972
|
+
const b = a + width;
|
|
973
|
+
const c = b + width;
|
|
974
|
+
const d = c + width;
|
|
977
975
|
dst[di] = ((decompressed[a] << 24) | (decompressed[b] << 16) | (decompressed[c] << 8) | decompressed[d]) >>> 0;
|
|
978
976
|
}
|
|
979
977
|
}
|
|
@@ -983,52 +981,51 @@ export function readDataZip(compressed, pixelData, width, height, bitDepth, step
|
|
|
983
981
|
}
|
|
984
982
|
}
|
|
985
983
|
}
|
|
986
|
-
export function readDataRLE(reader, pixelData, width, height,
|
|
987
|
-
|
|
988
|
-
|
|
984
|
+
export function readDataRLE(reader, pixelData, width, height, _bitDepth, step, offsets, large) {
|
|
985
|
+
const data = pixelData && pixelData.data;
|
|
986
|
+
let lengths;
|
|
989
987
|
if (large) {
|
|
990
988
|
lengths = new Uint32Array(offsets.length * height);
|
|
991
|
-
for (
|
|
992
|
-
for (
|
|
989
|
+
for (let o = 0, li = 0; o < offsets.length; o++) {
|
|
990
|
+
for (let y = 0; y < height; y++, li++) {
|
|
993
991
|
lengths[li] = readUint32(reader);
|
|
994
992
|
}
|
|
995
993
|
}
|
|
996
994
|
}
|
|
997
995
|
else {
|
|
998
996
|
lengths = new Uint16Array(offsets.length * height);
|
|
999
|
-
for (
|
|
1000
|
-
for (
|
|
997
|
+
for (let o = 0, li = 0; o < offsets.length; o++) {
|
|
998
|
+
for (let y = 0; y < height; y++, li++) {
|
|
1001
999
|
lengths[li] = readUint16(reader);
|
|
1002
1000
|
}
|
|
1003
1001
|
}
|
|
1004
1002
|
}
|
|
1005
|
-
if (bitDepth !== 1 && bitDepth !== 8)
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
var extra = c > extraLimit || offset > extraLimit;
|
|
1003
|
+
// if (bitDepth !== 1 && bitDepth !== 8) throw new Error(`Invalid bit depth (${bitDepth})`);
|
|
1004
|
+
const extraLimit = (step - 1) | 0; // 3 for rgb, 4 for cmyk
|
|
1005
|
+
for (let c = 0, li = 0; c < offsets.length; c++) {
|
|
1006
|
+
const offset = offsets[c] | 0;
|
|
1007
|
+
const extra = c > extraLimit || offset > extraLimit;
|
|
1011
1008
|
if (!data || extra) {
|
|
1012
|
-
for (
|
|
1009
|
+
for (let y = 0; y < height; y++, li++) {
|
|
1013
1010
|
skipBytes(reader, lengths[li]);
|
|
1014
1011
|
}
|
|
1015
1012
|
}
|
|
1016
1013
|
else {
|
|
1017
|
-
for (
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
for (
|
|
1021
|
-
|
|
1014
|
+
for (let y = 0, p = offset | 0; y < height; y++, li++) {
|
|
1015
|
+
const length = lengths[li];
|
|
1016
|
+
const buffer = readBytes(reader, length);
|
|
1017
|
+
for (let i = 0, x = 0; i < length; i++) {
|
|
1018
|
+
let header = buffer[i];
|
|
1022
1019
|
if (header > 128) {
|
|
1023
|
-
|
|
1020
|
+
const value = buffer[++i];
|
|
1024
1021
|
header = (256 - header) | 0;
|
|
1025
|
-
for (
|
|
1022
|
+
for (let j = 0; j <= header && x < width; j = (j + 1) | 0, x = (x + 1) | 0) {
|
|
1026
1023
|
data[p] = value;
|
|
1027
1024
|
p = (p + step) | 0;
|
|
1028
1025
|
}
|
|
1029
1026
|
}
|
|
1030
1027
|
else if (header < 128) {
|
|
1031
|
-
for (
|
|
1028
|
+
for (let j = 0; j <= header && x < width; j = (j + 1) | 0, x = (x + 1) | 0) {
|
|
1032
1029
|
data[p] = buffer[++i];
|
|
1033
1030
|
p = (p + step) | 0;
|
|
1034
1031
|
}
|
|
@@ -1043,10 +1040,8 @@ export function readDataRLE(reader, pixelData, width, height, bitDepth, step, of
|
|
|
1043
1040
|
}
|
|
1044
1041
|
}
|
|
1045
1042
|
}
|
|
1046
|
-
export function readSection(reader, round, func, skipEmpty, eightBytes) {
|
|
1047
|
-
|
|
1048
|
-
if (eightBytes === void 0) { eightBytes = false; }
|
|
1049
|
-
var length = readUint32(reader);
|
|
1043
|
+
export function readSection(reader, round, func, skipEmpty = true, eightBytes = false) {
|
|
1044
|
+
let length = readUint32(reader);
|
|
1050
1045
|
if (eightBytes) {
|
|
1051
1046
|
if (length !== 0)
|
|
1052
1047
|
throw new Error('Sizes larger than 4GB are not supported');
|
|
@@ -1054,16 +1049,16 @@ export function readSection(reader, round, func, skipEmpty, eightBytes) {
|
|
|
1054
1049
|
}
|
|
1055
1050
|
if (length <= 0 && skipEmpty)
|
|
1056
1051
|
return undefined;
|
|
1057
|
-
|
|
1052
|
+
let end = reader.offset + length;
|
|
1058
1053
|
if (end > reader.view.byteLength)
|
|
1059
1054
|
throw new Error('Section exceeds file size');
|
|
1060
|
-
|
|
1055
|
+
const result = func(() => end - reader.offset);
|
|
1061
1056
|
if (reader.offset !== end) {
|
|
1062
1057
|
if (reader.offset > end) {
|
|
1063
1058
|
warnOrThrow(reader, 'Exceeded section limits');
|
|
1064
1059
|
}
|
|
1065
1060
|
else {
|
|
1066
|
-
warnOrThrow(reader,
|
|
1061
|
+
warnOrThrow(reader, `Unread section data`); // : ${end - reader.offset} bytes at 0x${reader.offset.toString(16)}`);
|
|
1067
1062
|
}
|
|
1068
1063
|
}
|
|
1069
1064
|
while (length % round) {
|
|
@@ -1075,67 +1070,67 @@ export function readSection(reader, round, func, skipEmpty, eightBytes) {
|
|
|
1075
1070
|
return result;
|
|
1076
1071
|
}
|
|
1077
1072
|
export function readColor(reader) {
|
|
1078
|
-
|
|
1073
|
+
const colorSpace = readUint16(reader);
|
|
1079
1074
|
switch (colorSpace) {
|
|
1080
1075
|
case 0 /* ColorSpace.RGB */: {
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1076
|
+
const r = readUint16(reader) / 257;
|
|
1077
|
+
const g = readUint16(reader) / 257;
|
|
1078
|
+
const b = readUint16(reader) / 257;
|
|
1084
1079
|
skipBytes(reader, 2);
|
|
1085
|
-
return { r
|
|
1080
|
+
return { r, g, b };
|
|
1086
1081
|
}
|
|
1087
1082
|
case 1 /* ColorSpace.HSB */: {
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1083
|
+
const h = readUint16(reader) / 0xffff;
|
|
1084
|
+
const s = readUint16(reader) / 0xffff;
|
|
1085
|
+
const b = readUint16(reader) / 0xffff;
|
|
1091
1086
|
skipBytes(reader, 2);
|
|
1092
|
-
return { h
|
|
1087
|
+
return { h, s, b };
|
|
1093
1088
|
}
|
|
1094
1089
|
case 2 /* ColorSpace.CMYK */: {
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
return { c
|
|
1090
|
+
const c = readUint16(reader) / 257;
|
|
1091
|
+
const m = readUint16(reader) / 257;
|
|
1092
|
+
const y = readUint16(reader) / 257;
|
|
1093
|
+
const k = readUint16(reader) / 257;
|
|
1094
|
+
return { c, m, y, k };
|
|
1100
1095
|
}
|
|
1101
1096
|
case 7 /* ColorSpace.Lab */: {
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1097
|
+
const l = readInt16(reader) / 10000;
|
|
1098
|
+
const ta = readInt16(reader);
|
|
1099
|
+
const tb = readInt16(reader);
|
|
1100
|
+
const a = ta < 0 ? (ta / 12800) : (ta / 12700);
|
|
1101
|
+
const b = tb < 0 ? (tb / 12800) : (tb / 12700);
|
|
1107
1102
|
skipBytes(reader, 2);
|
|
1108
|
-
return { l
|
|
1103
|
+
return { l, a, b };
|
|
1109
1104
|
}
|
|
1110
1105
|
case 8 /* ColorSpace.Grayscale */: {
|
|
1111
|
-
|
|
1106
|
+
const k = readUint16(reader) * 255 / 10000;
|
|
1112
1107
|
skipBytes(reader, 6);
|
|
1113
|
-
return { k
|
|
1108
|
+
return { k };
|
|
1114
1109
|
}
|
|
1115
1110
|
default:
|
|
1116
1111
|
throw new Error('Invalid color space');
|
|
1117
1112
|
}
|
|
1118
1113
|
}
|
|
1119
1114
|
export function readPattern(reader) {
|
|
1120
|
-
|
|
1115
|
+
let length = readUint32(reader);
|
|
1121
1116
|
while (length % 4)
|
|
1122
1117
|
length++;
|
|
1123
|
-
|
|
1124
|
-
|
|
1118
|
+
const end = reader.offset + length;
|
|
1119
|
+
const version = readUint32(reader);
|
|
1125
1120
|
if (version !== 1)
|
|
1126
|
-
throw new Error(
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1121
|
+
throw new Error(`Invalid pattern version: ${version}`);
|
|
1122
|
+
const colorMode = readUint32(reader);
|
|
1123
|
+
const x = readInt16(reader);
|
|
1124
|
+
const y = readInt16(reader);
|
|
1130
1125
|
// we only support RGB and grayscale for now
|
|
1131
1126
|
if (colorMode !== 3 /* ColorMode.RGB */ && colorMode !== 1 /* ColorMode.Grayscale */ && colorMode !== 2 /* ColorMode.Indexed */) {
|
|
1132
|
-
throw new Error(
|
|
1127
|
+
throw new Error(`Unsupported pattern color mode: ${colorMode}`);
|
|
1133
1128
|
}
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1129
|
+
let name = readUnicodeString(reader);
|
|
1130
|
+
const id = readPascalString(reader, 1);
|
|
1131
|
+
const palette = [];
|
|
1137
1132
|
if (colorMode === 2 /* ColorMode.Indexed */) {
|
|
1138
|
-
for (
|
|
1133
|
+
for (let i = 0; i < 256; i++) {
|
|
1139
1134
|
palette.push({
|
|
1140
1135
|
r: readUint8(reader),
|
|
1141
1136
|
g: readUint8(reader),
|
|
@@ -1145,58 +1140,58 @@ export function readPattern(reader) {
|
|
|
1145
1140
|
skipBytes(reader, 4); // no idea what this is
|
|
1146
1141
|
}
|
|
1147
1142
|
// virtual memory array list
|
|
1148
|
-
|
|
1143
|
+
const version2 = readUint32(reader);
|
|
1149
1144
|
if (version2 !== 3)
|
|
1150
|
-
throw new Error(
|
|
1145
|
+
throw new Error(`Invalid pattern VMAL version: ${version2}`);
|
|
1151
1146
|
readUint32(reader); // length
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
for (
|
|
1147
|
+
const top = readUint32(reader);
|
|
1148
|
+
const left = readUint32(reader);
|
|
1149
|
+
const bottom = readUint32(reader);
|
|
1150
|
+
const right = readUint32(reader);
|
|
1151
|
+
const channelsCount = readUint32(reader);
|
|
1152
|
+
const width = right - left;
|
|
1153
|
+
const height = bottom - top;
|
|
1154
|
+
const data = new Uint8Array(width * height * 4);
|
|
1155
|
+
for (let i = 3; i < data.byteLength; i += 4) {
|
|
1161
1156
|
data[i] = 255;
|
|
1162
1157
|
}
|
|
1163
|
-
for (
|
|
1164
|
-
|
|
1158
|
+
for (let i = 0, ch = 0; i < (channelsCount + 2); i++) {
|
|
1159
|
+
const has = readUint32(reader);
|
|
1165
1160
|
if (!has)
|
|
1166
1161
|
continue;
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1162
|
+
const length = readUint32(reader);
|
|
1163
|
+
const pixelDepth = readUint32(reader);
|
|
1164
|
+
const ctop = readUint32(reader);
|
|
1165
|
+
const cleft = readUint32(reader);
|
|
1166
|
+
const cbottom = readUint32(reader);
|
|
1167
|
+
const cright = readUint32(reader);
|
|
1168
|
+
const pixelDepth2 = readUint16(reader);
|
|
1169
|
+
const compressionMode = readUint8(reader); // 0 - raw, 1 - rle
|
|
1170
|
+
const dataLength = length - (4 + 16 + 2 + 1);
|
|
1171
|
+
const cdata = readBytes(reader, dataLength);
|
|
1177
1172
|
if (pixelDepth !== 8 || pixelDepth2 !== 8) {
|
|
1178
1173
|
throw new Error('16bit pixel depth not supported for patterns');
|
|
1179
1174
|
}
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1175
|
+
const w = cright - cleft;
|
|
1176
|
+
const h = cbottom - ctop;
|
|
1177
|
+
const ox = cleft - left;
|
|
1178
|
+
const oy = ctop - top;
|
|
1184
1179
|
if (compressionMode === 0) {
|
|
1185
1180
|
if (colorMode === 3 /* ColorMode.RGB */ && ch < 3) {
|
|
1186
|
-
for (
|
|
1187
|
-
for (
|
|
1188
|
-
|
|
1189
|
-
|
|
1181
|
+
for (let y = 0; y < h; y++) {
|
|
1182
|
+
for (let x = 0; x < w; x++) {
|
|
1183
|
+
const src = x + y * w;
|
|
1184
|
+
const dst = (ox + x + (y + oy) * width) * 4;
|
|
1190
1185
|
data[dst + ch] = cdata[src];
|
|
1191
1186
|
}
|
|
1192
1187
|
}
|
|
1193
1188
|
}
|
|
1194
1189
|
if (colorMode === 1 /* ColorMode.Grayscale */ && ch < 1) {
|
|
1195
|
-
for (
|
|
1196
|
-
for (
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1190
|
+
for (let y = 0; y < h; y++) {
|
|
1191
|
+
for (let x = 0; x < w; x++) {
|
|
1192
|
+
const src = x + y * w;
|
|
1193
|
+
const dst = (ox + x + (y + oy) * width) * 4;
|
|
1194
|
+
const value = cdata[src];
|
|
1200
1195
|
data[dst + 0] = value;
|
|
1201
1196
|
data[dst + 1] = value;
|
|
1202
1197
|
data[dst + 2] = value;
|
|
@@ -1209,9 +1204,9 @@ export function readPattern(reader) {
|
|
|
1209
1204
|
}
|
|
1210
1205
|
}
|
|
1211
1206
|
else if (compressionMode === 1) {
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1207
|
+
const pixelData = { data, width, height };
|
|
1208
|
+
const tempData = { data: new Uint8Array(w * h), width: w, height: h };
|
|
1209
|
+
const cdataReader = createReader(cdata.buffer, cdata.byteOffset, cdata.byteLength);
|
|
1215
1210
|
if (colorMode === 3 /* ColorMode.RGB */ && ch < 3) {
|
|
1216
1211
|
readDataRLE(cdataReader, tempData, w, h, 8, 1, [0], false);
|
|
1217
1212
|
copyChannelToRGBA(tempData, pixelData, ox, oy, ch);
|
|
@@ -1232,17 +1227,17 @@ export function readPattern(reader) {
|
|
|
1232
1227
|
ch++;
|
|
1233
1228
|
}
|
|
1234
1229
|
reader.offset = end;
|
|
1235
|
-
return { id
|
|
1230
|
+
return { id, name, x, y, bounds: { x: left, y: top, w: width, h: height }, data };
|
|
1236
1231
|
}
|
|
1237
1232
|
function copyChannelToRGBA(srcData, dstData, ox, oy, offset) {
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
for (
|
|
1242
|
-
for (
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1233
|
+
const w = srcData.width;
|
|
1234
|
+
const h = srcData.height;
|
|
1235
|
+
const width = dstData.width;
|
|
1236
|
+
for (let y = 0; y < h; y++) {
|
|
1237
|
+
for (let x = 0; x < w; x++) {
|
|
1238
|
+
const src = x + y * w;
|
|
1239
|
+
const dst = (ox + x + (y + oy) * width) * 4;
|
|
1240
|
+
const value = srcData.data[src];
|
|
1246
1241
|
dstData.data[dst + offset] = value;
|
|
1247
1242
|
}
|
|
1248
1243
|
}
|